Files
Maxim Dolgolyov c020a2c948 feat(math5): Phase 0 — фундамент учебника «Математика 5»
План (PLAN_MATH_5 + VISUAL: карта 22 визуал-компонентов), миграция
050_math5_hub (хаб math-5 + 3 главы: Натуральные числа §1–17, Выражения.
Уравнения §1–9, Обыкновенные дроби §1–18), страница-хаб (3 карточки +
курсовой финал из 3 боссов + звание «Математик 5 класса») и 3 каркаса глав
на ОБЩЕМ движке math6 (window.M6 с slug math-5-chN, ключи math5_*).
Baseline-тест math5-page: 6/6. § без билдера → заглушка движка.

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

192 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PLAN — Интерактивный учебник «Математика. 5 класс»
> Составлен 2026-06-03 (Opus). Источник: **Герасимов В. Д., Пирютко О. Н., Лобанов А. П.
> «Математика. 5 класс»**, в 2 частях, Минск: Адукацыя і выхаванне, 2020 (2-е изд.).
> PDF: `G:\Dev\Тесты\Методички\Разное\Книги\matematika_5kl_ch1_gerasimov_rus_2020 (1).pdf` (181 стр.)
> и `…_ch2_… .pdf` (197 стр.). Контент пишем авторский (свой), не копируем книгу.
Цель: красивый, **интерактивный, визуальный** учебник того же класса качества, что
«Математика 6», — с тренажёрами, canvas/SVG-анимациями, пошаговыми разборами, финалами-боссами
и курсовым финалом. Реализация — Opus делает фундамент + эталонную Главу 1, Главы 2–3 тиражирует
Sonnet по образцу.
---
## 1. Структура книги (оглавление, 3 главы)
Книга Герасимова **переплетает геометрию внутрь числовых глав** (это её замысел) — не выделяем
геометрию отдельно, а сохраняем авторский порядок.
### Часть 1
**Глава 1. Натуральные числа** (§1–17)
1. Как решать задачу
2. Натуральные числа и число нуль. Чтение и запись
3. Сравнение натуральных чисел
4. Точка, прямая, луч, отрезок, плоскость
5. Измерение отрезков. Длина отрезка
6. Изображение натуральных чисел на координатном луче
7. Округление натуральных чисел
8. Сложение и вычитание натуральных чисел
9. Умножение и деление натуральных чисел
10. Степень числа с натуральным показателем
11. Деление с остатком
12. Делители, кратные. НОД и НОК
13. Признаки делимости
14. Простые и составные числа. Разложение на множители
15. *Математика вокруг нас* (прикладной)
16. *Задачи на движение, взвешивание, переливание* (занимательный/прикладной)
17. *Исторические сведения о числах* (история)
**Глава 2. Выражения. Уравнения** (§19)
1. Числовые выражения
2. Выражения с переменными
3. Уравнение
4. Формулы
5. Решение задач с помощью уравнений
6. Угол. Измерение и построение углов
7. *Математика вокруг нас* (прикладной)
8. *Занимательные задачи*
9. *Исторические сведения*
### Часть 2
**Глава 3. Обыкновенные дроби** (§1–18)
1. Дробные числа. Обыкновенные дроби
2. Деление и дроби. Основное свойство дроби
3. Правильные и неправильные дроби. Смешанные числа
4. Сравнение дробных чисел
5. Сложение и вычитание обыкновенных дробей
6. Сложение и вычитание смешанных чисел
7. Умножение дробных чисел
8. Деление дробных чисел
9. Задачи на все действия с дробными числами
10. Задачи на применение дробей
11. Параллельные и перпендикулярные прямые *(геом.)*
12. Ломаная. Многоугольник. Периметр *(геом.)*
13. Площадь. Единицы измерения площади *(геом.)*
14. Площадь прямоугольного треугольника и многоугольников *(геом.)*
15. Среднее арифметическое
16. Линейные и столбчатые диаграммы
17. Прямоугольный параллелепипед. Куб *(геом.)*
18. Объём. Единицы измерения объёма. Объём параллелепипеда *(геом.)*
> Бэк-материя ч.2 (Задачи с геом. фигурами, Повторение и обобщение, Задания для тренировки,
> Задачи для любознательных, Логические задачи, Наглядная геометрия) — **банки упражнений**, не §.
> Из них черпаем задачи для тренажёров и финала, отдельными § не делаем.
Каждая глава в книге завершается **тестом** («Ответы к тесту: 1в); 2г)…») → в нашем учебнике это
**Финал главы** (бой с боссами).
---
## 2. Архитектура — ПОЛНОЕ переиспользование движка «Математики 6»
Движок `math6_engine.js` уже **generic**: читает `window.M6` со своими `slug / lsPrefix / xpKey`,
строит para-selector, навигацию, прогресс/XP/достижения, сайдбар, поиск, глоссарий, тему, финалы.
**Ничего форкать не нужно.** Страницы 5 класса подключают те же ассеты:
```
/css/math6.css (общий фреймворк)
/js/api.js /js/xp.js
/js/math6_svg.js (window.Math6 — статичные SVG-фигуры)
/js/math6_anim.js (window.Math6Anim — canvas/SVG-демо) ← ПЕРЕД engine
/js/math6_engine.js (window.M6engine — плумбинг)
```
> Эти файлы — общая **визуальная библиотека математики**, а не «6 класс». Новые компоненты для
> 5 класса дописываем в `math6_svg.js` / `math6_anim.js` (выигрывают обе параллели). При желании
> позже переименуем в `math_svg.js` — сейчас не трогаем имена, чтобы не плодить churn.
**Страница главы** = `head` (KaTeX CDN + шрифты + math6.css + 5 скриптов) → inline `:root`-палитра
→ chrome (`hdr / hero / psel / #sections / sidebar / search / ach-popup`) → inline `<script>`:
объявить `data + builders`, затем `Object.assign(window.M6, {...})`.
### КРИТИЧНЫЕ правила (грабли с 6 класса — не наступать снова)
- **`init()` движка вызывается ПОСЛЕ всех `window.*`-экспортов** — у defer-скрипта `readyState`
уже `interactive`, и `else init()` срабатывает синхронно. Если builder зовёт `makeCard` до экспорта
`ReferenceError` → ВСЕ §1 показывают заглушку. (В нашем случае init внутри самого движка уже
корректен — мы лишь не нарушаем порядок: `Object.assign(window.M6,…)` до подключения движка не
нужен, движок читает `window.M6` лениво в `init`.)
- **Русская запятая в KaTeX = `2{,}5`** (иначе сбитый кернинг). В JS-билдерах — хелпер `_kf(x)`.
- **`applied:true`** у прикладных/исторических § (не входят в боссов финала), **`final:true`** у финала.
- **⛔ эмодзи** — только inline SVG `.ic`. **⛔ Grep-tool** — ast-index/vex. Edit-флака на кириллице —
верифицировать зелёным тестом.
---
## 3. Маппинг глав → LearnSpace
| slug | Глава | § (paras) | para_count | Цвет |
|------|-------|-----------|-----------|------|
| `math-5` | **Хаб** | — | 47 (Σ) | indigo |
| `math-5-ch1` | Натуральные числа | p1–p14 + 3 прикладных + final | 18 | indigo `#4f46e5` |
| `math-5-ch2` | Выражения. Уравнения | p1–p6 + 3 прикладных + final | 10 | teal `#0d9488` |
| `math-5-ch3` | Обыкновенные дроби | p1p18 + final | 19 | rose `#e11d48` |
`para_count = paras.length` (включая прикладные и финал — как в 6 классе). Хаб TOTAL = 18+10+19 = **47**.
Хаб закрыт по умолчанию (allowlist) → доступ выдаём в самом конце через `/api/access` ([[project_content_access]]).
Миграция: **`050_math5_hub.sql`** (следующий свободный номер; 049 = math-6). Хаб `sort_order` = 5
(перед math-6=6), дети 1/2/3.
---
## 4. Фазы реализации (волны)
### Phase 0 — Фундамент (Opus) ✦ делаем первым
- [ ] `backend/src/db/migrations/050_math5_hub.sql` (+ `npm run migrate`)
- [ ] `frontend/textbooks/math_5_hub.html` (клон math_6_hub: 3 карточки + курсовой финал из 3 боссов
+ ach-strip «Математик 5 класса», водяной знак «5», палитра indigo/teal/rose)
- [ ] 3 каркаса `math_5_ch1.html` / `ch2` / `ch3` — head + chrome + `window.M6` ТОЛЬКО с `paras`
(без билдеров → движок рисует заглушки; страницы живые, навигация работает)
- [ ] Тест `backend/tests/math5-page.test.js` (jsdom-over-HTML, инлайнит svg/anim/engine): страницы
грузятся, секции/psel генерируются, нет рантайм-ошибок, init после экспортов
- [ ] Commit + push
### Phase 1 — Глава 1 «Натуральные числа» (эталон, Opus)
Полные билдеры §1–17 + финал. 2+ интерактива на §, тренажёры со счётом+XP, DnD, пошаговые разборы,
визуализации (см. §5). Это **образец**, по которому Sonnet делает остальное.
### Phase 2 — Глава 2 «Выражения. Уравнения» (Sonnet-агент по образцу Главы 1)
### Phase 3 — Глава 3 «Обыкновенные дроби» (Sonnet-агент; самая визуальная — дроби + геометрия)
### Phase 4 — Обогащение + полировка
По образцу 6 класса: в каждый § «Где это в жизни» (хук) / «Разбор по шагам» (→ авто-stepPlayer) /
«А знаешь ли ты?» (факт); добить визуализации; прогон тестов.
### Phase 5 — Курсовой финал на хабе + звание «Математик 5 класса» (+150 XP)
3 боссовых испытания (по одному из главы): натуральные числа · уравнение/угол · дроби.
### Phase 6 — Доступ ученикам/классам (`/api/access`) — действие админа.
---
## 5. Визуальная карта — см. `PLAN_MATH_5_VISUAL.md`
Кратко: **что уже есть** в `Math6`/`Math6Anim` (numberLine, plane, pie, venn, areaModel,
numberLineWalk/Jumps, coordGame, balanceScale, triangleDrag, stepPlayer…) переиспользуем; **новое**
для 5 класса — `protractor` (угломер, §2.6), семейство дробей (`fractionBar`, `equivFractions`,
`fractionAdd`, `fractionMulArea`, `improperMixed`), `sieve` (решето Эратосфена, §1.14), `factorTree`,
`divisibilityChecker` (§1.13), `divisorsLadder` (НОД/НОК, §1.12), `powerBlocks` (степень, §1.10),
`rulerMeasure` (§1.5), `linePrimitives` (точка/прямая/луч, §1.4), `polygonPerimeter` (§1.12 ч.2 /3.12),
`areaGrid` + `triangleArea` (§3.1314), `averageBars` (§3.15), `barChart`/`lineChart` (§3.16),
`box3d` + `volumeCubes` (§3.1718, **2D-изометрия**, не интерактивный 3D — это допустимо и нужно).
---
## 6. Геймификация / тесты / гочи
- XP/уровни (общий `math5_xp`), прогресс `math5_chN_*`, финал главы = боссы (HP-бар), 4/5 → +40 XP
и ачивка «Глава N пройдена». Курсовой финал → звание + 150 XP (`localStorage math5_course_done`).
- Тесты: `backend/tests/math5-page.test.js` по образцу math6 (jsdom, инлайн ассетов, HEADLESS-guard
canvas). Прогон: `node -e "require('./tests/math5-page.test.js')"` из `backend/`.
- pre-commit hook гоняет полный backend-прогон при staged backend-файлах (baseline 3 Auth-фейла).
- Коммитить поимённо (не `git add -A`), push сразу. fetch перед работой ([[project_concurrent_sessions_branch]]).
---
## 7. Замечание про §3.17–18 (параллелепипед, куб, объём)
В 6 классе пользователь **исключил интерактивные 3D-тела**. Здесь иначе: параллелепипед/куб/объём —
**обязательная программа** 5 класса, и рисуются стандартной **2D-изометрией** (статичный чертёж с
подписанными рёбрами + анимация заполнения единичными кубиками). Это не «3D-движок», а плоский
SVG-рисунок — включаем.