diff --git a/plans/ai-trainer/ROADMAP_V4_VARIETY.md b/plans/ai-trainer/ROADMAP_V4_VARIETY.md new file mode 100644 index 0000000..2cf226b --- /dev/null +++ b/plans/ai-trainer/ROADMAP_V4_VARIETY.md @@ -0,0 +1,131 @@ +# ИИ-Тренажёр — План «Максимум разнообразия» (v4, дополнение) + +**Дата:** 2026-06-26. Дополняет `ROADMAP_V4.md` / `V4_GENERATOR_SPECS.md`. Фокус: ещё больше +разнообразия задач и **условий** — в теме «Углы/Параллельные» и по всему тренажёру. + +**Контекст:** фаза V4.1 завершена — **178 генераторов** (было 64). Только что внедрено +**обозначение искомой величины** (`answerSym`: P/S/C/L/d/k/n/q/b вместо жёсткого «x») — +и в поле ввода, и в подписи ответа, и в шагах решения. + +**Инварианты (неизменны):** только `SimExpr` (⛔ без `eval`); «корень-вперёд» → чистый ответ; +⛔ без эмодзи; тексты экранируются; зарезерв. имена SimExpr `pi/e/E/PI/tau` (в тренажёре `t/w/h` +допустимы). Каждая волна — смоук + коммит. + +--- + +## A. Обозначение искомой величины (`answerSym`) — СДЕЛАНО + добивка + +Сделано (commit 3b095a9): 26 генераторов размечены P/S/C/L/d/k/n/q/b; движок подменяет `x`→символ +в шагах решения; страница показывает «P =»/«S =» в вводе и ответе. + +**Добивка (низкая цена):** +- A1. Суммы прогрессий → **Sₙ** (prog-arith-sum/geom-sum/arith-word); проценты-вклад → итог. +- A2. Стороны/катеты/радиусы как искомые → **a/b/c/r** (pyth-hyp→c, pyth-leg→b, area-rect-inverse→ + сторона a). Сейчас у них «x». +- A3. **Единицы измерения** (опц.): поле `unit` («см», «°», «км/ч») → суффикс в подписи ответа и + плейсхолдере; чисто отображение, проверка не меняется. +- A4. Многобуквенные/индексы (x₁, a₁) — только если понадобится; `answerSym` уже принимает строку. + +--- + +## B. Тема «Углы / Параллельные» — максимум разнообразия (≈12 новых) + +Сейчас 9: третий угол, смежный, внешний, соответственные, накрест лежащие, односторонние, +найти x, равнобедренный, вертикальные. Добавить: + +| id | Что | Ответ | Фигура | +|---|---|---|---| +| `ang-alt-exterior` | накрест лежащие ВНЕШНИЕ | a | parallel-lines-transversal (rel) | +| `ang-coint-exterior` | односторонние ВНЕШНИЕ | 180−a | parallel-lines-transversal | +| `ang-vertical-transversal` | вертикальные ПРИ секущей | a | parallel-lines-transversal | +| `ang-parallel-twostep` | секущая → смежный к накрест лежащему (2 шага) | 180−a | parallel-lines-transversal | +| `ang-bisector` | биссектриса делит угол пополам | a/2 | новый `angle-bisector` | +| `ang-complementary` | дополнительные (сумма 90°) | 90−a | новый `complementary` | +| `ang-right-acute` | острые углы прям. треугольника (90−a) | 90−a | right-triangle (метка угла) | +| `ang-parallelogram` | углы параллелограмма (сосед = 180−a) | 180−a / a | parallelogram (метка углов) | +| `ang-polygon-missing` | n-угольник: известны все углы, кроме одного | 180(n−2)−Σ | regular-polygon | +| `ang-alt-solve` | накрест лежащие заданы выражениями, найти x | root | parallel-lines-transversal | +| `ang-triangle-ratio` | углы треугольника в отношении p:q:r, найти больший | 180·max/(p+q+r) | triangle-angles | +| `ang-clock` | угол между стрелками часов в HH:00 | \|30·H−0\| | новый `clock` (циферблат) | + +Все «корень-вперёд» (берём a/острый угол/доли первым → выводим показанное). Новые фигуры: +`angle-bisector`, `complementary` (два луча из O + дуги), `clock` (круг + 2 стрелки), метки углов +на `parallelogram`/`right-triangle` (расширение существующих типов, как делали с rectangle). + +--- + +## C. Оси разнообразия — по ВСЕМУ тренажёру + +Разнообразие = произведение пяти осей. По каждой — что добавить. + +### C1. Новые ФОРМАТЫ заданий (новые `kind`) — крупнейший множитель +(Из ROADMAP_V4, направление «task-formats» — это фаза V4.2.) +Применимы к ЛЮБОЙ теме, поэтому дают ×N разнообразия одним движком-усилием: +- **`choice`** — выбор из 4 (дистракторы из `analyzeMistake`: типовые ошибки). +- **`verify`** — «верно ли?» (булева SimExpr → 1/0). +- **`findError`** — найди неверный шаг в готовом решении (портим один шаг `solution[]`). +- **`fillBlank`** — вставь число/выражение в тождество. +- **`estimate`** — ответ в допуске (прикидка, π). +- **`multi`** — одна задача, несколько проверяемых под-ответов по цепочке. +- **`order`** — упорядочить (числа/дроби/шаги). +- **`match`** — сопоставить (формула↔результат, фигура↔площадь). +- **`context`** — обёртка существующих compute в бытовые сюжеты (данными). +- **`figureAsk`/таблица** — ответ читается с чертежа/таблицы. + +### C2. Глубина ВНУТРИ темы (под-варианты и формулировки) +Для каждой темы — четыре направления формулировки: +- **Прямая** (дано→найди) — есть. +- **Обратная** (найди параметр по ответу) — частично (find-b/d/n/q, restore-before). Расширить + на ВСЕ темы: «при каком a корень = R», «найди сторону по периметру», «найди r по длине». +- **Словесная/контекст** — расширить (движение/работа/смеси/деньги/геометрия-в-жизни). +- **Многошаговая** — связать два факта (Пифагор→периметр уже есть; угловые цепочки; %→%). + +### C3. Числовое разнообразие (тип ответа/чисел) +Сейчас алгебра — почти всегда целые. Добавить варианты: +- **Дробные/десятичные корни** там, где уместно (через «корень-вперёд» с делителями). +- **Отрицательные** коэффициенты/корни шире (уже частично). +- **Иррациональные «через √»** (ответ вида `k√m`) — ТРЕБУЕТ нового механизма проверки (сейчас + движок численный; ответ `2*sqrt(3)` примется, но эталон-строка иная) → пометка на отдельную фазу. +- **Ответ-дробь/отношение** (k:1, 3/4) — есть в дробях; распространить (вероятность, проценты). + +### C4. Визуальное разнообразие (фигуры) +- Дать чертёж БОЛЬШЕМУ числу задач (не только геометрия): числовая прямая (отрицательные/дроби), + столбчатые/круговые мини-диаграммы (проценты/доли), таблица (чтение данных), график (функции). +- Везде, где есть фигура, включить **режим «читать с чертежа»** (`figurePrompt`) — уже есть в + геометрии; добавить figurePrompt новым фигурным задачам. +- Новые типы фигур из B + диаграммы (C4) переиспользуют хелперы `figures.js`. + +### C5. Разнообразие ПОДАЧИ (не меняя математику) +- **Рандомизация имён/контекста** в текстовых (имена, предметы, валюта) — данными. +- **Разные формулировки одного навыка** (вопрос «найдите»/«чему равно»/«определите»). +- **Уровни как СТРУКТУРА** (уже есть `level` 1–3) — добить разметку новых генераторов. + +--- + +## D. Новые ТЕМЫ (охват ЦТ/ЦЭ) — из ROADMAP_V4, кратко +`g-func` (чтение графика), `roots` (корни/иррациональности), `logs`, `trig` (особые углы), +`g-coord` (координатная геометрия), вероятность/статистика. Каждая = новый пласт разнообразия. + +--- + +## E. Рекомендуемая последовательность + +1. **A-добивка** (символы Sₙ/сторон/единицы) — мелко, сразу. ✦ дешёвый, видимый эффект. +2. **B — углы/параллельные** (≈12 генераторов + 3–4 фигуры) — закрывает запрос по теме. ★ +3. **C1 — форматы заданий** (V4.2: choice→verify→fillBlank→findError→estimate→multi→order→match→ + context→figureAsk) — крупнейший прирост разнообразия; правки движка+страницы+смоуки. +4. **C2/C3 — обратные/словесные/многошаговые + числовые варианты** волнами по темам. +5. **C4 — диаграммы/числовая прямая/таблицы** + read-from-figure на новых задачах. +6. **D — новые темы ЦТ**. + +Каждая волна: смоук движка (инстанс всех генераторов + самопроверка + рендер фигур) + смоук +страницы (где менялась) + коммит; эмодзи/eval = 0. + +--- + +## Приложение — где что +- Генераторы: `frontend/js/trainer/generators.js` (178 шт; поля figure/figurePrompt/answerSym). +- Движок/kinds/answerSym-подмена: `frontend/js/trainer/_trainer_engine.js`. +- Фигуры-данные: `frontend/js/trainer/figures.js` (13 базовых + 10 геом-типов V4.1). +- Страница (eqx-префикс/answerLabel/режим чертежа): `frontend/trainer.html`. +- Базовый план/спеки: `ROADMAP_V4.md`, `V4_GENERATOR_SPECS.md`.