7eb6cb2da0
- 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>
131 lines
12 KiB
Markdown
131 lines
12 KiB
Markdown
# 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. Подтемы (модули 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
|
||
<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` и др.) не затрагиваются.
|