docs(math6): план реализации учебника «Математика 6» (6 глав, 38 §)
Программа Герасимова/Пирютко 2022; архитектура — inline-паттерн Алгебры 7 (не движок химии); миграция 049, hub + 6 глав, math6_svg. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,308 @@
|
||||
# PLAN — Интерактивный учебник «Математика 6»
|
||||
|
||||
> **Источник:** В. Д. Герасимов, О. Н. Пирютко. «Математика. 6 класс». — Минск: Адукацыя і выхаванне, 2022 (2-е изд., исправленное и дополненное). Допущено Министерством образования Республики Беларусь.
|
||||
> PDF: `G:\Dev\Тесты\Методички\тест_6 класс\Книги\matematika_6kl_gerasimov_rus_2022.pdf` (317 стр.).
|
||||
> **Исполнитель:** Sonnet, по одной «волне» за раз (паттерн глав, как в Химии 7 / Алгебре 7).
|
||||
> **Контент авторский (наш)** — учебник используется только как ориентир программы и дидактики. Поле `author` оставляем пустым (политика проекта).
|
||||
|
||||
---
|
||||
|
||||
## 0. Чем «Математика 6» отличается от существующих учебников
|
||||
|
||||
Это **комбинированный** курс (арифметика + начала алгебры + наглядная геометрия) — первый математический учебник проекта для 6 класса. В отличие от химии/физики (симуляции) и узких алгебры/геометрии 7–11, здесь под одной крышей: десятичные дроби, проценты/пропорции, множества, отрицательные числа, координатная плоскость и наглядная геометрия.
|
||||
|
||||
**Архитектурное решение — переиспользуем паттерн Алгебры 7 (НЕ движок химии).**
|
||||
Доказательная база:
|
||||
- [frontend/textbooks/algebra_7_ch1.html](frontend/textbooks/algebra_7_ch1.html) — **самодостаточная страница-глава** (~1640 строк): весь движок (STATE/прогресс/XP/ачивки, PARAS/BUILDERS, SIDEBARS/TIPS, глоссарий, поиск, тема, конфетти, DnD-сортировщик) — **inline в `<script>`**, контент глав — функции `buildPN()`, возвращающие HTML-строку.
|
||||
- Это идеально для математики: каждый § требует **своего** интерактива (числовая прямая, разрядная таблица, графопостроитель, круги Эйлера), а не унифицированного пула MCQ, как `chem8_engine.js`.
|
||||
- Формулы — **KaTeX** (CDN, `$…$` / `$$…$$`), уже подключён в шаблоне algebra_7.
|
||||
- SVG-геометрия — `window.GEOM7` из [frontend/js/geom7_svg.js](frontend/js/geom7_svg.js) и координатные сетки из `alg10_svg.js` (изучить в Phase 0, переиспользовать/обернуть).
|
||||
|
||||
**Что копируем дословно** из [algebra_7_ch1.html](frontend/textbooks/algebra_7_ch1.html) (ссылки на блоки — это «золотой» скелет главы):
|
||||
| Блок | Строки-ориентир | Назначение |
|
||||
|---|---|---|
|
||||
| `STATE` + `calcLevel` + `loadProgress/saveProgress/bumpProgress` | 337–392 | прогресс по §, уровни |
|
||||
| `_TB_SLUG`, `_flushProgress/_queueProgress/markParaRead/loadServerReadState` | 394–420 | синк прогресса на `/api/textbooks/:slug/progress` |
|
||||
| `addXp` / `refreshProgressUI` / `achievement` | 422–455 | XP, ачивки, попапы |
|
||||
| `PARAS` / `buildParaSelector` / `BUILDERS` / `ensureBuilt` / `goTo` | 460–495 | навигация по §, ленивая сборка |
|
||||
| `SIDEBARS` / `TIPS` / `buildSidebar` | 498–558 | шпаргалка + подсказка в сайдбаре |
|
||||
| `initTheme`, `renderMath`, `feedback`, `fmt`, `makeCard`, `secNav`, `confetti` | 560–614 | тема, KaTeX, карточки, навигация |
|
||||
| `setupSorter` (drag-and-drop) | 617–629 | классификаторы (виды треугольников, дробь/целое и т.п.) |
|
||||
| `GLOSSARY` + `wrapGlossary` + `initGlossaryTip` | 632–663 | подсветка терминов + тултипы |
|
||||
| `SEARCH_INDEX` | 666+ | поиск по §/понятиям/формулам |
|
||||
|
||||
Sonnet берёт `algebra_7_ch1.html` как образец, меняет палитру, `_TB_SLUG`, `PARAS`/`SIDEBARS`/`TIPS`/`ACH_LABELS`/`GLOSSARY` и пишет `buildPN()` под программу 6 класса.
|
||||
|
||||
---
|
||||
|
||||
## 1. Полная программа (оглавление, стр. 309–311 PDF)
|
||||
|
||||
**6 глав, 47 параграфов** (38 содержательных + 6 «Тест для самопроверки» + 5 «Математика вокруг нас» — последние два станут *Финалом* и *прикладным §*).
|
||||
|
||||
### Глава 1. ДЕСЯТИЧНЫЕ ДРОБИ (стр. 5)
|
||||
1. Десятичная запись дробей. Разряды десятичных дробей
|
||||
2. Сравнение десятичных дробей. Округление десятичных дробей
|
||||
3. Изображение десятичных дробей на координатном луче
|
||||
4. Сложение и вычитание десятичных дробей
|
||||
5. Умножение и деление десятичной дроби на разрядную единицу. Умножение на 10, 100, 1000 …
|
||||
6. Умножение десятичных дробей
|
||||
7. Деление десятичной дроби на натуральное число
|
||||
8. Деление на десятичную дробь
|
||||
9. Конечные и бесконечные десятичные дроби
|
||||
10. Преобразования числовых выражений с обыкновенными и десятичными дробями
|
||||
11. Тест для самопроверки → **Финал главы**
|
||||
12. Математика вокруг нас → **прикладной §**
|
||||
|
||||
### Глава 2. ПРОЦЕНТЫ И ПРОПОРЦИИ (стр. 86)
|
||||
1. Проценты
|
||||
2. Основные задачи на проценты
|
||||
3. Пропорция и её свойства
|
||||
4. Прямая и обратная пропорциональные зависимости
|
||||
5. Решение задач с помощью пропорций
|
||||
6. Масштаб
|
||||
7. Круговые диаграммы
|
||||
8. Тест для самопроверки → **Финал**
|
||||
9. Математика вокруг нас → **прикладной §**
|
||||
|
||||
### Глава 3. МНОЖЕСТВО (стр. 151)
|
||||
1. Множество. Элементы множества. Пустое множество
|
||||
2. Способы задания множеств
|
||||
3. Операции над множествами (пересечение, объединение)
|
||||
4. Круги Эйлера. Решение задач с помощью кругов Эйлера
|
||||
5. Тест для самопроверки → **Финал**
|
||||
|
||||
### Глава 4. РАЦИОНАЛЬНЫЕ ЧИСЛА (стр. 178)
|
||||
1. Положительные и отрицательные числа. Координатная прямая
|
||||
2. Модуль числа. Противоположные числа. Множество целых чисел. Множество рациональных чисел
|
||||
3. Сравнение рациональных чисел
|
||||
4. Сложение рациональных чисел
|
||||
5. Вычитание рациональных чисел
|
||||
6. Законы сложения рациональных чисел
|
||||
7. Умножение рациональных чисел
|
||||
8. Деление рациональных чисел
|
||||
9. Задачи на все действия с рациональными числами
|
||||
10. Тест для самопроверки → **Финал**
|
||||
11. Математика вокруг нас → **прикладной §**
|
||||
|
||||
### Глава 5. КООРДИНАТНАЯ ПЛОСКОСТЬ (стр. 247)
|
||||
1. Прямоугольная (декартова) система координат на плоскости
|
||||
2. График. Графики реальных процессов
|
||||
3. График прямой пропорциональной зависимости. График обратной пропорциональной зависимости
|
||||
4. Тест для самопроверки → **Финал**
|
||||
5. Математика вокруг нас → **прикладной §**
|
||||
|
||||
### Глава 6. НАГЛЯДНАЯ ГЕОМЕТРИЯ (стр. 274)
|
||||
1. Наглядные представления тел в пространстве, примеры развёрток тел
|
||||
2. Окружность. Круг. Формулы длины окружности и площади круга
|
||||
3. Виды треугольников
|
||||
4. Симметрия относительно точки
|
||||
5. Фигуры, симметричные относительно прямой → + **Финал главы**
|
||||
|
||||
---
|
||||
|
||||
## 2. Структура файлов и регистрация в каталоге
|
||||
|
||||
Регистрация учебника — миграция + HTML-файлы (маршруты `/api/textbooks`, `/textbook/:slug` и каталог `textbooks.html` — **общие, менять не нужно**). Таблица `textbooks` (см. [004_textbooks.sql](backend/src/db/migrations/004_textbooks.sql)) + `parent_slug` (хаб = NULL, главы = slug хаба).
|
||||
|
||||
### Создаём (Phase 0):
|
||||
| Файл | Назначение |
|
||||
|---|---|
|
||||
| `backend/src/db/migrations/049_math6_hub.sql` | хаб `math-6` + 6 детей `math-6-ch1..ch6` |
|
||||
| `frontend/textbooks/math_6_hub.html` | хаб: 6 карточек глав, общий прогресс, курсовой финал |
|
||||
| `frontend/textbooks/math_6_ch1.html … ch6.html` | 6 страниц-глав на скелете algebra_7 |
|
||||
| `frontend/css/math6.css` | тема учебника (по образцу `alg7-fx.css` + inline-блок) |
|
||||
| `frontend/js/math6_svg.js` | `window.Math6` — координатная плоскость, графики, окружность/круг, треугольники, 3D-тела и развёртки, симметрия (обёртка над `GEOM7`/`alg10_svg`) |
|
||||
| `frontend/js/math6-fx.js` *(опц.)* | мелкие эффекты/комбо, если понадобятся сверх скелета |
|
||||
| `backend/tests/math6-page.test.js` | тесты рендера хаба и 6 глав |
|
||||
|
||||
### Образец миграции `049_math6_hub.sql` (по [046_chemistry7_hub.sql](backend/src/db/migrations/046_chemistry7_hub.sql)):
|
||||
```sql
|
||||
-- Math 6 hub migration. Hub math-6 + 6 chapters. Контент авторский. author=''.
|
||||
INSERT OR IGNORE INTO textbooks
|
||||
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active, parent_slug)
|
||||
VALUES
|
||||
('math-6','math',6,'Математика — 6 класс','',
|
||||
'Полный курс: десятичные дроби, проценты и пропорции, множества, рациональные (отрицательные) числа, координатная плоскость, наглядная геометрия. 6 глав, 38 параграфов.',
|
||||
'math_6_hub.html', 48, 'indigo', 6, 1, NULL);
|
||||
|
||||
INSERT OR IGNORE INTO textbooks
|
||||
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active, parent_slug)
|
||||
VALUES
|
||||
('math-6-ch1','math',6,'Математика 6 · Десятичные дроби','','§§1–12: запись и разряды, сравнение и округление, координатный луч, действия, бесконечные дроби, преобразования.','math_6_ch1.html',12,'indigo',1,1,'math-6'),
|
||||
('math-6-ch2','math',6,'Математика 6 · Проценты и пропорции','','§§1–9: проценты, 3 типа задач, пропорция и её свойство, прямая/обратная зависимость, масштаб, круговые диаграммы.','math_6_ch2.html',9,'cyan',2,1,'math-6'),
|
||||
('math-6-ch3','math',6,'Математика 6 · Множество','','§§1–5: множество и элементы, способы задания, пересечение и объединение, круги Эйлера.','math_6_ch3.html',5,'violet',3,1,'math-6'),
|
||||
('math-6-ch4','math',6,'Математика 6 · Рациональные числа','','§§1–11: положительные и отрицательные числа, модуль, Z и Q, сравнение, действия, законы.','math_6_ch4.html',11,'rose',4,1,'math-6'),
|
||||
('math-6-ch5','math',6,'Математика 6 · Координатная плоскость','','§§1–5: декартова система координат, графики реальных процессов, графики прямой и обратной пропорциональности.','math_6_ch5.html',5,'emerald',5,1,'math-6'),
|
||||
('math-6-ch6','math',6,'Математика 6 · Наглядная геометрия','','§§1–5: тела и развёртки, окружность и круг (C, S), виды треугольников, центральная и осевая симметрия.','math_6_ch6.html',6,'amber',6,1,'math-6');
|
||||
```
|
||||
> `para_count` хаба = сумма детей (12+9+5+11+5+6 = 48) — так агрегируется прогресс (см. [046_chemistry7_hub.sql](backend/src/db/migrations/046_chemistry7_hub.sql), хаб=26=сумма). Применение: `npm run migrate` (раннер [migrations-runner.js](backend/src/db/migrations/migrations-runner.js) сортирует и применяет в транзакции, ведёт `_migrations`).
|
||||
|
||||
---
|
||||
|
||||
## 3. Дизайн-система
|
||||
|
||||
- **Шрифты:** Outfit (заголовки), Inter (текст), Unbounded (бейджи XP) — как в hub-образце.
|
||||
- **Палитра глав** (CSS-переменные на каждой странице):
|
||||
|
||||
| Глава | Цвет | hex |
|
||||
|---|---|---|
|
||||
| 1. Десятичные дроби | indigo | `#4f46e5` |
|
||||
| 2. Проценты и пропорции | cyan | `#0891b2` |
|
||||
| 3. Множество | violet | `#7c3aed` |
|
||||
| 4. Рациональные числа | rose | `#e11d48` |
|
||||
| 5. Координатная плоскость | emerald | `#059669` |
|
||||
| 6. Наглядная геометрия | amber | `#d97706` |
|
||||
|
||||
- **Тёмная тема** — через `html.dark` (копировать `initTheme`, ключ `math6_chN_theme`).
|
||||
- **Иконки — только inline SVG `.ic`. ⛔ Никаких эмоджи** (правило проекта).
|
||||
- **Десятичная запятая в KaTeX:** русская запись `2,35` пишется как `2{,}35` (`2,35` без скобок даёт лишний пробел). Это критично для всей Главы 1.
|
||||
- **Адаптив:** сетка карточек глав `1fr` → `1fr 1fr` при ≥680px; сайдбар sticky на десктопе, сворачивается на мобильном.
|
||||
|
||||
---
|
||||
|
||||
## 4. Геймификация (как в algebra_7)
|
||||
|
||||
- **Прогресс по §:** `STATE.progress[pN]` 0–100; ≥50% → `markParaRead`; 100% → ачивка.
|
||||
- **XP/уровни:** `addXp(n, src)` локально + `window.LS.xp.add(n, 'math6-chN-…')` на сервер; уровень `calcLevel`.
|
||||
- **Финал главы** = страница-босс (5–6 итоговых задач), +50 XP за полное прохождение (как `final1` в algebra_7).
|
||||
- **Курсовой финал** на хабе: 6–8 боссов по всем главам + ачивка **«Математик 6 класса»** (+150 XP) — по образцу `chemistry_7_hub.html`.
|
||||
- **localStorage-ключи:** `math6_chN_progress`, `math6_chN_achievements`, `math6_xp`, `math6_chN_theme`.
|
||||
- **Синк прогресса:** `_TB_SLUG = 'math-6-chN'` → POST `/api/textbooks/math-6-chN/progress`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Фазы реализации
|
||||
|
||||
> Каждая глава = отдельная фаза, наполняется **волнами** (2–4 § за волну): добавить `buildPN` + записи в `PARAS`/`SIDEBARS`/`TIPS`/`GLOSSARY` + тест + коммит. После каждой волны — `git add` поимённо + `commit` + `push` (правило проекта).
|
||||
|
||||
### Phase 0 — Инфраструктура (фундамент)
|
||||
**Цель:** учебник появляется в каталоге, все 6 глав открываются (каркасы с заглушками), тест зелёный.
|
||||
- [ ] Изучить `geom7_svg.js` (`window.GEOM7`) и `alg10_svg.js` (координатная сетка) — что переиспользовать.
|
||||
- [ ] `frontend/js/math6_svg.js` (`window.Math6`): `plane()` (оси, сетка, точки, четверти), `numberLine()`, `circle(r)` (+ C, S), `triangle(type)`, `solid(kind)`+`net(kind)` (куб/призма/пирамида/цилиндр/конус), `reflectPoint`/`reflectLine`.
|
||||
- [ ] `frontend/css/math6.css` — тема + общие классы карточек/сайдбара (вынести из inline algebra_7, чтобы 6 страниц не дублировали стили).
|
||||
- [ ] `math_6_hub.html` — 6 карточек глав (палитра выше), общий прогресс, свёрнутый курсовой финал (боссы пока заглушка).
|
||||
- [ ] `math_6_ch1.html … ch6.html` — скопировать скелет `algebra_7_ch1.html`; задать `_TB_SLUG`, палитру, `PARAS` по реальной программе; `BUILDERS` — временные заглушки (`para-hero` + «содержание готовится» + кнопка «прочитал»).
|
||||
- [ ] `049_math6_hub.sql` + `npm run migrate`.
|
||||
- [ ] `backend/tests/math6-page.test.js`: хаб рендерит 6 `.ch-card`; каждая глава — корректное число `.psel-card`, первый § активен, нет JS-ошибок.
|
||||
- [ ] Коммит `feat(math6): Phase 0 — инфраструктура учебника (хаб + 6 каркасов)`.
|
||||
|
||||
### Phase 1 — Глава 1. Десятичные дроби (10 § + финал + прикладной)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Запись и разряды | **Разрядная таблица-конструктор**: перетащить цифры в разряды (единицы…тысячные), показать значение; чтение/запись дроби |
|
||||
| §2 Сравнение и округление | Числовая прямая + тренажёр `>,<,=`; округление с подсветкой нужного разряда |
|
||||
| §3 Координатный луч | Интерактивный луч: поставить точку по дроби / прочитать дробь по точке (`Math6.numberLine`) |
|
||||
| §4 Сложение и вычитание | Сложение «в столбик» с анимацией выравнивания запятой |
|
||||
| §5 Умножение/деление на разрядную единицу | Слайдер сдвига запятой при ×/÷ 10, 100, 1000 |
|
||||
| §6 Умножение десятичных | Тренажёр + правило подсчёта знаков после запятой |
|
||||
| §7 Деление на натуральное число | Пошаговое деление «уголком» |
|
||||
| §8 Деление на десятичную дробь | Приём переноса запятой (×10ⁿ у делимого и делителя) |
|
||||
| §9 Конечные и бесконечные дроби | Классификатор: конечная / периодическая; период в скобках `0,(3)` |
|
||||
| §10 Преобразования | Конвертер «обыкновенная ↔ десятичная»; смешанные выражения |
|
||||
| §11→Финал | 5 боссов на все действия с десятичными |
|
||||
| §12 Математика вокруг нас | Прикладные задачи: деньги, чеки, измерения |
|
||||
|
||||
### Phase 2 — Глава 2. Проценты и пропорции (7 § + финал + прикладной)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Проценты | Конвертер «дробь ↔ % ↔ десятичная»; визуал — квадрат 10×10 (100 клеток) |
|
||||
| §2 Основные задачи на проценты | 3 типа задач + блок-схема «алгоритм определения типа» (из приложения учебника, стр.2) |
|
||||
| §3 Пропорция и её свойство | Основное свойство «крест-накрест» `a·n = b·m`; проверка/составление пропорции |
|
||||
| §4 Прямая и обратная зависимость | Классификатор зависимости + 2 таблицы/графика |
|
||||
| §5 Решение задач с помощью пропорций | Пошаговый решатель (что куда подставить) |
|
||||
| §6 Масштаб | Карта + линейка; перевод масштаба (`1:N`) |
|
||||
| §7 Круговые диаграммы | Построитель: данные → сектора (градусы/проценты), как «суточная норма БЖУ» из приложения |
|
||||
| §8→Финал | 5 боссов: проценты + пропорции |
|
||||
| §9 Математика вокруг нас | Скидки, вклады, статистика |
|
||||
|
||||
### Phase 3 — Глава 3. Множество (4 § + финал)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Множество и элементы | Конструктор множества, `∈ / ∉`, пустое множество `∅` |
|
||||
| §2 Способы задания | Перечисление ↔ характеристическое свойство |
|
||||
| §3 Операции (∩, ∪) | Интерактивная диаграмма двух областей: пересечение, объединение |
|
||||
| §4 Круги Эйлера | Круги Эйлера (`Math6`) + задачи на подсчёт элементов |
|
||||
| §5→Финал | 5 боссов на множества и круги Эйлера |
|
||||
|
||||
### Phase 4 — Глава 4. Рациональные числа (9 § + финал + прикладной)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Положит./отриц. Координатная прямая | Термометр/прямая: ставить и читать точки |
|
||||
| §2 Модуль. Противоположные. Z и Q | `|x|` на прямой; вложенная диаграмма **N ⊂ Z ⊂ Q** (из приложения учебника) |
|
||||
| §3 Сравнение рациональных | Тренажёр сравнения по координатной прямой |
|
||||
| §4 Сложение | Модель «долги/имущество» (стрелки на прямой) |
|
||||
| §5 Вычитание | Вычитание = прибавление противоположного |
|
||||
| §6 Законы сложения | Переместительный/сочетательный — оптимизация суммы |
|
||||
| §7 Умножение | Таблица знаков `(+/-)·(+/-)` + тренажёр |
|
||||
| §8 Деление | Знаки при делении + тренажёр |
|
||||
| §9 Все действия | Порядок действий, смешанный тренажёр |
|
||||
| §10→Финал | 6 боссов на все действия с рациональными |
|
||||
| §11 Математика вокруг нас | Температуры, координаты, долги |
|
||||
|
||||
### Phase 5 — Глава 5. Координатная плоскость (3 § + финал + прикладной)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Декартова система координат | Плоскость: ставить/читать точки `(x; y)`, определять четверть (`Math6.plane`) |
|
||||
| §2 График. Графики реальных процессов | Чтение графика (движение/температура); построение по таблице |
|
||||
| §3 Графики прямой/обратной пропорциональности | `y = kx` и `y = k/x`, слайдер `k`, форма графика (прямая/гипербола) |
|
||||
| §4→Финал | 5 боссов: координаты + графики |
|
||||
| §5 Математика вокруг нас | Графики из жизни (расписание, прогноз) |
|
||||
|
||||
### Phase 6 — Глава 6. Наглядная геометрия (5 § + финал)
|
||||
| § | Интерактив |
|
||||
|---|---|
|
||||
| §1 Тела и развёртки | Галерея 3D-тел (куб, призма, пирамида, цилиндр, конус) + интерактивные развёртки |
|
||||
| §2 Окружность. Круг. C и S | `C = πd = 2πr`, `S = πr²`; слайдер радиуса, значение π (как в приложении) |
|
||||
| §3 Виды треугольников | Классификатор по сторонам (разносторонний/равнобедренный/равносторонний) и по углам (остро-/прямо-/тупоугольный) — таблица из приложения, DnD `setupSorter` |
|
||||
| §4 Симметрия относительно точки | Центральная симметрия: построить образ точки/фигуры |
|
||||
| §5 Симметрия относительно прямой | Осевая симметрия (зеркало) + Финал главы (5 боссов) |
|
||||
|
||||
### Phase 7 — Финалы, курсовой финал, глоссарий, полировка
|
||||
- [ ] Курсовой финал на хабе: 6–8 боссов (по 1 на главу) + ачивка «Математик 6 класса».
|
||||
- [ ] Заполнить `SIDEBARS` (шпаргалки) и `TIPS` во всех 38 §; собрать общий `GLOSSARY` (десятичная дробь, разряд, процент, пропорция, масштаб, множество, пересечение/объединение, модуль, рациональное число, координата, абсцисса/ордината, развёртка, симметрия…).
|
||||
- [ ] Прогон тестов, проверка KaTeX-запятых, тёмной темы, мобильной вёрстки.
|
||||
|
||||
### Phase 8 — Доступ и проверка в браузере
|
||||
- [ ] Выдать доступ ученикам/классам: новый хаб **по умолчанию закрыт** (allowlist, [040_content_access.sql](backend/src/db/migrations/040_content_access.sql)) → admin/teacher даёт `POST /api/access/rules { content_type:'textbook', content_ref:'math-6', scope:'class', target_id, allow:1 }`. См. [[project_content_access]].
|
||||
- [ ] Проверка в реальном браузере: каталог → хаб → каждая глава, прогресс, синк, боссы.
|
||||
|
||||
---
|
||||
|
||||
## 6. Паттерн волны (рецепт для Sonnet)
|
||||
|
||||
1. Открыть нужную `math_6_chN.html`, найти `BUILDERS` и заглушку `buildPk`.
|
||||
2. Написать `buildPk()`: `makeCard('theory'|'rule'|'example', …)` для теории (2–3 карточки) + блок интерактива (`.wg`) + `secNav(prev,next)` + кнопка «прочитал». В конце — `box.innerHTML=…; renderMath(box);` и навесить обработчики.
|
||||
3. Сложную графику рисовать через `window.Math6` (или `GEOM7`); формулы — KaTeX (`2{,}5`).
|
||||
4. Добавить запись в `SIDEBARS[pk]`, `TIPS`, релевантные `GLOSSARY`.
|
||||
5. Тест: открыть страницу в jsdom, проверить, что `buildPk` смонтировал ключевой узел и нет JS-ошибок.
|
||||
6. **Верифицировать персист** правок (см. гочи ниже) → `git add` поимённо → `commit` (`feat(math6): глава N §a–§b`) → `push`.
|
||||
|
||||
---
|
||||
|
||||
## 7. Критические правила и «гочи» (из памяти проекта)
|
||||
|
||||
- ⛔ **Эмодзи запрещены** — только inline SVG `.ic`. См. [[feedback_no_emoji]].
|
||||
- ⛔ **Grep-инструмент запрещён.** Поиск: `ast-index` (символы/usages) + `vex` (semantic). Чтение — `Read` с offset/limit, файлы — `Glob`. См. [[reference_vex_search]].
|
||||
- ⚠️ **Cyrillic-FS флака** (путь `G:\Dev\Тесты\…`): `Edit` иногда рапортует success, но **не персистит** пакет правок. После пакета Edit'ов — проверить персист (`node -e "fs.readFileSync(...).includes('маркер')"` через Bash) и только потом коммитить. См. [[feedback_verify_edits_applied]], [[project_chemistry7_textbook]].
|
||||
- **БД:** встроенный `node:sqlite` (`DatabaseSync`), НЕ better-sqlite3. Живая БД `backend/data/learnspace.db`. См. [[reference_sqlite_node]].
|
||||
- **Тесты:** запускать через `node -e "require('./tests/math6-page.test.js')"` (надёжнее резолвит кириллицу, чем `node --test <file>`); baseline — 3 предсуществующих Auth-фейла (не трогать).
|
||||
- **Параллельные сессии в одной ветке:** `git fetch` перед работой, `add` поимённо, без слепого force-push. См. [[project_concurrent_sessions_branch]].
|
||||
- **KaTeX без `katex`-пакета в jsdom** — рендер формул в тестах не вызывать на узлах, требующих canvas; проверять структуру, не визуал.
|
||||
|
||||
---
|
||||
|
||||
## 8. Чек-лист приёмки
|
||||
|
||||
- [ ] `/textbooks` показывает карточку «Математика — 6 класс» (после выдачи доступа).
|
||||
- [ ] Хаб открывает 6 глав; общий прогресс агрегируется.
|
||||
- [ ] Все 38 содержательных § наполнены теорией + рабочим интерактивом.
|
||||
- [ ] 6 финалов глав + курсовой финал с ачивкой «Математик 6 класса».
|
||||
- [ ] Прогресс/XP синкаются на сервер; localStorage-ключи `math6_*`.
|
||||
- [ ] Формулы (десятичные запятые!) рендерятся корректно; тёмная тема и мобильная вёрстка ок.
|
||||
- [ ] `backend/tests/math6-page.test.js` зелёный; полный прогон без новых регрессий.
|
||||
- [ ] Всё закоммичено поимённо и запушено в `master`.
|
||||
|
||||
---
|
||||
|
||||
### Оценка объёма
|
||||
6 глав · 38 содержательных § + 6 финалов + курсовой финал. По темпу Химии 7 (волны по 2–4 §) — **Phase 0 ≈ 1 заход**, далее **≈ 12–16 волн** на наполнение. Фундамент (скелет из algebra_7) переиспользуется на 90% — основная работа в `buildPN()` и `Math6`-графике (Главы 5–6 самые «рисовательные»).
|
||||
Reference in New Issue
Block a user