# Спецификация оцифровки заданий РТ/ЦТ → `exam_tasks` + диагностика
> Как переносить задания из PDF (РТ 2006–2025, ЦТ/ЦЭ 2004–2024) в банк `exam_tasks` трека `ctmath`,
> как их классифицировать (тема/сложность/тип) и как собрать входной диагностический тест.
> Опирается на реальные конвейеры платформы: `backend/scripts/import-exam-tasks.js` (импорт),
> `tag-exam-tasks.js` (классификатор темы), формат вариантов `frontend/js/exam9/variants/v*.js`.
---
## 1. Схема целевой таблицы (напоминание)
```sql
exam_tasks(
id, exam_key, variant, task_idx,
task_type TEXT CHECK (task_type IN ('mc','open','long')),
text_html, figure_html, opts_json, answer, solution_html,
topic, subtopic, difficulty,
UNIQUE(exam_key, variant, task_idx)
)
```
Для трека: `exam_key='ctmath'`, `variant` = номер варианта (сквозная нумерация по источникам, см. §6), `task_idx` = 1..30.
---
## 2. Маппинг номера задания → тип и подтема
Позиция в ЦЭ/ЦТ почти жёстко задаёт тему (карта §1.2 PLAN.md). Это **дефолт классификатора** — экономит ручную разметку; правится точечно, если конкретный вариант отклонился.
| task_idx | task_type | topic (раздел) | subtopic (по умолчанию) | difficulty |
|---|---|---|---|---|
| 1 (А1) | mc | numbers | `num-real` | 1 |
| 2 (А2) | mc | stereometry | `ster-basics` | 2 |
| 3 (А3) | mc | trigonometry | `trig-circle` | 1 |
| 4 (А4) | mc | numbers | `num-divisibility` | 1 |
| 5 (А5) | mc | equations | `eq-quadratic` | 1 |
| 6 (А6) | mc | equations | `eq-linear` | 2 |
| 7 (А7) | mc | word-sequences | `word-problems` | 2 |
| 8 (А8) | mc | trigonometry | `trig-identities` | 2 |
| 9 (А9) | mc | stereometry | `ster-rotation` | 3 |
| 10 (А10) | mc | expressions | `expr-powers-roots` | 2 |
| 11 (В1) | open | stereometry | `ster-angles-distances` | 3 |
| 12 (В2) | open | functions | `fn-properties` | 2 |
| 13 (В3) | open | word-sequences | `seq-progressions` | 2 |
| 14 (В4) | open | trigonometry | `trig-identities` | 3 |
| 15 (В5) | open | planimetry | `plan-triangles` | 3 |
| 16 (В6) | open | word-sequences | `seq-progressions` | 3 |
| 17 (В7) | open | word-sequences | `word-problems` | 3 |
| 18 (В8) | open | equations | `eq-linear` | 2 |
| 19 (В9) | open | functions | `fn-properties` | 3 |
| 20 (В10) | open | planimetry | `plan-quadrilaterals` | 3 |
| 21 (В11) | open | equations | `eq-logarithmic` | 3 |
| 22 (В12) | open | numbers | `num-divisibility` | 4 |
| 23 (В13) | open | stereometry | `ster-rotation` | 4 |
| 24 (В14) | open | equations | `eq-exponential` | 4 |
| 25 (В15) | open | trigonometry | `trig-equations` | 5 |
| 26 (В16) | open | equations | `eq-logarithmic` | 5 |
| 27 (В17) | open | stereometry | `ster-polyhedra` | 5 |
| 28 (В18) | open | equations | `eq-irrational` | 4 |
| 29 (В19) | open | functions | `fn-derivative` | 5 |
| 30 (В20) | open | stereometry | `ster-angles-distances` | 5 |
> Часть А = `mc` (всегда 5 вариантов ответа). Часть В = `open` (число/слово/комбинация цифр).
> `long` использовать только если ответ не авто-проверяем (в ЦЭ/ЦТ почти не встречается — там всё с коротким ответом).
> ⚠️ Маппинг — стартовый; при оцифровке КАЖДОГО варианта проверять реальную тему задания и при отклонении менять `subtopic`/`difficulty` вручную.
---
## 3. Форматы полей
### 3.1. `text_html`
Условие задания с формулами в KaTeX-разметке (`$...$` инлайн). HTML допустим (списки, `
`). Картинки/чертежи — в `figure_html`.
### 3.2. `figure_html`
Чертёж: предпочтительно inline `