- движок: instantiate(gen,{level}) масштабирует диапазоны pick (_scaleRange): L2=база, L1 меньше магнитуды/меньше отрицательных, L3 шире → сложнее; универсально для всех генераторов (корень-вперёд + самопроверка держат корректность), opt-out gen.noScale; generateBatch прокидывает level
- страница: контрол «Сложность: Авто / Лёгкий / Средний / Сложный» в рабочей зоне; «Авто» поднимает уровень с серией верных (streak≥2→2, ≥4→3, ошибка→1); скрыт для текстовых задач из банка
- смоук движка 682/682 (T18: 36 ген × L1/L2/L3, L3 шире L1, L2==база), страница 34/34; эмодзи/eval 0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
12 KiB
ИИ-Тренажёр — 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
Движок: instantiate(gen,{level}) масштабирует диапазоны pick (_scaleRange):
L2 = база, L1 — меньше магнитуды/меньше отрицательных (легче), L3 — шире (сложнее).
Универсально для всех генераторов (корень-вперёд + самопроверка держат корректность),
opt-out gen.noScale. Страница: контрол Сложность: Авто / Лёгкий / Средний /
Сложный; «Авто» поднимает уровень с серией верных в сессии (streak≥2→2, ≥4→3, ошибка→1).
Смоук движка T18 (36 ген × L1/L2/L3 материализуются; L3 шире L1; L2==база).
Сквозное
Тесты/смоуки на каждую фазу; доступность (ARIA, клавиатура, озвучка формул); офлайн-режим (PWA) для параметрики; производительность.
Рекомендация
Начать с P7 + P8 (репетитор + мат-ввод — сильная синергия, наибольший скачок качества обучения), затем P9 (разбор ошибок) — вместе дают эффект «личный репетитор». Параллельный быстрый выигрыш по охвату — P10 (неравенства/системы/ЦТ).