diff --git a/plans/ai-trainer/ROADMAP_V3.md b/plans/ai-trainer/ROADMAP_V3.md new file mode 100644 index 0000000..394fa1c --- /dev/null +++ b/plans/ai-trainer/ROADMAP_V3.md @@ -0,0 +1,126 @@ +# ИИ-Тренажёр — План развития v3 (по всем направлениям) + +**Дата:** 2026-06-25. Превращаем рабочий «проверяльщик с генераторами» в **полноценного +репетитора + тренажёрную платформу под ЦТ/ЦЭ**: глубокая педагогика, широкий контент, +вовлечение, учительский рабочий процесс, премиальный визуал. + +**Что уже есть (база v1+v2):** движок параметрических генераторов + SimExpr-верификация, +36 генераторов / 12 тем (алгебра+геометрия), kinds solve/compute/roots/simplify/inequality, +**структурные уровни сложности**, умная тренировка + интервальное повторение (SR), LLM-задачи +с серверной проверкой, пошаговое решение (`checkStep`), мат-клавиатура + live-KaTeX, +аналитика класса (тепловая карта), авторинг/раздача учителем, конструктор генераторов (админ). + +**Инвариант (не нарушать):** выражения — только `SimExpr` (⛔ без `eval`/`Function`); любая +задача из любого источника проходит проверку подстановкой/сэмплингом, неверная ученику не +попадает; тексты экранируются; ⛔ без эмодзи (только inline SVG `.ic`/Lucide); каждая фаза — +со смоуками/тестами и коммитом. + +--- + +## Направление A — Визуал и UX: «премиум-консоль» ⭐ (мокап готов) +Мокап `frontend/trainer-redesign-mockup.html` — двухпанельный рабочий стол. Переносим в боевую +страницу (все ID/классы уже совпадают → JS-логика почти не меняется, работа в основном по CSS/разметке). + +- **A1. Каркас**: плавающий стеклянный топбар (бренд + предмет-пилюля + умная тренировка-капсула + + кольцо сессии + кнопки «Аналитика»/«Конструктор»). Двухпанельная сетка `312px + 1fr`. +- **A2. Левый рейл**: карточка прогресса с **кольцом мастерства** (освоено N/всего) + плитки + «решено»/«серия» (золото); сегмент-контрол **Предмет**; вертикальный список **Тем** (точки-маркеры, + бейдж класса, звезда освоения / счётчик банка). +- **A3. Основная область**: бар навыков темы над **карточкой-героем** (сцена индиго→фиолет с + чипом уровня + уравнение serif; верно→изумруд+pop, неверно→красный+shake), рабочая зона + (сложность, ввод, клавиатура, превью, фидбэк, действия, шаги, решение, итог сессии). +- **A4. Доступность/моб.**: ARIA на тумблере/кнопках, видимый фокус, `prefers-reduced-motion`, + брейкпоинты 1080/620 (рейл схлопывается, сайдбар прячется). **Озвучка формул** (aria-label с + словесной формой уравнения) — задел на a11y. +- **Риск**: страница большая; переносить аккуратно, сверять смоук страницы (36/36) после. + +## Направление B — Контент и программа (охват ЦТ/ЦЭ) +Расширяем по программе наших учебников и таксономии ЦТ. + +- **B1. Алгебра-пробелы**: **Системы 2 лин. ур-ний** (НОВЫЙ kind `system` — пара-ответ `x;y`, + проверка обоих ур-ний подстановкой), линейная функция (найти k/b, точку), модуль `|ax+b|=c`, + разложение на множители, дробно-рациональные (9 кл). +- **B2. Геометрия-глубина**: углы многоугольника, подобие (коэффициент/стороны), окружность + (длина/площадь/дуга), теоремы синусов/косинусов (9), площади трапеции/ромба/параллелограмма. +- **B3. 5–6 класс**: арифметика, обыкновенные/десятичные дроби, НОД/НОК, отрицательные числа, + координатная прямая — мост к младшим (math5/6 учебники). +- **B4. Текстовые семьи параметрически** (без LLM): движение, работа, смеси/сплавы, проценты-сложные — + как генераторы (kind compute/solve) с шаблонным условием и «корень-вперёд». +- **B5. ЦТ-привязка**: тег `ct_code` на генераторах → связь с exam-prep таксономией (как + `tag-exam-textbook`); **ЦТ-режим** (формат А1–А10/В1–В20, бланк ответов, таймер). + +## Направление C — Репетитор: разбор ошибок + сократические подсказки (P9) ⭐ +Главный педагогический скачок — «почему неверно», не выдавая ответ сразу. + +- **C1. Правиловая детекция типовых ошибок**: сравнить ответ ученика с «ответом при типичной + ошибке» (потерян знак, забыл поделить на коэффициент, ошибка переноса, арифметика) для + linear/quadratic/inequality → конкретная подсказка «похоже, ты не сменил знак при переносе». +- **C2. 3 уровня подсказок**: намёк (что сделать) → шаг (первое преобразование) → полное решение. + Кнопка эскалации; учёт в прогрессе (решил с подсказкой ≠ чистое мастерство). +- **C3. Образец перед практикой** (worked example) + **guided-режим**: заполнить пропуски в готовых + шагах (reuse `checkStep`). +- **C4. LLM-объяснение** «объясни мою ошибку»/«подскажи» через Квантик-ассистента (`callLLMFailover`) — + ТОЛЬКО объяснения (безопасно, не генерация задач), с фолбэком на правиловые подсказки оффлайн. + +## Направление D — Адаптивность и мастерство +Точнее вести ученика и измерять освоение. + +- **D1. Граф навыков с пререквизитами**: тема/навык открывается, когда освоены предыдущие + (как `unlockStars` в Квантике) — нет прыжков «в сложное без базы». +- **D2. Диагностика**: входной мини-тест (по 1 задаче на ключевой навык) → стартовая карта + сильных/слабых → персональный план. +- **D3. Мастерство привязать к структурному уровню**: «освоено» = серия верных на ур.3 (а не на ур.1). +- **D4. SR-улучшения**: подмешивать due-навыки в сессию (сейчас отдельным проходом), кривая забывания, + «Повторить всё» по теме. + +## Направление E — Геймификация и карта навыков (P11) +Вовлечение через готовую инфраструктуру (Квантик), с учётом kill-switch геймификации. + +- **E1. XP/монеты/достижения** за решения/серии/мастерство (reuse Квантик-геймификация и `service.js`). +- **E2. Карта-созвездие навыков** (как `QuantikMap`) — визуальный прогресс по темам/предметам, + узлы открываются по пререквизитам (D1). +- **E3. Дневная цель + календарь серий**; бейджи за освоение темы; (опц.) рейтинг класса. + +## Направление F — Учительский рабочий процесс (P12) +Поверх раздачи — отслеживаемые задания и управление контентом. + +- **F1. Задания + журнал**: учитель задаёт темы/навыки + цель (N решено / мастерство) + дедлайн → + ученики видят, прогресс трекается, учитель видит выполнение (таблица `practice_assignments`), + интеграция с journal/homework. Апгрейд текущего `assign` (просто уведомление) до задания. +- **F2. Управление пулом LLM-задач**: очередь ревью (одобрить/править/удалить), генерация + пакетом по теме урока/§ учебника. +- **F3. Конструктор генераторов — расширение**: формы для kinds roots/simplify/inequality/compute/ + system; задание структурного `level`; шаринг/клон генераторов между учителями (как custom-sims). +- **F4. Аналитика глубже**: помастерство по навыкам, слабые места класса, время на задачу, динамика. + +## Направление G — Масштаб контента и авторинг +Чтобы банк рос быстро и безопасно. + +- **G1. LLM-конвейер**: генерация пакетами по теме (serverside `practiceGenService`), серверная + проверка → пул → очередь ревью учителя (F2). Дедуп, лимиты. +- **G2. Конструктор для всех типов** (F3) + импорт из банков ЦТ. + +## Направление H — Технически / качество +- **H1. Производительность**: кэш скомпилированных генераторов (есть `_cache`), ленивый KaTeX, + виртуализация длинных списков. +- **H2. Офлайн/PWA** для параметрики (генераторы работают без сети; синк прогресса при возврате). +- **H3. Телеметрия**: какие навыки самые трудные, отвал в сессии, эффективность подсказок — + в `class-stats`/новую таблицу. +- **H4. Тесты/a11y**: расширить движок/страница-смоуки на новые kinds; бэкенд-тесты на assignments; + ARIA/клавиатура/reduced-motion/озвучка формул. + +--- + +## Рекомендуемая последовательность +Сначала то, что даёт виден результат и опирается на готовое: + +1. **A — Редизайн** (мокап готов, ID совпадают; высокий «вау», низкий риск) — 1 заход. +2. **C — Репетитор/подсказки (P9)** (главная педагогическая ценность; правиловое ядро + 3 уровня). +3. **B1 — Системы ур-ний + текстовые семьи** (новый kind `system`, заметное расширение охвата). +4. **F1 — Задания и журнал (P12)** (учительский запрос, монетизирует платформу для школ). +5. **E — Геймификация + карта навыков (P11)** (вовлечение; reuse Квантик). +6. **D — Граф навыков/диагностика** + **B5 — ЦТ-режим/таксономия** (подготовка к экзамену). +7. Сквозное **H** (тесты/a11y/PWA/телеметрия) — на каждой фазе. + +Каждая фаза: смоук движка + смоук страницы + бэкенд-тесты (где есть API) + коммит/пуш, +эмодзи/eval = 0, lint:routes baseline 0.