# ИИ-Тренажёр — Roadmap v2 (Phase 7+) **Контекст.** P0–P6 готовы (`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` 1–3 (в `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** (неравенства/системы/ЦТ).