Commit Graph

10 Commits

Author SHA1 Message Date
Maxim Dolgolyov a7d20a0c90 feat(trainer): НОД и НОК (5-6 кл) + функции gcd/lcm в SimExpr
- SimExpr: добавлены whitelisted-функции gcd (алгоритм Евклида) и lcm (арность 2), защищены от NaN/0/отрицательных. Аддитивно — существующие спеки SimForge/Quantik не затронуты
- НОВАЯ тема НОД и НОК: gcd-pair (НОД), lcm-pair (НОК). Числа строятся как g·m и g·k (общий множитель) → НОД нетривиален; gcd/lcm считаются и проверяются движком
- 60 генераторов, 20 тем; смоук движка 1154/1154, страница 40/40; gcd(36,24)=12, lcm(4,6)=12 верны; эмодзи 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 17:30:36 +03:00
Maxim Dolgolyov 169501f12a feat(trainer): контент 5-6 кл — десятичные дроби + отрицательные числа
- НОВАЯ тема Десятичные (5 кл): сложение/вычитание/умножение десятичных. Строятся через десятые/сотые (целые ÷10, ÷100) → ответ печатается чисто, без float-мусора (0.8, 0.07, 0.16)
- НОВАЯ тема Отрицательные (6 кл): сумма/разность/произведение с отрицательными. Словесные формулировки («Найдите сумму чисел -8 и 9», «Из числа 6 вычтите -12») — без двусмысленных операторов; constraint гарантирует хотя бы одно отрицательное
- всё kind compute (движок не трогал); LEVELS проставлены
- 58 генераторов, 19 тем; смоук движка 1114/1114, страница 40/40; эмодзи 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 17:17:22 +03:00
Maxim Dolgolyov db5c6b80ec feat(trainer): контент — геометрия (площади/многоугольники/подобие) + дроби 5-6
- Площади (+3): трапеция (a+b)/2·h, параллелограмм a·h, ромб d1·d2/2
- НОВАЯ тема Многоугольники (8 кл): сумма углов 180·(n−2), угол правильного n-угольника
- НОВАЯ тема Подобие (8 кл): сходственная сторона/периметр по коэффициенту
- НОВАЯ тема Дроби (5 кл): часть от числа (целый ответ), сложение дробей с одинаковым знаменателем (дробный ответ — ученик вводит «7/4» или «1.75», SimExpr считает)
- всё kind compute (новой движковой работы нет); LEVELS проставлены
- 52 генератора, 17 тем (геометрия: Углы, Пифагор, Площади, Многоугольники, Подобие)
- смоук движка 997/997, страница 40/40 (T1 целочисленность теперь только для integerAnswer-генераторов — дроби легитимны); эмодзи 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 17:04:39 +03:00
Maxim Dolgolyov 5226deb975 feat(trainer): системы 2 уравнений (kind system, пара-ответ) + текстовые задачи
- НОВЫЙ kind system: движок строит \begin{cases}, хранит пару {x,y}, самопроверка подстановкой обоих уравнений; checkStudentAnswer._checkSystem парсит «x=2; y=3» или «2; 3» (метки опциональны), проверяет ОБА уравнения
- тема Системы: sys-2x2 (полож. коэф., ур.2) + sys-2x2-neg (отрицательные, ур.3); приём корень-вперёд (берём решение, выводим правые части, det≠0)
- тема Задачи (compute, текстовые семьи): движение (путь/время/скорость), сплав (%), цена со скидкой
- exprToLatex: единичный коэффициент 1*x->x, -1*x->-x (латентная недоработка)
- 43 генератора, 14 тем; смоук движка 817/817 (T19 системы + T19b текстовые)
- страница (trainer.html) НЕ тронута — её редизайнит параллельная сессия; полировка ввода систем (скрыть «x=», placeholder, фидбэк пары) — после редизайна. Системы уже работают через checkStudentAnswer (ввод «2; 3»)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:44:19 +03:00
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
Maxim Dolgolyov 6eaf68a158 feat(trainer): контент по программе учебников + геометрия + фильтр предмета
- классы тем выровнены по нашим учебникам (степени/формулы/упрощение/неравенства=7, пропорции/проценты=6, квадратные=8, прогрессии=9)
- Прогрессии (9 кл): n-й член арифм./геом. прогрессии (compute)
- ГЕОМЕТРИЯ (subject geometry): Углы (сумма углов треугольника, смежные, внешний — 7 кл), Пифагор (гипотенуза/катет через тройки — 8 кл), Площади (прямоугольник/треугольник/квадрат — 8 кл)
- 36 генераторов, 12 тем; всё kind compute (числовой ответ, проверка подстановкой, sqrt в SimExpr)
- страница: фильтр предмета Алгебра/Геометрия (segmented), синхрон с adaptive/ручным выбором; иерархия Предмет → Тема → Навык
- смоук движка 572/572, страница 33/33; эмодзи/eval 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:59:11 +03:00
Maxim Dolgolyov 47d4f71eac feat(trainer): P10 — контент 8 класса (степени, формулы, неравенства)
- новый тип kind:inequality: answerRel{op,bound}, парсер отношения (_parseRel/_checkInequality) — нормализация «x op c», приём обратной записи, сверка op+границы; self-check внутри/снаружи решения
- темы: Степени (aⁿ, xᵃ·xᵇ, (xᵃ)ᵇ), Формулы сокр. умножения (квадрат суммы/разности, разность квадратов), Неравенства (вкл. смену знака при делении на отрицательное) → 26 генераторов, 8 тем
- движок: simplify рендерит выражение в KaTeX (exprToLatex(srcExpr)); неравенство — в KaTeX с отношением; fallback-display учитывает op
- страница: ввод/лейбл для неравенств, isLabelKind
- смоук движка 397/397 (T15 неравенства, T16 степени/формулы; T3 ≥10 для малых пространств), страница 33/33; ROADMAP_V2 P10 → DONE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:20:45 +03:00
Maxim Dolgolyov 7cc2a9d526 feat(trainer): P5 — несколько корней, эквивалентность выражений, новые темы
- движок: gen.answers → несколько корней (_checkMultiRoot, ввод через «;», сверка мультимножеством)
- kind simplify: эквивалентность выражений численным сэмплингом (_sampleEquiv, _checkEquiv), фикс. точки без Math.random
- exprToLatex: знаковые коэффициенты — -5x, x²−5x+6, a−(−b)→a+b (вынос ведущего минуса, схлопывание)
- темы: Упрощение (подобные, скобки) + Квадратные (Виета x²+bx+c=0, разность квадратов) → 17 генераторов, 5 тем
- страница: префикс «x=»/подсказка ввода и ответ-лейбл по типу задачи
- смоук движка 291/291 (T11 roots, T12 simplify, T13 latex), страница 26/26, adaptive 12/12; план P5 → DONE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 14:15:21 +03:00
Maxim Dolgolyov 20b8ce2c5b feat(trainer): P1 — темы/навыки, +8 генераторов, подробные пошаговые решения
- таксономия тема→навык (topics/byTopic), метаданные topic/order/subject/grade
- 13 генераторов в 3 темах: Уравнения (+a(x+b)=c(x+d), (ax+b)/c=d), Пропорции (3), Проценты (3)
- проценты как compute-задачи: текстовый prompt + проверка подстановкой (latex уравнения скрыт)
- подробные объяснения: каждый шаг расписан словами + шаг «Проверка» (подстановка корня)
- UI: вкладки тем + чипы навыков, бейджи мастерства, авто-выбор первой неосвоенной темы/навыка
- движок: exprToLatex чинит отрицательные множители (7·(−5)), поле kind, нумерованные шаги решения
- смоуки 238/238 (движок) + 19/19 (страница); план: P1 отмечен DONE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 13:29:44 +03:00
Maxim Dolgolyov c370eaa803 feat(trainer): ИИ-тренажёр — генераторы задач + SimExpr-верификатор, прогресс, фича-флаг
- движок _trainer_engine.js: instantiate/generateBatch/verifyRoot/checkStudentAnswer/exprToLatex
- 5 генераторов уравнений 7 класса (generators.js), приём «корень-вперёд» → целые ответы
- страница /trainer: KaTeX-рендер, чипы-темы, мгновенная проверка, подсказка/решение, авто-выбор навыка
- прогресс practice_progress (мигр.081) + /api/practice/progress|attempt + LS.practiceProgressList/Submit
- фича-флаг trainer: тумблер в админке (Модули), requireFeature, FEATURE_HREFS (скрытие сайдбара+редирект), MODULE_CATALOG
- fix: подключён Lucide CDN на странице (иначе иконки сайдбара пустые)
- тесты practice.test.js (10/10); план развития plans/ai-trainer/PLAN.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 13:11:47 +03:00