ROADMAP_V4.md — мастер-план: 103 новых генератора по 6 группам тем (матрица диверсификации), 38 формулировок условий, 10 новых форматов заданий (kinds: choice/verify/findError/fillBlank/estimate/multi/order/match/context/figureAsk), педагогика (3-уровн. подсказки, библиотека ошибок, образцы, guided, сократ.), адаптивность (запись уровня/времени, мастерство на L3, граф пререквизитов, диагностика, due-mix), вовлечение+учитель (XP, задания+журнал, аналитика, карта-созвездие), охват ЦТ (функции/корни/логарифмы/тригонометрия/коорд-геометрия, ЦТ-режим), техника/качество. Рекомендуемая последовательность V4.1–V4.6. V4_GENERATOR_SPECS.md — спутник: полные «корень-вперёд»-рецепты всех 103 генераторов (форма/пример/вывод/фигура), формулировки и сквозные предложения с what/why/how/effort. Собрано анализом 11 агентов по реальному движку (каждое предложение реализуемо в текущем контракте, инварианты соблюдены). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 KiB
ИИ-Тренажёр — План развития v4: разнообразие задач + все направления
Дата: 2026-06-26. Фокус заказа — разнообразие задач и условий по текущим темам; плюс полный охват направлений (форматы, педагогика, адаптивность, вовлечение, охват ЦТ, техника). План собран глубоким анализом (11 агентов, каждый сверялся с РЕАЛЬНЫМ движком): 103 новых генератора, 38 новых формулировок условий, 44 сквозных улучшения.
Что уже есть (база v1–v3)
- Движок параметрических генераторов + детерминированная проверка
SimExpr. - 64 генератора / 21 тема (алгебра + геометрия). Виды:
solve,compute,roots,simplify,inequality,system. - Геометрия с чертежами-данными (
figures.js, 13 типов) + режим «читать с чертежа» (figurePromptу всех 19 геом-генераторов, тумблер «Текст / На чертеже»). - Структурные уровни сложности (1–3), умная тренировка + интервальное повторение (SR,
мигр.081/082), LLM-задачи с серверной проверкой (мигр.083), пошаговое решение (
checkStep), правиловый разбор ошибок (analyzeMistake), 3-уровневое объяснение (/api/practice/explain), мат-клавиатура + live-KaTeX, аналитика класса, авторинг/раздача учителем, конструктор генераторов (/trainer-builder, мигр.084).
Инварианты (НЕ нарушать ни в одном пункте)
- ⛔ Только
SimExpr— безeval/new Function. - «Корень-вперёд»: сначала выбираем целый корень/множители, ВЫВОДИМ остальное → ответ всегда чистый (целое ИЛИ конечная десятичная дробь, как окружность с π≈3,14), самопроверка движка проходит. Ответ ВСЕГДА вводим без потери точности.
- ⛔ Без эмодзи — только inline SVG
.ic/ Lucide. Тексты экранируются. - Зарезервированные имена параметров:
t, w, h, pi, e, E, PI, tau— нельзя. - Каждая фаза — со смоуками/тестами и коммитом;
lint:routesbaseline 0.
Ключевые ограничения движка (выявлены анализом — важно для реализации)
rootsпроверяет КАЖДЫЙ корень подстановкой →|ax+b|=cреализуется какrootsсlhs:'abs(...)'(exprToLatex уже рендерит\left|...\right|).inequalityподдерживает только ОДНУ полупрямую{op, bound}. Двойные неравенстваa<bx+c<d,|x|<c, знак-чарты — черезcompute(«сколько целых решений», «наименьшее целое x»), они остаются самопроверяемыми. Не делать ихinequality— самопроверка упадёт.systemподдерживаетanswerVarsдлины 3 → система 3×3 возможна ЧИСТО ДАННЫМИ.- Новые виды (
choice/verify/fillBlank/findError/estimate/multi/order/match) требуют правок движка + страницы (Часть II).
ЧАСТЬ I — РАЗНООБРАЗИЕ ЗАДАЧ И УСЛОВИЙ (главное по запросу)
Разнообразие растёт по двум осям: (A) новые форматы условий/ответов (применимы ко ВСЕМ темам) и (B) новые варианты и формулировки внутри каждой темы (103 генератора + 38 рамок).
I.A. Новые форматы условий (новые kind — Часть II.формат)
Это умножает разнообразие сразу во всех темах. Подробности и приоритеты — в разделе «II. Форматы заданий».
| Формат | kind | Что даёт |
|---|---|---|
| Выбор ответа | choice |
дистракторы из analyzeMistake (типовые ошибки) |
| Верно/неверно | verify |
проверить утверждение (1/0 через SimExpr-булеву) |
| Найди ошибку | findError |
указать неверный шаг в готовом решении |
| Вставь пропуск | fillBlank |
число/выражение в тождестве |
| Оценка/прикидка | estimate |
ответ в допуске (интервал) |
| Многошаговая | multi |
одна задача — несколько проверяемых под-ответов |
| Упорядочи | order |
расставить числа/шаги по порядку |
| Сопоставь | match |
формула↔результат, фигура↔площадь |
| Реальный контекст | context |
обёртка существующих задач в бытовые сюжеты |
| Читать с фигуры/таблицы | figureAsk |
ответ берётся с чертежа/таблицы |
I.B. Матрица диверсификации по темам (103 генератора)
Условные обозначения: L — структурный уровень (1–3), вид — kind. Все «корень-вперёд».
Многие новые формулировки реализуются чистыми данными (без правок движка): инверсные
(«найди коэффициент по корню»), пропущенный шаг, словесный контекст, «что больше», истина/ложь
кодом (1/0), «вставь знак», «сколько целых решений».
Группа 1. Линейные: Уравнения · Неравенства · Системы (15 генераторов)
| Тема | id | Форма / условие | L | kind |
|---|---|---|---|---|
| linear-eq | lin-both-frac |
ax+b=cx+d с делением на (a−c)≥2 | 2 | solve |
| linear-eq | lin-x-denom |
a/(x+b)=c (x в знаменателе) | 3 | solve |
| linear-eq | lin-k-over-x |
k/x=c (обратная пропорция) | 2 | solve |
| linear-eq | lin-abs |
|ax+b|=c (два корня) | 3 | roots |
| linear-eq | lin-frac-eq-frac |
(ax+b)/c=(dx+e)/f | 3 | solve |
| linear-eq | lin-nested-paren |
a(b(x+c)+d)=e (вложенные скобки) | 3 | solve |
| linear-eq | lin-literal |
ax=b·k−c·x (буквенный коэффициент) | 3 | solve |
| inequalities | ineq-both-sides |
ax+b<cx+d | 2 | inequality |
| inequalities | ineq-both-flip |
ax+b≥cx+d, c>a (смена знака) | 3 | inequality |
| inequalities | ineq-paren |
a(x+b)>c | 2 | inequality |
| inequalities | ineq-count-int |
сколько целых решений / наим. целое | 2 | compute |
| systems | sys-subst |
подстановка (одно ур-е разрешено) | 2 | system |
| systems | sys-sum-diff |
x+y=S, x−y=D | 1 | system |
| systems | sys-3x3 |
система 3×3 (тизер, answerVars=3) | 3 | system |
| systems | sys-word |
текстовая на два неизвестных | 2 | system |
Формулировки: инверс «при каком a корень = R», конструктор «дополни 2x+▢=10 чтобы корень
3», пропущенный шаг (берётся из solution[]), счёт целых решений (обход ограничения
inequality), инверс параметра системы «при каком k решение (1;2)».
Группа 2. Пропорции · Проценты · Текстовые (17 генераторов)
| Тема | id | Форма / условие | L | kind |
|---|---|---|---|---|
| proportions | prop-direct-word |
прямая пропорция (цена/кол-во) | 1 | compute |
| proportions | prop-inverse-word |
обратная (рабочие/дни) | 2 | compute |
| proportions | prop-scale-map |
масштаб карты | 2 | compute |
| proportions | prop-compound |
тройная пропорция | 3 | compute |
| proportions | prop-share-ratio |
деление в отношении a:b | 2 | compute |
| percents | pct-increase |
увеличение на p% | 2 | compute |
| percents | pct-decrease |
уменьшение на p% | 2 | compute |
| percents | pct-change |
на сколько % изменилось | 3 | compute |
| percents | pct-simple-interest |
простые проценты (вклад) | 2 | compute |
| percents | pct-compound-2y |
сложные проценты (2 года) | 3 | compute |
| percents | pct-restore-before |
исходное до изменения | 3 | compute |
| applied | app-meet |
встречное движение | 2 | compute |
| applied | app-overtake |
движение вдогонку | 3 | compute |
| applied | app-upstream |
по реке (по/против течения) | 2 | compute |
| applied | app-work-joint |
совместная работа | 3 | compute |
| applied | app-mix-blend |
смешивание растворов | 3 | compute |
| applied | app-profit-pct |
прибыль в процентах | 3 | compute |
Формулировки: «что больше: 30% от 80 или 40% от 50», таблица-данные, цепочка скидка→налог, проценты vs процентные пункты, прикидка, средняя скорость кругового рейса (2v₁v₂/(v₁+v₂)).
Группа 3. Выражения: Упрощение · Степени · Формулы (16 генераторов)
| Тема | id | Форма / условие | L | kind |
|---|---|---|---|---|
| simplify | simp-like-multivar |
привести подобные (две буквы) | 2 | simplify |
| simplify | simp-like-const |
подобные с числом | 2 | simplify |
| simplify | simp-sub-bracket |
вычесть скобку (знаки) | 3 | simplify |
| simplify | simp-distribute-combine |
раскрыть и привести | 3 | simplify |
| simplify | simp-factor-common |
вынести общий множитель | 2 | simplify |
| simplify | simp-factor-group |
группировка | 3 | simplify |
| formulas | diff-sq-factor |
разложить разность квадратов | 3 | simplify |
| formulas | sq-trinom-factor |
свернуть в квадрат | 3 | simplify |
| formulas | sq-sum-coef |
квадрат суммы с коэффициентом | 3 | simplify |
| formulas | cube-sum |
куб суммы | 3 | simplify |
| formulas | sum-cubes-factor |
сумма кубов | 3 | simplify |
| powers | pow-div |
частное степеней | 2 | simplify |
| powers | pow-product-base |
степень произведения | 2 | simplify |
| powers | pow-frac-combine |
дробь степеней | 3 | simplify |
| powers | pow-numeric-laws |
степени одного основания (число) | 2 | compute |
| powers | pow-standard-form |
стандартный вид числа | 2 | compute |
Формулировки: вставь число в тождество ((x+a)²=x²+▢x+a²), найди-ошибку→правильный ответ,
«запиши в виде произведения» (обратное разложение, simplify-эквивалентность), «в какую степень
возвести», упрости-и-вычисли при x=x₀ (мост к арифметике, защита от заучивания строки).
Группа 4. Квадратные · Прогрессии (16 генераторов)
| Тема | id | Форма / условие | L | kind |
|---|---|---|---|---|
| quadratic | quad-incomplete-bx |
ax²+bx=0 (вынесение x) | 2 | roots |
| quadratic | quad-incomplete-c |
ax²=c (корень) | 2 | roots |
| quadratic | quad-disc-clean |
ax²+bx+c=0 (дискриминант, чистый D) | 3 | roots |
| quadratic | quad-trinomial-factor |
разложить трёхчлен | 2 | simplify |
| quadratic | quad-find-b |
найти b по корню | 3 | compute |
| quadratic | quad-count-roots |
сколько корней (знак D) | 2 | compute |
| quadratic | quad-vertex-x |
вершина x₀=−b/2a | 2 | compute |
| quadratic | quad-complete-square |
выделить полный квадрат | 3 | simplify |
| progressions | prog-arith-sum |
сумма n членов (арифм.) | 2 | compute |
| progressions | prog-arith-find-d |
найти d по двум членам | 2 | compute |
| progressions | prog-arith-find-n |
каким по счёту идёт член | 3 | compute |
| progressions | prog-arith-mean |
вставить среднее арифм. | 2 | compute |
| progressions | prog-geom-find-q |
найти знаменатель q | 2 | compute |
| progressions | prog-geom-mean |
геометрическое среднее | 3 | compute |
| progressions | prog-geom-sum |
сумма n членов (геом.) | 3 | compute |
| progressions | prog-arith-word |
ряды кресел / зарплата | 2 | compute |
Формулировки: корни-как-пара (сумма/произведение по Виета), «составь приведённое ур-е по корням» (simplify), классификация по знаку D, кратный корень (полный квадрат, 1 корень), числовой сюжет (произведение последовательных), инверс a₁/n/q, сумма 1..n и 1+3+..+(2n−1), реальный геом. сюжет (мяч/бактерии, q∈{2,3}).
Группа 5. Арифметика 5–6: НОД/НОК · Дроби · Десятичные · Отрицательные (19 генераторов)
| Тема | id | Форма / условие | L | kind |
|---|---|---|---|---|
| gcd-lcm | gcd-triple |
НОД трёх чисел | 2 | compute |
| gcd-lcm | lcm-triple |
НОК трёх чисел | 3 | compute |
| gcd-lcm | coprime-check |
взаимно простые? (1/0) | 2 | compute |
| gcd-lcm | lcm-buses |
«снова вместе» (НОК-задача) | 2 | compute |
| fractions | frac-reduce |
сократить дробь | 2 | compute |
| fractions | frac-add-unlike |
сложение (разные знаменатели) | 3 | compute |
| fractions | frac-mult |
умножение дробей | 2 | compute |
| fractions | frac-compare |
сравнить дроби (код 1/2/0) | 2 | compute |
| fractions | frac-of-whole-inverse |
число по его части | 3 | compute |
| fractions | frac-to-decimal |
дробь → десятичная | 2 | compute |
| decimals | dec-div |
деление десятичных | 3 | compute |
| decimals | dec-round |
округление | 2 | compute |
| decimals | dec-times-pow10 |
×/÷ на 10/100/1000 | 1 | compute |
| decimals | dec-compare |
сравнить десятичные | 1 | compute |
| negatives | neg-div |
деление (отрицательные) | 2 | compute |
| negatives | neg-order-ops |
порядок действий со знаками | 3 | compute |
| negatives | neg-abs |
модуль числа/выражения | 2 | compute |
| negatives | neg-compare-line |
сравнение на коорд. прямой | 1 | compute |
| negatives | neg-square |
квадрат отрицательного | 2 | compute |
Формулировки: истина/ложь (1/0), «что больше» кодом (1/2/0), «вставь знак» (1/2/0), словесный контекст (НОК-автобусы, остаток пирога), прикидка с округлением, смешанное число ↔ неправильная дробь.
Группа 6. Геометрия: Углы · Пифагор · Площади · Многоугольники · Подобие · Окружность (20 генераторов)
Все используют систему фигур-данных (figures.js); где нужно — новый тип фигуры.
| Тема | id | Форма / условие | L | Нужна фигура |
|---|---|---|---|---|
| g-angles | ang-parallel-transversal |
параллельные + секущая | 2 | новый тип parallel-lines |
| g-angles | ang-isosceles-base |
углы равнобедренного | 2 | triangle-angles (расш.) |
| g-angles | ang-vertical-bisector |
вертикальные / биссектриса | 1 | новый crossing-lines |
| g-pyth | pyth-perimeter |
периметр прям. треугольника | 3 | right-triangle |
| g-pyth | pyth-distance |
расстояние между точками | 3 | новый coord-points |
| g-pyth | pyth-rect-diagonal |
диагональ прямоугольника | 2 | rectangle+диагональ |
| g-pyth | pyth-space-diagonal |
диагональ параллелепипеда | 3 | новый box-3d |
| g-area | area-rect-inverse |
сторона по площади | 2 | rectangle (▢) |
| g-area | area-l-shape |
площадь L-фигуры | 3 | новый l-shape |
| g-area | area-sector |
площадь сектора | 3 | circle-arc+заливка |
| g-poly | poly-diagonals |
число диагоналей | 2 | regular-polygon+диаг. |
| g-poly | poly-find-n |
число сторон по углу | 3 | regular-polygon |
| g-poly | poly-exterior-sum |
внешний угол правильного | 2 | regular-polygon+метка |
| g-sim | sim-scale-factor |
коэффициент по сторонам | 2 | two-similar |
| g-sim | sim-area-ratio |
отношение площадей (k²) | 3 | two-similar |
| g-sim | sim-thales |
отрезок по т. Фалеса | 3 | новый thales |
| g-sim | sim-map-scale |
масштаб карты | 2 | (без фигуры) |
| g-circle | circ-inscribed-angle |
вписанный/центральный угол | 3 | circle+две хорды |
| g-circle | circ-chord-pyth |
длина хорды через радиус | 3 | circle+хорда |
| g-circle | circ-tangent-len |
длина касательной | 3 | circle+касательная |
Формулировки: только-с-чертежа (L3-вариант любого углового), двухшаговая «погоня за углом»
(вертикальный→смежный; накрест→сумма треугольника), обратная «прямоугольный ли?» (1/0,
rhs:'(a*a+b*b==c*c)'), закрашенная область (круг в квадрате, π≈3,14), инверс «сколько сторон
по сумме углов», подобие через тени (дерево/столб), угол в полуокружности (Фалес).
ЧАСТЬ II — НОВЫЕ ФОРМАТЫ ЗАДАНИЙ (kinds)
Дают наибольший прирост разнообразия условий — применимы ко всем темам. Каждый сохраняет SimExpr-проверку.
| # | Формат | Усилие | Суть реализации |
|---|---|---|---|
| P1 | choice (выбор) |
M | 4 варианта; дистракторы из analyzeMistake (типовые ошибки) + случайные; правильный — текущий ответ |
| P2 | verify (верно/неверно) |
M | утверждение → булева SimExpr (1/0); часть истинных, часть ложных |
| P3 | findError (найди ошибку) |
M | портим ОДИН шаг solution[]; ученик указывает номер неверного шага |
| P4 | fillBlank (вставь пропуск) |
M | равенство с ▢; ответ — число/выражение, проверка подстановкой/эквивалентностью |
| P5 | estimate (оценка) |
S | ответ в допуске (band ±ε); для прикидки/π |
| P6 | multi (многошаговая) |
M | несколько gated под-ответов в одной задаче (путь→время→…) |
| P7 | order (упорядочи) |
M | расставить числа/шаги; идеально для отрицательных/дробей/десятичных |
| P8 | match (сопоставь) |
L | два столбца: выражение↔форма, фигура↔площадь |
| P9 | context (бытовой сюжет) |
S | тонкая обёртка существующих compute/solve в случайные сюжеты (данными) |
| P10 | figureAsk (с чертежа/таблицы) |
M | ответ ЧИТАЕТСЯ с фигуры; + новый тип фигуры table |
Старт: P9 (контекст-обёртки — почти бесплатно), P5 (estimate), затем P1/P4/P2 (высокая ценность, средняя цена). P8 (match) — позже.
ЧАСТЬ III — ПЕДАГОГИКА / РЕПЕТИТОР
| # | Что | Усилие |
|---|---|---|
| C1 | 3-уровневые подсказки (намёк → первый шаг → полное решение) из solution[] |
S |
| C2 | Библиотека типовых ошибок по темам (MISTAKES data, расширяет analyzeMistake) |
M |
| C3 | Режим «сначала образец» (worked example) → задача-близнец | M |
| C4 | Направляемые пропуски в шагах (валидатор — checkStep) |
M |
| C5 | Мастерство с учётом помощи (флаг assisted → «освоено» = без подсказок) |
M |
| C6 | Сократический «объясни мою ошибку» (вопрос вместо ответа, анти-чит) | M |
| C7 | Интервальное повторение МЕТОДА (мини-карточки «вспомни формулу») | L |
ЧАСТЬ IV — АДАПТИВНОСТЬ / МАСТЕРСТВО / ДИАГНОСТИКА
| # | Что | Усилие |
|---|---|---|
| D5 | Фундамент: писать структурный level и time_ms в попытку (POST attempt) |
S |
| D3 | Мастерство = серия верных на уровне 3 (а не на 1) | M |
| D7 | Авто-калибровка уровня по точности/времени последних попыток | M |
| D1 | Граф пререквизитов навыков + гейтинг (как unlockStars в Квантике) |
M |
| D2 | Входная диагностика → персональный стартовый план | L |
| D6 | Подмешивание due-навыков (кривая забывания) в КАЖДУЮ сессию | M |
| D4 | «Повторить всё слабое» — кросс-темовый режим слабых навыков | M |
| D8 | Полоса мастерства на чипе навыка + аналитика глубины учителю | S |
Начинать с D5 — без записи уровня/времени остальные пункты слепы.
ЧАСТЬ V — ВОВЛЕЧЕНИЕ + УЧИТЕЛЬ
| # | Что | Усилие |
|---|---|---|
| E1 | XP/монеты за практику (хук в submitAttempt, reuse геймификации) |
S |
| E2 | Практика в Дневной цели + календарь серий на странице | M |
| E3 | Достижения/бейджи (объёмы, мастерство, идеальная сессия) | M |
| E4 | Задания учителя + журнал (practice_assignments: темы/цель/дедлайн, трекинг) |
L |
| E5 | Глубже аналитика класса (помастерство, слабые места, время, динамика) | M |
| E6 | Карта-созвездие навыков (reuse QuantikMap) с пререквизитами |
L |
| E7 | Очередь ревью LLM-пула (одобрить/править/удалить черновики) | M |
| E8 | Конструктор генераторов на ВСЕ виды + шаринг/клон | L |
Учитывать kill-switch геймификации (
body.no-gamification) для E1–E3/E6.
ЧАСТЬ VI — ОХВАТ ЦТ/ЦЭ (новые темы) + ТЕХНИКА/КАЧЕСТВО
Новые темы (к программе 9–11 и ЦТ):
| id | Тема | Усилие | Заметка |
|---|---|---|---|
g-func |
Функции: чтение графика, значение, область | M | новые kinds graph-read/domain; линейная/квадратичная |
roots |
Корни и иррациональности (7–9) | S | √ из точных квадратов; √(a²b)→a√b (simplify) |
logs |
Логарифмы и показательные (10–11) | M | log_a(aᵏ)=k, aˣ=aᵏ; целые логи |
trig |
Тригонометрия (9–11) | M | значения в особых углах (0/30/45/60/90) |
g-coord |
Координатная геометрия (9) | M | середина, расстояние (пифагоровы пары), прямая |
ЦТ-режим (B5, L): формат А1–А10 / В1–В20, бланк ответов, таймер, тег ct_code со связью
с таксономией exam-prep (как tag-exam-textbook).
Техника/качество (сквозное):
| # | Что | Усилие |
|---|---|---|
| H1 | Ленивая загрузка KaTeX/Lucide, defer модулей тренажёра (first-paint) | S |
| H4 | Закоммиченный смоук: инстанс КАЖДОГО генератора × сидов + покрытие всех kinds | M |
| H3 | Телеметрия: труднейшие навыки, эффективность подсказок | M |
| A11y | ARIA, клавиатура, prefers-reduced-motion, озвучка формул |
M |
| H2 | Офлайн/PWA для параметрики + очередь синка прогресса | L |
ЧАСТЬ VII — РЕКОМЕНДУЕМАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ
Сначала — то, что даёт максимум разнообразия при минимуме риска (чистые данные), затем форматы, затем педагогика/адаптивность/вовлечение, затем охват ЦТ.
- V4.1 — Контент-разнообразие волнами (★ главное по запросу). Выкатить 103 генератора
группами (1→6) + формулировки, требующие ТОЛЬКО данных (инверс, пропущенный шаг, словесные,
«что больше», 1/0, счёт целых решений) + контекст-обёртки P9. Геометрия — с расширением
figures.js(новые типы:parallel-lines,crossing-lines,coord-points,box-3d,l-shape,thales, таблица). Риск низкий — движок не меняется (кроме фигур). - V4.2 — Новые форматы условий (kinds): P9→P5→P1→P4→P2→P3→P6→P7→P10→P8 (движок + страница + смоуки).
- V4.3 — Педагогика: C1→C2→C5→C3→C4→C6→C7.
- V4.4 — Адаптивность: D5 (фундамент)→D3→D7→D6→D4→D8→D1→D2.
- V4.5 — Вовлечение + учитель: E1→E2→E3→E5→E7→E4→E6→E8.
- V4.6 — Охват ЦТ:
roots→g-coord→g-func→logs→trig→ЦТ-режим (B5) +ct_code. - Сквозное (каждую фазу): H4 (закоммиченный смоук всех генераторов/kinds), затем H1/H3/A11y/H2.
Каждая фаза: смоук движка (инстанс всех генераторов + самопроверка) + смоук страницы +
бэкенд-тесты (где есть API) + коммит/пуш; эмодзи/eval = 0; lint:routes baseline 0.
Приложение — где что в коде
- Генераторы (данные):
frontend/js/trainer/generators.js - Движок/проверка/kinds:
frontend/js/trainer/_trainer_engine.js - Чертежи-данные:
frontend/js/trainer/figures.js - Умная сессия:
frontend/js/trainer/adaptive.js - Страница:
frontend/trainer.html - Прогресс/SR/пул:
backend/src/controllers/practiceController.js,routes/practice.js, мигр.081/082/083; конструктор —customGeneratorController+ мигр.084. - Предыдущие планы:
plans/ai-trainer/PLAN.md,ROADMAP_V2.md,ROADMAP_V3.md.