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>
This commit is contained in:
Maxim Dolgolyov
2026-06-25 13:29:44 +03:00
parent c370eaa803
commit 20b8ce2c5b
4 changed files with 314 additions and 99 deletions
+11 -2
View File
@@ -31,9 +31,18 @@ LLM в ядре не участвует — его роль (Уровень 1+)
---
## Phase 1 — Ширина контента (генераторы)
## Phase 1 — Ширина контента (генераторы) — DONE
**Цель:** перестать быть «демкой одной темы». Структура `класс → предмет → тема → навык`.
**Сделано:** таксономия `тема → навык` с метаданными (`topic/order/subject/grade`),
`TrainerGenerators.topics()/byTopic()`. **13 генераторов в 3 темах**: Уравнения (7:
`ax+b=c`, `a(x+b)=c`, `ax+b=cx+d`, `a(x+b)=c(x+d)`, `x/a+b=c`, `ax/b=c`, `(ax+b)/c=d`),
Пропорции (3), Проценты (3, `kind:'compute'` — текстовый prompt + проверка подстановкой).
UI: выбор темы (вкладки) → навыки (чипы) с бейджами мастерства, авто-выбор первой
неосвоенной темы/навыка. **Подробные объяснения**: каждый шаг расписан словами + шаг
«Проверка» (подстановка корня). Движок: `exprToLatex` чинит отрицательные множители
(`7·(5)`), `kind:'compute'`. Смоуки 238/238 (движок) + 19/19 (страница).
**Цель (исходная):** перестать быть «демкой одной темы». Структура `класс → предмет → тема → навык`.
- Реестр генераторов: вынести в данные с метаданными `{ grade, subject, topic, skill, order, difficulty }`.
Группировка чипов по темам/классам; выбор класса/предмета вверху.