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>
This commit is contained in:
Maxim Dolgolyov
2026-06-25 16:24:31 +03:00
parent d07cb2a434
commit f0af2079c3
3 changed files with 87 additions and 19 deletions
+15 -7
View File
@@ -111,13 +111,21 @@ LLM-задач (P3) из UI, генерация по теме урока.
---
## Уровни сложности — DONE
Движок: `instantiate(gen,{level})` масштабирует диапазоны `pick` (`_scaleRange`):
L2 = база, L1 — меньше магнитуды/меньше отрицательных (легче), L3 — шире (сложнее).
Универсально для всех генераторов (корень-вперёд + самопроверка держат корректность),
opt-out `gen.noScale`. Страница: контрол **Сложность: Авто / Лёгкий / Средний /
Сложный**; «Авто» поднимает уровень с серией верных в сессии (streak≥2→2, ≥4→3, ошибка→1).
Смоук движка T18 (36 ген × L1/L2/L3 материализуются; L3 шире L1; L2==база).
## Уровни сложности — DONE (структурные)
**Сложность = СТРУКТУРА задачи, а не масштаб чисел.** Каждый генератор размечен
`level` 13 (в `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, клавиатура, озвучка формул);