# Seed: трек `ctmath` и дерево тем `exam_topics` > ⚠️ **ВТОРИЧНО (опция exam-prep).** Это seed для подсистемы exam-prep (миграция 077, оставлена как > опция). **Основной путь** — банк `questions`, см. **[BUILD_ON_QUESTIONS.md](BUILD_ON_QUESTIONS.md)**. > Этот документ полезен, если в будущем решим использовать exam-prep (варианты/пробники/детектор > слабых тем). Реальные slug-и учебников отсюда переиспользуются и для ссылок из уроков. > Готовый к переносу в SQL-миграцию seed дерева тем для курса ЦЭ/ЦТ по математике. > Соответствует реальной схеме платформы (см. `022_exam_prep.sql`, `024_exam_topics_seed.sql`, `028_exam_topic_textbook_links.sql`). > Двухуровневая иерархия: **раздел** (`parent_slug=NULL`) → **подтема** (`parent_slug` = slug раздела). Slug — kebab-case. > Соглашение из существующего `math9`: раздел sort 10/20/30…, подтемы внутри 11,12,13… > > ⚠️ `textbook_paragraph` намеренно оставлен NULL почти везде (точные номера § уточняются при маппинге контента — не выдумываем). `textbook_slug` проставлен реальными slug-ами учебников платформы (главы/хабы). --- ## 1. Трек `exam_tracks` ```sql INSERT INTO exam_tracks ( exam_key, title, subject_slug, grade, duration_min, tasks_per_variant, variants_count, scoring_json, intro_html, enabled, sort_order ) VALUES ( 'ctmath', 'ЦЭ/ЦТ — Математика', 'math', 11, 180, 30, 0, -- variants_count: проставить по числу оцифрованных вариантов '', -- см. §4 ниже '', -- см. §5 ниже 1, 20 ); ``` --- ## 2. Разделы (sections, `parent_slug = NULL`) | slug | title | description | sort | textbook_slug | |---|---|---|---|---| | `numbers` | Числа и вычисления | Действительные числа, делимость, проценты, преобразование числовых выражений | 10 | `math-6` | | `expressions` | Алгебраические преобразования | Многочлены, степени и корни, рациональные дроби, ОДЗ | 20 | `algebra-7` | | `equations` | Уравнения и неравенства | Линейные, квадратные, рациональные, модуль, иррациональные, показательные, логарифмические; метод рационализации | 30 | `algebra-9` | | `functions` | Функции и производная | Свойства функций, графики, исследование с производной | 40 | `algebra-9-ch2` | | `trigonometry` | Тригонометрия | Круг, тождества, уравнения и отбор корней | 50 | `algebra-10-ch1` | | `word-sequences` | Прогрессии и текстовые задачи | Арифметическая/геометрическая прогрессии; проценты, движение, работа, смеси | 60 | `algebra-9-ch4` | | `planimetry` | Планиметрия | Треугольники, четырёхугольники, окружность; координатный метод | 70 | `geometry-8` | | `stereometry` | Стереометрия | Расположение, многогранники, тела вращения, углы и расстояния | 80 | `geometry-10` | | `advanced` | Продвинутое и комбинированное | Параметры, комбинированные задачи, функциональные методы | 90 | NULL | --- ## 3. Подтемы (модули M1–M32, `parent_slug` = раздел) Колонка «Позиции» — номера заданий теста (из карты §1.2 PLAN.md), помогает классификатору и приоритизации. | slug | parent | title | sort | позиции | textbook_slug | |---|---|---|---|---|---| | `num-real` | numbers | Действительные числа, координатная прямая | 11 | А1, А4 | `math-6` | | `num-divisibility` | numbers | Делимость, дроби, НОД/НОК | 12 | А4, В3, В12 | `math-5-ch1` | | `num-expressions` | numbers | Преобразование числовых выражений | 13 | сквозное | `algebra-7-ch2` | | `expr-polynomials` | expressions | Многочлены, ФСУ, разложение на множители | 21 | сквозное | `algebra-7-ch2` | | `expr-powers-roots` | expressions | Степени и корни, ОДЗ выражений | 22 | А10 | `algebra-10-ch2` | | `expr-fractions` | expressions | Рациональные (алгебраические) дроби | 23 | — | `algebra-9-ch1` | | `eq-linear` | equations | Линейные уравнения/неравенства, системы | 31 | А6, В8 | `algebra-7-ch3` | | `eq-quadratic` | equations | Квадратные уравнения/неравенства, Виет | 32 | А5 | `algebra-8` | | `eq-rational` | equations | Рациональные уравнения/неравенства, метод интервалов | 33 | В-уровень | `algebra-9-ch3` | | `eq-modulus` | equations | Уравнения и неравенства с модулем | 34 | — | `algebra-9` | | `eq-irrational` | equations | Иррациональные уравнения/неравенства | 35 | В18 | `algebra-10-ch2` | | `eq-exponential` | equations | Показательные уравнения/неравенства | 36 | В14 | `algebra-11-ch2` | | `eq-logarithmic` | equations | Логарифмические уравнения/неравенства | 37 | В11, В16 | `algebra-11-ch3` | | `eq-rationalization` | equations | Метод рационализации (замена множителей) | 38 | В16, В14 | `algebra-11` | | `fn-properties` | functions | Свойства функций: ОДЗ, чётность, монотонность | 41 | А10, В2, В9 | `algebra-9-ch2` | | `fn-graphs` | functions | Графики и их преобразования, чтение графиков | 42 | В2, В9 | `algebra-9-ch2` | | `fn-derivative` | functions | Производная: монотонность, экстремумы, исследование | 43 | В19 | `algebra-10-ch3` | | `trig-circle` | trigonometry | Тригонометрический круг, значения, простейшие ур-ия | 51 | А3 | `algebra-10-ch1` | | `trig-identities` | trigonometry | Тождества и формулы (вывод), обратные функции | 52 | А8, В4 | `algebra-10-ch1` | | `trig-equations` | trigonometry | Триг. уравнения, отбор корней на промежутке | 53 | В15 | `algebra-10-ch1` | | `seq-progressions` | word-sequences | Арифметическая и геометрическая прогрессии | 61 | В3, В6 | `algebra-9-ch4` | | `word-problems` | word-sequences | Текстовые: проценты, движение, работа, смеси | 62 | А7, В7 | `math-6-ch2` | | `plan-triangles` | planimetry | Треугольники, площади, теоремы синусов/косинусов, окружности | 71 | В5 | `geometry-8` | | `plan-quadrilaterals` | planimetry | Четырёхугольники и правильные многоугольники | 72 | В10 | `geometry-8-ch1` | | `plan-circle` | planimetry | Окружность: углы, касательные; координатный метод | 73 | В5, В10 | `geometry-8-ch4` | | `ster-basics` | stereometry | Расположение прямых/плоскостей, сечения | 81 | А2, В1 | `geometry-10` | | `ster-polyhedra` | stereometry | Многогранники: объёмы, площади, сечения, подобие | 82 | В13, В17 | `geometry-10` | | `ster-rotation` | stereometry | Тела вращения: цилиндр, конус, шар/сфера | 83 | А9, В13 | `geometry-11` | | `ster-angles-distances` | stereometry | Углы и расстояния; координатно-векторный метод | 84 | В20, В1 | `geometry-11` | | `adv-parameters` | advanced | Задачи с параметрами | 91 | — | NULL | | `adv-combined` | advanced | Комбинированные задачи, нестандартные приёмы | 92 | — | NULL | | `adv-functional` | advanced | Функциональные методы, целые числа (бонус) | 93 | — | NULL | --- ## 4. `scoring_json` (шкала балла) ⚠️ Платформенный `scoring_json` отображает **число верных → балл**. Реальный ЦЭ/ЦТ: первичный балл (часть В весит больше) → 100 тестовых по официальной таблице РИКЗ. Здесь — **иллюстративный placeholder** на 100-балльную шкалу; заменить на официальную таблицу года, в идеале — учитывая вес В-заданий ≈ 2× А в первичном. ```json [ {"correct":30,"score":100},{"correct":28,"score":92},{"correct":26,"score":85}, {"correct":24,"score":78},{"correct":22,"score":71},{"correct":20,"score":64}, {"correct":18,"score":57},{"correct":16,"score":50},{"correct":14,"score":43}, {"correct":12,"score":36},{"correct":10,"score":30},{"correct":8,"score":24}, {"correct":6,"score":17},{"correct":4,"score":11},{"correct":2,"score":5}, {"correct":0,"score":0} ] ``` > Точнее: ввести веса (`primary = Σ(A:1) + Σ(B:2)` → max 10+40=50 первичных), затем official primary→test grid. Если будете расширять модель — это правка `exam_tracks.scoring_json` + логики подсчёта в `exam-prep.js` (отдельная задача, не для seed). --- ## 5. `intro_html` (вступление трека) Готовый текст для `exam_tracks.intro_html` (карта теста + что внутри): ```html

Подготовка к ЦЭ/ЦТ по математике. Формат: часть А — 10 заданий с выбором ответа (А1–А10), часть В — 20 заданий с открытым ответом (В1–В20), всего 30 заданий, ~180 минут, без калькулятора.

Курс устроен по темам с входной диагностикой и тремя уровнями сложности (База / Ядро / Продвинутый): теория с выводом формул, разбор эталонных задач, тренажёр по темам, карточки формул с интервальным повторением и пробные экзамены с таймером на реальных вариантах РТ/ЦТ прошлых лет.

``` --- ## 6. Заметки по переносу в миграцию - Файл: новая миграция `backend/src/db/migrations/0XX_ctmath_track_topics.sql` (номер — следующий свободный; в репозитории миграции до 076+, проверить актуальный максимум перед созданием). - Порядок: `INSERT exam_tracks` → `INSERT exam_topics` (сначала разделы, потом подтемы — FK на parent нет, но для читаемости) → `UPDATE … SET textbook_slug` по таблицам §2–§3. - `content_access`: после создания трека открыть его классам/ученикам (`content_type='exam'`, `content_ref='ctmath'`). - Совместимость: `exam_key='ctmath'` уникален, существующие треки (`math9` и др.) не затрагиваются.