f0af2079c3
Пользователь верно заметил: масштабирование чисел (больше/меньше) — не настоящая сложность. Настоящая = больше действий, скобки, дроби, переменная в обеих частях. - генераторы размечены структурным 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>
138 lines
13 KiB
Markdown
138 lines
13 KiB
Markdown
# ИИ-Тренажёр — 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** (неравенства/системы/ЦТ).
|