feat(math6): обогащение всех глав — хук, разбор по шагам, факты в каждом §

Каждый содержательный параграф 6 глав дополнен (Sonnet, по главе):
- карточка «Где это в жизни» (реальный контекст темы);
- «Разбор по шагам» (нумерованный алгоритм решения);
- «А знаешь ли ты?» (интересный факт/история);
- доведено до ≥2 рабочих интерактивов (где было меньше — добавлены).
Движок/общие файлы не трогались; структура M6/порядок init сохранены.
Проверено: тесты math6 18/18, честный рендер 4 глав — контент появляется,
рантайм-ошибок нет (только jsdom scrollTo-заглушка).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-02 21:14:56 +03:00
parent fe378371bd
commit 85c516e811
7 changed files with 813 additions and 12 deletions
+47
View File
@@ -0,0 +1,47 @@
# PLAN — Обогащение «Математики 6»: каждый параграф интересным + интерактивным
> Базовый учебник готов (6 глав, движок `math6_engine.js`, `Math6` svg). Тесты 18/18.
> Цель этого этапа: сделать **каждый содержательный §** живым и увлекательным для ученика,
> который впервые изучает тему. Исполнитель — **Sonnet**, по одной главе за агент (файлы глав независимы).
## Что добавляем в КАЖДЫЙ содержательный § (поверх уже существующего)
У каждого § уже есть 2 интерактива + теория-карточки + шпаргалка + подсказка + глоссарий.
Sonnet **дополняет** (не ломает существующее) так, чтобы § стал интереснее:
1. **«Где это в жизни» (хук).** Карточка `makeCard('oral', …)` или `theory`: 2–4 предложения — зачем тема нужна, где встречается (деньги, спорт, кулинария, природа, техника, игры). Цепляющее начало.
2. **Разбор примера по шагам.** Карточка `makeCard('example', …)` с **нумерованными шагами** решения (если ещё нет) — чтобы ученик видел алгоритм, а не только ответ. Можно `<details class="spoiler">` «Решение по шагам».
3. **«А знаешь ли ты?» / интересный факт.** Короткий факт/история по теме (математика, история чисел, рекорды) — `makeCard('theory', 'А знаешь ли ты?', …)` или spoiler.
4. **Минимум 2 РАБОЧИХ интерактива.** Если у § их меньше или они слабые — довести до 2 содержательных (тренажёр со счётом+XP, конструктор/демонстратор, классификатор-DnD, визуализация через `Math6`). Каждый — с обратной связью `feedback()` и начислением `addXp`/`bumpProgress`.
5. **Мини-челлендж «со звёздочкой».** Одна задача чуть сложнее/любопытнее в конце интерактивов (по желанию).
Финалы глав (боссы) и прикладные § («Математика вокруг нас») — оставить, можно усилить 1 боссом/задачей.
## Жёсткие правила (НЕ нарушать — иначе сломается движок/страница)
- **Редактировать ТОЛЬКО свой файл главы** `frontend/textbooks/math_6_chN.html`. НЕ трогать `math6_engine.js`, `math6_svg.js`, `math6.css`, другие главы — это общие/чужие файлы.
- Контент § — внутри его `function buildPk(){…}`; данные — в `SIDEBARS`/`TIPS`/`GLOSSARY`; всё уже подключается через `Object.assign(window.M6, …)` в конце скрипта. **Структуру M6/порядок init НЕ менять.**
- Хелперы брать готовые (глобальные от движка): `makeCard, secNav, readBtn, feedback, renderMath, fmt, num, addXp, bumpProgress, achievement, setupSorter, confetti`; графика — `window.Math6.*` (numberLine/plane/pie/venn — только вызывать). Локальные `_ri/_pick/_kf/_round` уже есть в начале скрипта главы.
- **KaTeX: десятичная запятая — `2{,}5`** (не `2,5`). Числа считать целочисленными мантиссами (`_mant/_dec`), не float.
- **⛔ Эмодзи запрещены** — только inline SVG `.ic`.
- Каждый `buildPk` заканчивается `secNav(prev,next) + readBtn('pk')` и `box.innerHTML=…; renderMath(box);` затем навешивает обработчики.
- Русский язык, уровень 6 класса, по программе Герасимова. Не выдумывать неверную математику.
## Само-проверка (обязательно перед завершением агента)
1. `node --check` своего файла (через Bash — синтаксис html не проверяется, но JS внутри — нет; вместо этого ниже).
2. Прогнать общий тест: `cd backend && node -e "require('./tests/math6-page.test.js')"` — все тесты зелёные, ошибок скриптов нет. (Тест монтирует каждую главу в jsdom; если builder упал — увидишь.)
3. Если тест по своей главе падает — чинить, не оставлять сломанным.
## Раскладка по агентам (1 глава = 1 агент Sonnet)
| Агент | Файл | Параграфы для обогащения |
|---|---|---|
| ch1 | `math_6_ch1.html` | §1–§10 + §12 (десятичные дроби) |
| ch2 | `math_6_ch2.html` | §1–§7 + §9 (проценты, пропорции) |
| ch3 | `math_6_ch3.html` | §1–§4 (множества) |
| ch4 | `math_6_ch4.html` | §1–§9 + §11 (рациональные числа) |
| ch5 | `math_6_ch5.html` | §1–§3 + §5 (координатная плоскость) |
| ch6 | `math_6_ch6.html` | §1–§5 (наглядная геометрия) |
После работы агентов — общий прогон тестов, ревью, коммит поимённо + push (см. [[project_math6_textbook]]).