Files
Learn_System/plans/ct-math/TOPICS_SEED.md
T
Maxim Dolgolyov 7eb6cb2da0 docs(ct-math): план подготовки к ЦЭ/ЦТ по математике + миграция дерева тем
- plans/ct-math: модульная программа (карта теста А1–А10/В1–В20, 9 блоков
  и ~32 модуля, 3 уровня, маппинг на exam-prep платформы), 2 пилота
  (тригонометрия, стереометрия), seed дерева тем, спецификация оцифровки
  заданий РТ/ЦТ, инвентарь материалов
- backend: миграция 077 — трек ctmath + exam_topics (9 разделов, 32 подтемы),
  валидирована in-memory node:sqlite; на живую БД НЕ применялась

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:26:43 +03:00

131 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Seed: трек `ctmath` и дерево тем `exam_topics`
> Готовый к переносу в 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: проставить по числу оцифрованных вариантов
'<scoring_json>', -- см. §4 ниже
'<intro_html>', -- см. §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. Подтемы (модули M1M32, `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
<p><b>Подготовка к ЦЭ/ЦТ по математике.</b> Формат: часть А — 10 заданий с выбором ответа (А1–А10),
часть В — 20 заданий с открытым ответом (В1–В20), всего 30 заданий, ~180 минут, без калькулятора.</p>
<p>Курс устроен по темам с входной диагностикой и тремя уровнями сложности (База / Ядро / Продвинутый):
теория с выводом формул, разбор эталонных задач, тренажёр по темам, карточки формул с интервальным
повторением и пробные экзамены с таймером на реальных вариантах РТ/ЦТ прошлых лет.</p>
```
---
## 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` и др.) не затрагиваются.