Files
Learn_System/plans/ai-trainer/ROADMAP_V2.md
T
Maxim Dolgolyov f0af2079c3 fix(trainer): сложность = структура задачи, а не масштаб чисел
Пользователь верно заметил: масштабирование чисел (больше/меньше) — не настоящая сложность. Настоящая = больше действий, скобки, дроби, переменная в обеих частях.

- генераторы размечены структурным level 1-3 (generators.js, LEVELS): напр. Уравнения ax+b=c (1) -> a(x+b)=c (2) -> a(x+b)=c(x+d) (3); Степени: вычислить -> произведение -> степень степени
- контрол сложности выбирает ВАРИАНТ-генератор нужного уровня в теме (pickByLevel с клампом к доступным), а не масштабирует числа
- клик по чипу навыка закрепляет конкретный вариант (pinned); Авто = адаптивный подбор (умная тренировка от простого к сложному) + показ ур.N текущего
- кросс-тематический адаптив pickNext — только в Авто без закрепления
- движковое _scaleRange/level оставлено как capability (T18), страница его НЕ использует
- смоук движка 682/682, страница 36/36 (Сложный->ген ур.3, Лёгкий->ур.1); эмодзи/eval 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:24:31 +03:00

138 lines
13 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.
# ИИ-Тренажёр — Roadmap v2 (Phase 7+)
**Контекст.** P0P6 готовы (`PLAN.md`): движок параметрических генераторов + SimExpr-
верификатор (+несколько корней, эквивалентность сэмплингом), 17 генераторов / 5 тем,
умная тренировка с интервальным повторением, LLM-задачи с серверной проверкой, пул,
авторинг/раздача учителем, аналитика-тепловая карта, визуальный редизайн.
**Цель v2.** Превратить «проверяльщик ответов» в **репетитора** (ведёт по шагам,
объясняет ошибки) и расширить **охват** (классы 5–9, ЦТ) и **вовлечение**.
**Инвариант (не нарушать).** Выражения — только SimExpr (⛔ без eval). Любая задача
проходит проверку подстановкой/сэмплингом; неверная ученику не попадает. Тексты
экранируются. Каждая фаза — со смоуками/тестами и коммитом.
---
## P7 — Пошаговое решение (репетитор) ⭐ — DONE
**Сделано:** движок `TE.checkStep(problem, line)` — шаг = равносильное уравнение
(держится во всех корнях И не выполняется в не-корнях → ловит арифметику, потерю
корня, тождество `0=0`); статусы equivalent/solved/wrong/identity/parse. Страница:
тумблер «Решить по шагам» (для kind solve), ввод шагов с проверкой каждого, список
принятых шагов (KaTeX + зелёная галочка), подсказка следующего шага, завершение по
solved-форме `x=c` → общий `onSolved` (засчитывается как решение). stepPref хранит выбор
между задачами. Смоук движка T14 + страницы шаг-сценарий.
Ученик решает по шагам, движок проверяет КАЖДЫЙ шаг.
- Режим «по шагам»: ввод следующей строки преобразования → проверка эквивалентности
предыдущему (reuse `_sampleEquiv`; для уравнений — сохранение множества корней) +
прогресс к ответу.
- Подсказка следующего шага; «застрял» → раскрыть шаг. Guided-вариант: заполнить
пропуски в данных шагах.
- **Ценность:** глубочайшая педагогика, уникальное отличие от «answer-checker».
## P8 — Математический ввод ⭐ — DONE
**Сделано:** лёгкая экранная мат-клавиатура (`( ) x / ^ √ ; ⌫`, вставка в позицию
курсора, без библиотек) под полем ответа И под полем шага; live-превью KaTeX введённого
(показывается только при валидном разборе через `exprToLatex`). Переиспользуется и для
ответа, и для пошагового ввода.
Удобный ввод дробей/степеней/корней (моб. + выражения).
- Лёгкая экранная мат-клавиатура (свои кнопки `/ ^ √ ( ) ± x`), live-превью KaTeX
введённого. Без тяжёлых библиотек.
- Синергия с P7 (ввод шагов) и с multi-root / simplify.
## P9 — Разбор ошибок + сократические подсказки (LLM)
«Почему неверно» и подсказки, не выдавая ответ сразу.
- Правиловая детекция типовых ошибок (потерян знак, забыл поделить, арифметика) для
linear/quadratic — по разнице ответа ученика с «ответом при типичной ошибке».
- LLM-фолбэк «объясни мою ошибку» / «подскажи» через Квантик-ассистента
(`callLLMFailover`) — только ОБЪЯСНЕНИЯ (безопасно, не генерация задач).
- 3 уровня подсказок (намёк → шаг → решение).
## P10 — Контент 5–9 классов + ЦТ — DONE (частично)
**Сделано:** +3 темы (8 всего, 26 генераторов): **Степени** (вычислить aⁿ; xᵃ·xᵇ; (xᵃ)ᵇ),
**Формулы сокр. умножения** (квадрат суммы/разности, разность квадратов), **Линейные
неравенства** — НОВЫЙ тип `kind:'inequality'` (`answerRel:{op,bound}`; парсер отношения
`_parseRel`/`_checkInequality` — нормализация «x op c», приём обратной записи «c op x»,
сверка op+границы; ineq-flip учит смене знака при делении на отрицательное). Движок:
**simplify теперь рендерит выражение в KaTeX** (`latex = exprToLatex(srcExpr)`, eyebrow =
действие), неравенство — в KaTeX с отношением; self-check неравенства (внутри/снаружи
решения). Страница: ввод/лейбл для неравенств (`x < 3`), `isLabelKind`. Смоук 397/397
(T15 неравенства, T16 степени/формулы). **Осталось (стретч):** системы 2 ур-ний
(пара-ответ), дроби 5–6, явная привязка к таксономии ЦТ.
**Дополнено (контент по программе учебников + геометрия):** классы тем выровнены по
нашим учебникам (степени/формулы/упрощение/неравенства → 7; пропорции/проценты → 6;
квадратные → 8; прогрессии → 9). Добавлены **Прогрессии** (арифм./геом. n-й член, 9 кл)
и **ГЕОМЕТРИЯ** (subject 'geometry'): Углы (сумма углов треугольника, смежные, внешний —
7 кл), Пифагор (гипотенуза/катет через пифагоровы тройки — 8 кл), Площади (прямоугольник/
треугольник/квадрат — 8 кл) — всё kind compute (числовой ответ, проверка подстановкой,
sqrt в SimExpr). **36 генераторов, 12 тем.** На странице — **фильтр предмета
Алгебра/Геометрия** + бейдж класса на темах (Предмет → Тема → Навык). Смоук движка 572/572.
**Осталось:** системы 2 ур-ний (новый kind), дробно-рациональные, тригонометрия (9 кл геом).
Расширить охват и связать с подготовкой к ЦТ/ЦЭ.
- Новые темы: арифметика/дроби/десятичные (5–6), степени, формулы сокр. умножения,
разложение на множители, **линейные неравенства** (новый тип ответа: парсинг и
нормализация отношения `x>3`/`x≤−2`), системы 2 лин. уравнений, линейная функция (k,b),
текстовые семьи (движение/работа/смеси) параметрически.
- Дерево навыков по таксономии exam-prep ЦТ (связь с готовым модулем экзамена).
## P11 — Геймификация + карта навыков
Вовлечение через существующую инфраструктуру.
- XP/монеты/достижения (Квантик-геймификация) за решения/серии/мастерство; учёт
kill-switch геймификации.
- Карта-дерево навыков (визуализация прогресса) на странице/дашборде.
- Дневная цель + календарь серий.
## P12 — Задания и журнал
Учительский рабочий процесс поверх раздачи.
- Задание: темы/навыки + цель (N решено / мастерство) + дедлайн → ученики видят,
прогресс трекается; учитель видит выполнение и результаты; интеграция с journal/homework.
- Апгрейд текущего `assign` (уведомление) до отслеживаемого задания (таблица).
## P13 — Конструктор генераторов + управление пулом — DONE (частично)
**Сделано:** таблица `custom_generators` (мигр.**084**, spec_json + status draft/published),
`customGeneratorController` (`validateGenSpec` без исполнения — лимиты/типы; CRUD,
own+published, per-row ownership), роуты `/api/practice/generators[/:id]`, клиент
`LS.practiceGen*`. **Страница-конструктор** `/trainer-builder` (учитель/админ): форма
(заголовок/тема/тип/диапазоны pick/формулы derive/lhs/rhs/display/ответ/решение) +
**живое превью** (тот же `TE.instantiate(strict)` материализует и проверяет ответ
подстановкой) + список своих с правкой/удалением/публикацией. Тренажёр грузит свои+
опубликованные генераторы в тему **«Мои генераторы»** (пошаговый режим работает и для
них). Пункт сайдбара `/trainer-builder` (teacher-only). Тесты `custom-generators.test.js`
12/12; смоук движка T17 (кастомный спек + strict-валидация). **Осталось (стретч):**
форма для kind roots/simplify/inequality (движок их поддерживает), управление пулом
LLM-задач (P3) из UI, генерация по теме урока.
- Визуальный билдер: диапазоны `pick`, формулы `derive`, шаблоны `lhs/rhs`, ответ,
шаги решения + live-превью + валидация (отложенный «полный P4»).
- Управление пулом (ревью/правка/удаление), генерация по теме урока/§ учебника.
---
## Уровни сложности — DONE (структурные)
**Сложность = СТРУКТУРА задачи, а не масштаб чисел.** Каждый генератор размечен
`level` 13 (в `generators.js`, `LEVELS`): ур.1 — простейшая форма, ур.3 — больше
действий / скобки / дроби / переменная в обеих частях. Пример (Уравнения):
`ax+b=c``a(x+b)=c``a(x+b)=c(x+d)`; Степени: вычислить → произведение → степень
степени. Контрол **Авто / Лёгкий / Средний / Сложный** выбирает ВАРИАНТ-генератор
нужного уровня внутри текущей темы (`pickByLevel` с клампом к доступным уровням);
клик по чипу навыка — закрепляет конкретный (`pinned`); «Авто» = адаптивный подбор
(умная тренировка ведёт от простого к сложному по `order`) и показывает `ур.N` текущего.
Кросс-тематический адаптив (`pickNext`) работает только в Авто без закрепления.
Смоук страницы: Сложный→генератор ур.3, Лёгкий→ур.1.
(Движок дополнительно умеет числовое масштабирование `instantiate(gen,{level})`
через `_scaleRange` — capability для билдера/будущего, смоук T18; страница его НЕ
использует, т.к. числа ≠ сложность.)
## Сквозное
Тесты/смоуки на каждую фазу; доступность (ARIA, клавиатура, озвучка формул);
офлайн-режим (PWA) для параметрики; производительность.
## Рекомендация
Начать с **P7 + P8** (репетитор + мат-ввод — сильная синергия, наибольший скачок
качества обучения), затем **P9** (разбор ошибок) — вместе дают эффект «личный
репетитор». Параллельный быстрый выигрыш по охвату — **P10** (неравенства/системы/ЦТ).