# 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. Выражения. Уравнения** (§1–9)
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` | Обыкновенные дроби | p1–p18 + 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.13–14), `averageBars` (§3.15), `barChart`/`lineChart` (§3.16),
`box3d` + `volumeCubes` (§3.17–18, **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-рисунок — включаем.
