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

13 KiB
Raw Blame History

ИИ-Тренажёр — 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=ca(x+b)=ca(x+b)=c(x+d); Степени: вычислить → произведение → степень степени. Контрол Авто / Лёгкий / Средний / Сложный выбирает ВАРИАНТ-генератор нужного уровня внутри текущей темы (pickByLevel с клампом к доступным уровням); клик по чипу навыка — закрепляет конкретный (pinned); «Авто» = адаптивный подбор (умная тренировка ведёт от простого к сложному по order) и показывает ур.N текущего. Кросс-тематический адаптив (pickNext) работает только в Авто без закрепления. Смоук страницы: Сложный→генератор ур.3, Лёгкий→ур.1.

(Движок дополнительно умеет числовое масштабирование instantiate(gen,{level}) через _scaleRange — capability для билдера/будущего, смоук T18; страница его НЕ использует, т.к. числа ≠ сложность.)

Сквозное

Тесты/смоуки на каждую фазу; доступность (ARIA, клавиатура, озвучка формул); офлайн-режим (PWA) для параметрики; производительность.

Рекомендация

Начать с P7 + P8 (репетитор + мат-ввод — сильная синергия, наибольший скачок качества обучения), затем P9 (разбор ошибок) — вместе дают эффект «личный репетитор». Параллельный быстрый выигрыш по охвату — P10 (неравенства/системы/ЦТ).