feat(chemistry-8): Phase 0 — каркас учебника «Химия 8» (hub + 7 глав)

Архитектура hub + главы (как физика 7–11, алгебра, геометрия), не монолит.
- chemistry_8_hub.html: хаб-каталог 7 разделов, amber-палитра, прогресс из
  /api/textbooks/chemistry-8/children, achievement «Химик 8 класса»
- 7 каркасов глав (вводный + гл.1–6, §1–52) с оглавлением и баннером «в разработке»
- /js/chem8_svg.js: неймспейс Chem8 (formula/ionLabel/chemEq готовы, 13 хелперов-заглушек)
- миграция 041: родитель chemistry-8 + 7 детей (parent_slug), para_count сумма = 52
- gen_chem8_skeletons.js: генератор каркасов глав
- tests/chemistry8.test.js: 9 тестов (примитивы + целостность каркаса), все зелёные
- PLAN_CHEMISTRY_8.md обновлён под hub-архитектуру

Источник: Шиманович, Красицкий, Сечко, Хвалюк. Химия 8, Народная асвета, 2018.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
Maxim Dolgolyov
2026-05-30 14:10:21 +03:00
parent b6dedfe516
commit 67b95234d0
13 changed files with 2454 additions and 0 deletions
+417
View File
@@ -0,0 +1,417 @@
# План реализации: Химия 8 (Беларусь) — интерактивный наглядный учебник
> Цель: создать **с нуля** интерактивный наглядный учебник по всей программе 8 класса
> в **современной архитектуре hub + главы** (как Физика 7–11 / Алгебра / Геометрия —
> НЕ как легаси-монолит `chemistry_9.html`), на уровне их качества, с поправкой на
> содержание 8 класса: **количественные понятия (моль, M, Vm, расчёты по уравнениям),
> классы неорганических соединений, периодический закон, строение атома, химическая
> связь, ОВР, растворы.**
>
> **Архитектура (утверждена):** `chemistry_8_hub.html` (хаб-каталог глав) + **7 файлов глав**
> (вводный раздел + 6 глав книги). В БД — родитель `chemistry-8` + 7 детей с `parent_slug`.
> Каждая глава — самостоятельная страница со своими § (см. карту ниже), модульный
> CSS/JS на предмет. Единый стандарт с планом Химии 9 ([[plans/textbooks-9/PLAN_CHEMISTRY_9.md]]).
---
## 🎯 Источник
| Параметр | Значение |
|----------|----------|
| Книга | `himiya_8kl_shimanovich_rus_2018 (1).pdf` |
| Авторы | Шиманович И. Е., Красицкий В. А., Сечко О. И., Хвалюк В. Н. |
| Изд. | Минск, «Народная асвета», 2018, 243 с. (тираж 116 000) |
| Структура | **Вводный раздел + 6 глав, 52 §, 4 лабораторных опыта, 4 практические работы** |
| Справочные таблицы | ПСХЭ Менделеева, таблица растворимости, ряд активности металлов (форзацы) |
PDF лежит в `G:\Dev\Тесты\Методички\тест_6 класс\Книги\`. Оглавление — стр. 238–239 PDF.
> **Важные отличия от Химии 9:**
> 1. Страниц химии-8 **ещё нет** — строим с нуля. Каркас берём у **современных hub-учебников**
> (`physics_9_hub.html` + `physics_9_chN.html`), а НЕ у легаси-монолита `chemistry_9.html`.
> 2. Описательной химии металлов/неметаллов в 8 классе **нет** (это 9 класс) — акцент на
> количественные расчёты, классификацию веществ, строение атома и химическую связь, ОВР.
>
> **Соответствие «раздел книги → файл главы → slug»:**
>
> | Раздел книги | § | Файл | slug | Цвет |
> |---|---|---|---|---|
> | Вводный: Количественные понятия | 19 | `chemistry_8_intro.html` | `chemistry-8-intro` | amber |
> | Гл.1 Классы неорг. соединений | 1023 | `chemistry_8_ch1.html` | `chemistry-8-ch1` | teal |
> | Гл.2 Периодический закон и ПСХЭ | 2428 | `chemistry_8_ch2.html` | `chemistry-8-ch2` | indigo |
> | Гл.3 Строение атома | 2935 | `chemistry_8_ch3.html` | `chemistry-8-ch3` | blue |
> | Гл.4 Химическая связь | 3641 | `chemistry_8_ch4.html` | `chemistry-8-ch4` | green |
> | Гл.5 ОВР | 4245 | `chemistry_8_ch5.html` | `chemistry-8-ch5` | deep-orange |
> | Гл.6 Растворы | 4652 | `chemistry_8_ch6.html` | `chemistry-8-ch6` | cyan |
>
> Хаб: `chemistry_8_hub.html` / slug `chemistry-8` (родитель в каталоге).
---
## 📗 ПОЛНАЯ КАРТА СОДЕРЖАНИЯ (52 §)
Колонка **«Интерактив»** — главный наглядный элемент сверх текста (минимум 1 «звёздный»
виджет на §; полный набор — в стандарте ниже).
### ВВОДНЫЙ РАЗДЕЛ. Повторение курса 7 класса. Количественные понятия в химии (§§1–9) — *amber*
| § | Тема | Ключ | Интерактив (звёздный виджет) |
|---|------|------|------------------------------|
| §1 | Атомы. Химические элементы. Относительная атомная масса | $Z$, символ, $A_r$ | **miniPeriodic** + поиск $A_r$ по элементу; модель атома |
| §2 | Молекулы. Простые/сложные вещества. Химические формулы. $M_r$ | формула, индексы, $M_r=\sum A_r$ | **Конструктор формул** + калькулятор $M_r$ (biochem-core) |
| §3 | Химическое количество вещества | понятие «порция», $n$ | Визуализация «порции вещества» (частицы → моль) |
| §4 | Моль — единица количества вещества. Постоянная Авогадро | $N=n\cdot N_A$, $N_A=6{,}02\cdot10^{23}$ | **Счётчик частиц** $N\leftrightarrow n$, масштаб $N_A$ |
| §5 | Молярная масса. Молярный объём газов | $M$ (г/моль), $V_m=22{,}4$ л/моль (н.у.) | Калькулятор $M$ + газовая модель ($V_m$) |
| §6 | Вычисление $n$ по $m$ и $m$ по $n$ | $n=\dfrac{m}{M}$ | **Треугольник $n$–$m$–$M$** (интерактивный калькулятор-тренажёр) |
| §7 | Вычисление $n$ газа по $V$ и $V$ по $n$ | $n=\dfrac{V}{V_m}$ | Калькулятор $V=n\cdot V_m$ + связка $m$$n$$V$$N$ |
| §8 | Химические реакции | признаки, закон сохранения массы, балансировка | **Балансировщик уравнений** (анимация коэффициентов) + классификатор типов реакций |
| §9 | Количественные расчёты по уравнениям реакций | стехиометрия, мольные отношения | **sim `stoichiometry`** + пошаговый решатель «дано → по уравнению» |
**Практическая работа 1** (после §7): «Химическое количество вещества».
### ГЛАВА 1. Важнейшие классы неорганических соединений (§§1023) — *teal/cyan*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §10 | Оксиды. Состав и классификация | $Э_xO_y$; осн./кисл./амфот./несолеобр. | **Классификатор оксидов** (drag формулы → класс) + конструктор формул оксидов по валентности |
| §11 | Химические свойства оксидов | осн.оксид+кислота/вода; кисл.оксид+щёлочь/вода | **Матрица реакций оксидов** (`chemEq`, признаки) |
| §12 | Получение и применение оксидов | горение, разложение; применение | Схемы получения + инфографика применения |
| §13 | Кислоты. Состав и классификация | $H_xAc$; бескисл./кислородсод., основность | **Классификатор кислот** + `indicatorScale` (лакмус/метилоранж) |
| §14 | Химические свойства кислот | + Me (ряд активности), + осн.оксид, + основание, + соль | **Реакции кислот** (4 типа) + ряд активности + `indicatorScale` |
| §15 | Получение и применение кислот | кисл.оксид+вода, соль+кислота | Схемы получения + инфографика |
| §16 | Основания | $Me(OH)_n$; щёлочи/нерастворимые | Конструктор $Me(OH)_n$ + `indicatorScale` (фенолфталеин малиновый) |
| §17 | Химические свойства оснований | нейтрализация, +кисл.оксид, +соль, разложение | **Реакция нейтрализации** (анимация) + `indicatorScale` |
| §18 | Получение и применение оснований | Me+вода, щёлочь+соль | Схемы; **Лаб.1**: получение нерастворимого основания (`testTube` $Cu(OH)_2$↓ голубой) |
| §19 | Соли. Состав и классификация | катион×анион; средние/кислые/основные | **Конструктор солей** (катион×анион) + `solubilityTable` |
| §20 | Химические свойства солей | РИО (↓↑), соль+Me (ряд активности) | `solubilityTable` + предсказатель РИО; **Лаб.2**: соли+металлы |
| §21 | Получение и применение солей | 8+ способов получения | **Матрица способов получения солей** |
| §22 | Взаимосвязь между классами неорг. веществ | генетическая связь Me/неMe → оксид → гидроксид → соль | **Генетическая карта-граф** (интерактивные переходы) |
| §23 | Решение расчётных задач по теме | расчёты по классам, по уравнениям | **sim `stoichiometry`** + тренажёр расчётов |
**Лаб. опыт 1** (после §18): получение нерастворимого основания.
**Практическая работа 2** (после §18): изучение реакции нейтрализации.
**Лаб. опыт 2** (после §20): взаимодействие растворов солей с металлами.
**Практическая работа 3** (после §22): решение экспериментальных задач.
### ГЛАВА 2. Периодический закон и периодическая система (§§2428) — *indigo/violet*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §24 | Систематизация химических элементов | ранние классификации, металлы/неметаллы | Сортировщик элементов (Me/неMe/амфот.) |
| §25 | Понятие об амфотерности | $Zn(OH)_2, Al(OH)_3$ + кислота **и** + щёлочь | **Амфотерность** (`testTube`, обе реакции); **Лаб.3**: гидроксид цинка |
| §26 | Естественные семейства элементов | щелочные, ЩЗМ, галогены, инертные | **miniPeriodic** — подсветка семейств, тренды свойств |
| §27 | Периодический закон Д. И. Менделеева | формулировка, периодичность | **Демонстрация периодичности** (карточки-раскладка элементов) |
| §28 | Периодическая система химических элементов | период/группа/подгруппа, структура | **Интерактивная ПСХЭ** (sim `periodic`) + разбор структуры |
**Лаб. опыт 3** (после §25): получение гидроксида цинка и изучение амфотерных свойств.
### ГЛАВА 3. Строение атома и периодичность свойств (§§29–35) — *blue*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §29 | Строение атома. Атомный номер | ядро ($p^+,n^0$) + $e^-$, $Z$ | **Модель атома** (sim `bohratom`) — сборка по $Z$ |
| §30 | Массовое число атома. Нуклиды | $A=Z+N$, нуклид | Калькулятор $A=Z+N$ + конструктор нуклида |
| §31 | Изотопы. Явление радиоактивности | одинаковый $Z$, разный $N$; распад | Изотопы-конструктор + sim `radioactive` + расчёт $A_r$ по изотопам |
| §32 | Состояние электронов. Электронное облако. Орбиталь | $s,p,d$ орбитали, форма облака | **3D-облака орбиталей** (sim `orbitals`) |
| §33 | Строение электронных оболочек атомов | уровни, $2n^2$, конфигурация | **Конструктор электронной конфигурации** (`orbitalDiagram`, заполнение) |
| §34 | Периодичность изменения свойств атомов | радиус, ЭО, металличность по периоду/группе | **Графики трендов** (slider период/группа → свойство) |
| §35 | Характеристика элемента по положению в ПС | алгоритм «паспорта» элемента | **Генератор «паспорта элемента»** (пошагово) |
### ГЛАВА 4. Химическая связь (§§36–41) — *green*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §36 | Природа химической связи | октет, энергия связи, устойчивость | Анимация «почему атомы соединяются» |
| §37 | Ковалентная связь | общие электронные пары, схемы Льюиса | **Конструктор e-пар** + структурные формулы (biochem-core) |
| §38 | Неполярная и полярная ков. связь. ЭО | $\Delta$ЭО → полярность, диполь | **Slider ЭО → тип связи** + диполь; **Лаб.4**: модели молекул (biochem-core 3D) |
| §39 | Ионная связь | передача $e^-$, ионная решётка | **Анимация $Na\to Cl$** + решётка $NaCl$ |
| §40 | Металлическая связь. Межмолекулярное взаимодействие | «электронный газ», водородная связь | **Модель электронного газа** + водородная связь |
| §41 | Кристаллическое состояние вещества | 4 типа решёток → свойства | **4 типа решёток** (3D) + связь «тип → свойства» |
**Лаб. опыт 4** (после §38): составление моделей молекул.
### ГЛАВА 5. Окислительно-восстановительные реакции (§§4245) — *deep-orange*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §42 | Степень окисления | правила, расчёт по формуле | **Калькулятор степени окисления** (любая формула) |
| §43 | Процессы окисления и восстановления | отдача/приём $e^-$, окислитель/восстановитель | Визуализация переноса $e^-$ |
| §44 | Окислительно-восстановительные реакции | метод электронного баланса | **Балансировщик ОВР** (пошаговый e-баланс) |
| §45 | ОВР вокруг нас | горение, коррозия, дыхание, батарейки | Инфографика-исследование ОВР в жизни |
### ГЛАВА 6. Растворы (§§4652) — *cyan*
| § | Тема | Ключ | Интерактив |
|---|------|------|------------|
| §46 | Смеси веществ | однородные/неоднородные, разделение | Классификатор смесей + методы разделения |
| §47 | Растворение веществ в воде | гидратация, тепловой эффект | **Анимация растворения** (`dissociationAnim`) |
| §48 | Характеристики растворимости веществ | $s=f(t)$, насыщ./ненасыщ. | **График растворимости** + `solubilityTable` |
| §49 | Качественные характеристики состава растворов | насыщ./ненасыщ./разб./конц. | Качественная шкала «крепости» раствора |
| §50 | Количественные характеристики. Массовая доля | $w=\dfrac{m_{в-ва}}{m_{р-ра}}$ | **Калькулятор $w$** (sim `solutions`) |
| §51 | Молярная концентрация растворённых веществ | $c=\dfrac{n}{V}$, разбавление, смешение | **Калькулятор $c$** + разбавление/смешение |
| §52 | Вода и растворы в жизни и деятельности человека | значение, очистка, быт | Инфографика-исследование |
**Практическая работа 4** (после §51): приготовление раствора с заданной $w$ и $c$.
**Итого**: 52 §, вводный раздел + 6 глав, **4 лаб. опыта** (§18, §20, §25, §38), **4 практические работы** (§7, §18, §22, §51).
---
## ⚗️ ХИМИЧЕСКИЙ СТАНДАРТ КАЧЕСТВА
### A. Движки и переиспользуемые активы (всё уже есть в проекте)
| Что нужно | Берём из | Файл / id |
|-----------|----------|-----------|
| Парсинг формул, $M$/$M_r$, формула Хилла | biochem-core | `frontend/js/biochem-core.js` ✅ |
| 2D/3D шаростержневые модели, VSEPR | biochem-core | `frontend/js/biochem-core.js` ✅ |
| Интерактивная ПСХЭ | sim `periodic` | реестр `_register-all.js` ✅ |
| Модель атома (Бор) | sim `bohratom` | реестр ✅ |
| Орбитали | sim `orbitals` | реестр ✅ |
| Радиоактивность/изотопы | sim `radioactive` | реестр ✅ |
| Стехиометрия | sim `stoichiometry` | реестр ✅ |
| Титрование (нейтрализация) | sim `titration` | реестр ✅ |
| Качественный анализ | sim `qualanalysis` | реестр ✅ |
| Растворы / массовая доля | sim `solutions` | реестр ✅ |
| Песочница реакций | sim `chemsandbox` | реестр ✅ |
Монтаж: контейнер `<div id="sim-<id>"></div>` + `openSim('<id>')` (или прямой mount
через `window.LabRegistry`), как на остальных страницах.
### B. Общий хелпер `/js/chem8_svg.js` (по образцу `geom7_svg.js`, `alg10_svg.js`)
> **Рекомендация:** химические примитивы 8 и 9 классов сильно пересекаются. Реализовать
> файл так, чтобы его можно было продвинуть в **общий `/js/chem_svg.js`** (план Химии 9
> ссылается на `chem9_svg.js` — при совместной разработке свести в один shared-модуль и
> переиспользовать оба). Молекулы — **только через `biochem-core.js`**, не дублировать.
```js
// 1. Рендер уравнения реакции: коэффициенты, состояния (↑↓), стрелки, условия над стрелкой
const chemEq = (src, opts={}) => { /* токенизация формул, верхн./нижн. индексы, →/⇌/→[t°] */ };
// 2. Ион с зарядом: ionLabel('SO4', -2) → 'SO₄²⁻'
const ionLabel = (formula, charge) => { /* нижние индексы + надстрочный заряд */ };
// 3. Пробирка с осадком/газом/окраской (SVG-анимация)
const testTube = ({fill, precipitate, gas, color, label}) => { /* svg */ };
// 4. Треугольник n–m–M (звёздный виджет §6): кликаешь искомое → формула + калькулятор
const moleTriangle = (mount, {solveFor}) => { /* n=m/M, m=n·M, M=m/n */ };
// 5. Балансировщик уравнений (§8): подбор коэффициентов, проверка баланса атомов
const equationBalancer = (mount, {skeleton}) => { /* матрица атомов, подсветка дисбаланса */ };
// 6. Калькулятор степени окисления (§42): формула → с.о. каждого элемента (правила)
const oxStateCalc = (mount, {formula}) => { /* разбор, правила H+1/O−2/Σ=0 */ };
// 7. Балансировщик ОВР методом e-баланса (§44): полуреакции, НОК, коэффициенты
const redoxBalancer = (mount, {skeleton}) => { /* окислитель/восстановитель, Δe⁻ */ };
// 8. Орбитальная диаграмма (§33): orbitalDiagram('1s2 2s2 2p4') → клетки + ↑↓
const orbitalDiagram = (config) => { /* svg клетки, принцип Хунда/Паули */ };
// 9. Интерактивная таблица растворимости (§19,20,48): подсветка пары катион×анион (Р/Н/М/—)
const solubilityTable = (mount, {highlight}) => { /* из форзаца книги */ };
// 10. Интерактивный ряд активности металлов (§14,20): клик → предсказание реакции
const activitySeries = (mount, opts) => { /* K Ca Na Mg Al Zn Fe ... Au + (H₂) */ };
// 11. Мини-ПСХЭ с подсветкой (§1,26,34): элемент/группа/период/семейство
const miniPeriodic = (mount, {highlight, onClick}) => { /* интерактивная сетка */ };
// 12. Индикатор + шкала pH (§13,14,16,17): лакмус/фенолфталеин/метилоранж
const indicatorScale = (mount, {ph, indicator}) => { /* цвет полоски */ };
// 13. Анимация растворения/гидратации (§47): частицы воды окружают ионы/молекулы
const dissociationAnim = (mount, {substance}) => { /* canvas/SVG-частицы */ };
// 14. Классификатор-DnD (§10,13,16,19,46): drag формулы → класс/тип; проверка
const classifier = (mount, {items, buckets}) => { /* оксиды/кислоты/основания/соли/смеси */ };
// 15. Генетическая карта-граф (§22): Me/неMe → оксид → гидроксид → соль, клик-переходы
const geneticMap = (mount, opts) => { /* SVG-граф классов + рендер реакции перехода */ };
```
### C. Правила рендера химии (обязательны с §1)
1. **Формулы веществ** — нижние индексы для атомов ($H_2O$, $CaCO_3$), верхние для зарядов
ионов ($SO_4^{2-}$) и степеней окисления ($\overset{+2}{Ca}$); единый рендер через
`chemEq`/`ionLabel`, не «сырой» текст.
2. **Уравнения реакций** — всегда сбалансированы; стрелки `=`/`→` (необратимая),
`⇌` (обратимая), `↑` (газ), `↓` (осадок), условия над стрелкой ($t$, кат., эл.ток).
3. **Состояние/признак** — для качественных реакций показывать цвет осадка, пузырьки газа,
изменение окраски индикатора (через `testTube`/`indicatorScale`).
4. **Количественные расчёты** — каждый расчётный § даёт калькулятор/тренажёр с пошаговым
решением (дано → формула → подстановка → ответ с единицами), не только готовый ответ.
5. **Молекулярные модели** — структурная формула + 3D (biochem-core) для каждой изучаемой
молекулы (§37–38, §41); для типов решёток — 3D-ячейки.
6. **Цвета — химически достоверные**: осадки ($Cu(OH)_2$ голубой, $Fe(OH)_3$ бурый,
$Zn(OH)_2$ белый); индикаторы (фенолфталеин в щёлочи малиновый, лакмус в кислоте красный,
метилоранж в кислоте розовый).
7. **Безопасность** — где уместно (растворение кислот/щелочей, разбавление) — заметка-«скрепка».
8. **KaTeX-эскейпы** — в JS-шаблонах двойной backslash (`\\to`, `\\downarrow`, `\\rightleftharpoons`).
9. **Drag/слайдеры**`window`-listeners + `{passive:false}` + state ВЫШЕ `redraw()`
(стандарт геометрии), `touch-action:none` на draggable SVG/canvas, **без `setPointerCapture`**.
10. **Без эмоджи** — только inline SVG `.ic`/`.ico` (правило проекта [[feedback_no_emoji]]).
### D. Типы интерактивов по темам 8 класса
| Тип темы | Интерактив |
|----------|------------|
| Количество вещества (§3–7, 9) | `moleTriangle`, калькуляторы $M/V_m/N$, sim `stoichiometry` |
| Химические реакции (§8) | `equationBalancer`, классификатор типов |
| Классы соединений (§10–21) | `classifier`, матрицы реакций, `indicatorScale`, `solubilityTable`, `activitySeries` |
| Генетическая связь (§22) | `geneticMap` |
| Периодический закон / ПСХЭ (§24–28, 34) | `miniPeriodic`, sim `periodic`, графики трендов |
| Строение атома (§29–33) | sim `bohratom`, sim `orbitals`, sim `radioactive`, `orbitalDiagram` |
| Химическая связь (§36–41) | slider ЭО, biochem-core 3D, ионная/металлич. решётка, 4 типа кристаллов |
| ОВР (§4244) | `oxStateCalc`, `redoxBalancer`, визуализация переноса $e^-$ |
| Растворы (§46–52) | `dissociationAnim`, график растворимости, sim `solutions`, калькулятор $c$ |
| Качественные/амфотерность (§18,25) | `testTube` + уравнение + признак |
---
## 📦 СТРУКТУРА КАЖДОГО § (стандарт наполнения)
**Теория (3–4 карточки):**
- `theory` — основное определение/понятие + наглядная SVG/модель
- `rule` — ключевая закономерность/формула (рамка)
- `example` — разобранный пример (реакция/расчёт) с пошаговым рендером
- (для прикладных §) `apply` — применение/значение (инфографика)
**Интерактивы (4–6 на §):**
1. **Звёздный виджет** темы (из карты содержания)
2. **Конструктор/симулятор** (slider / drag / sim из реестра)
3. **Калькулятор** ($M$, $n$, $w$, $c$, с.о., по уравнению) — где применимо
4. **DnD-классификатор** (классы веществ, тип связи/реакции, тип решётки)
5. **Тренажёр** — 5 задач с inline-наглядностью (формула/уравнение/модель в условии)
6. **Босс §** — 4 интеграционные задачи (+5 XP каждая)
**Дополнительно:** пополнение глоссария (термины §, `[[ссылки]]`), «Вопросы и задания»
из учебника (адаптированные, с проверкой), проходящий jsdom-тест страницы.
**Финал главы:** итоговая шпаргалка (mini-cards), карта связей (SVG-граф понятий),
7 интегрированных боссов (+10 XP), achievement «Мастер главы N» (+50 XP, confetti),
кнопка перехода к следующей главе.
---
## 🚀 ПОРЯДОК РЕАЛИЗАЦИИ (по фазам)
### Phase 0 — Фундамент (hub + каркасы глав)
- **`chemistry_8_hub.html`** — хаб-каталог 7 глав по образцу `physics_9_hub.html`: палитра
**amber**, водяной знак «ХИМИЯ», карточки глав с прогрессом (грузится из
`/api/textbooks/chemistry-8/children`), блок «Финал курса» (шпаргалка + боссы — наполняется в Phase 7),
achievement-strip «Химик 8 класса», тема (localStorage `chemistry8_theme`).
- **7 файлов глав** `chemistry_8_intro.html` + `chemistry_8_ch1..ch6.html` — на Phase 0
валидные каркасы-заглушки (header с водяным знаком, hero, sidebar-оглавление §, контейнер
параграфов, XP/tracker-интеграция), наполнение § — в Phase 1–6.
- **`/js/chem8_svg.js`** (хелперы B — заглушки → реализация по фазам).
- Подключить `biochem-core.js` + нужные симуляторы на страницах глав.
- **Миграция `041_chemistry8_hub.sql`** (следующий номер после `040_content_access.sql`):
**INSERT** родителя `chemistry-8` (`html_path='chemistry_8_hub.html'`, `para_count=52`,
`color='amber'`, `parent_slug=NULL`) + **7 детей** `chemistry-8-intro`/`-ch1..-ch6`
(`parent_slug='chemistry-8'`, свои `html_path`/`para_count`/`color`/`sort_order`) — по образцу
`038_physics_9_hub.sql`. Применить `npm run migrate`.
- jsdom-тест-каркас: хаб строится, все 8 файлов парсятся, ссылки глав ведут на существующие slug.
### Phase 1 — Вводный раздел «Количественные понятия» (§§1–9) + ПР1 — фундамент расчётов
Базовые движки: калькулятор $M_r$ (biochem-core), `moleTriangle`, связка $m$$n$$V$$N$,
`equationBalancer`, sim `stoichiometry`. **Критично** — эти расчёты используются во всех главах.
### Phase 2 — Глава 1 «Классы неорганических соединений» (§§10–23) + Лаб.1,2 + ПР2,3
Самая объёмная. Закладываем `classifier`, `indicatorScale`, `solubilityTable`,
`activitySeries`, матрицы реакций, `testTube` (первые качественные/нейтрализация),
`geneticMap` (§22), sim `titration`.
### Phase 3 — Глава 2 «Периодический закон и ПСХЭ» (§§24–28) + Лаб.3
`miniPeriodic`, sim `periodic`, амфотерность ($Zn(OH)_2$ — обе реакции + `testTube`),
демонстрация периодичности.
### Phase 4 — Глава 3 «Строение атома» (§§29–35)
sim `bohratom`, sim `orbitals`, sim `radioactive`, `orbitalDiagram`, графики периодических
трендов, генератор «паспорта элемента».
### Phase 5 — Глава 4 «Химическая связь» (§§36–41) + Лаб.4
slider ЭО → тип связи, biochem-core 3D-модели, ионная/металлическая решётки,
4 типа кристаллических решёток (3D) и связь «тип → свойства».
### Phase 6 — Глава 5 «ОВР» (§§42–45) + Глава 6 «Растворы» (§§46–52) + ПР4
`oxStateCalc`, `redoxBalancer`, визуализация переноса $e^-$; затем `dissociationAnim`,
график растворимости, sim `solutions`, калькулятор $c$, ПР4.
### Phase 7 — Финалы глав + общий финал учебника
Шпаргалки и карты связей по каждой главе; интегрированные боссы + achievements;
**большой финал**: генетическая карта классов + строение/связь, итоговый босс-квест,
ачивка «Химик 8 класса»; глоссарий собран и связан `[[ссылками]]`.
### Phase 8 — Качество и админка
Полный прогон jsdom-тестов (каждый § — builder не stub); аудит баланса уравнений и
KaTeX/`chemEq`-эскейпов; синхронизация с админкой (если новые sim в `lab.html`
обновить `ADMIN_SIMS` в `admin.html` — [[feedback_sims_admin_sync]]); проверка доступа
по классам/ученикам ([[project_content_access]], `/api/access`).
> Рекомендуемый темп: внутри фазы — по 2–3 § за «волну», каждая волна = commit +
> проходящий jsdom-тест (правило CLAUDE.md: commit изменённых файлов + push).
---
## 🗄️ ИНТЕГРАЦИЯ С ПРОЕКТОМ
| Точка | Действие |
|-------|----------|
| **БД каталог** | `chemistry-8` в `textbooks` **отсутствует** → миграция `041_chemistry8_hub.sql`: INSERT родитель + 7 детей (образец — `038_physics_9_hub.sql`). Каталог `/api/textbooks` показывает только `parent_slug IS NULL`; хаб тянет детей через `/api/textbooks/chemistry-8/children`. |
| **Прогресс/XP** | Автоматически: `textbook-xp-widget.js` (+5 XP/§), `textbook-tracker.js`, `LS.xp`. Доп. XP за боссов — по образцу `phys7_ch1_widgets.js`. |
| **Симуляторы** | Реестр `frontend/js/labs/_register-all.js`. Нужные химические sim уже зарегистрированы: `periodic`, `bohratom`, `orbitals`, `radioactive`, `stoichiometry`, `titration`, `qualanalysis`, `solutions`, `chemsandbox`. |
| **Молекулы** | `biochem-core.js` (парсинг, $M$, 2D/3D, VSEPR). |
| **Бэкенд** | Роуты готовы: `backend/src/routes/textbooks.js` (catalog/progress/bookmarks). Доступ: `backend/src/services/contentAccess.js`. |
| **Глоссарий** | Виджет всплывающих определений на странице (общего нет — реализовать). |
| **Тесты** | `cd backend && npm test` (jsdom). На каждый § — тест: страница строится, builder не stub, уравнения сбалансированы. |
| **Админка** | Новые sim в `lab.html` → синхронно `ADMIN_SIMS` в `admin.html`. |
---
## ⚠️ КРИТИЧЕСКИЕ ПРАВИЛА
### ❌ НЕ делать
- «Сырые» формулы текстом — только `chemEq`/`ionLabel`/KaTeX.
- Несбалансированные уравнения (аудит баланса перед commit).
- Дублировать молекулярный движок — использовать `biochem-core.js`.
- `setPointerCapture` (теряется после `innerHTML`-replace) → `window`-listeners + state-flag.
- `\to`, `\downarrow`, `\rightleftharpoons` без удвоения backslash в JS-шаблонах.
- Slider-диапазоны за пределы химически возможного (концентрации, температуры, $V_m$).
- Эмоджи — запрещены; только inline SVG `.ic`.
- **Grep tool — запрещён**; поиск только `ast-index` ([[reference_sqlite_node]] и правила проекта).
### ✅ Обязательно
- Каждый commit → jsdom-тест 100% pass.
- Аудит баланса уравнений + KaTeX-эскейпов после каждой волны.
- Расчётный § = калькулятор/тренажёр с **пошаговым** решением и единицами измерения.
- Качественная реакция = уравнение (молек.+, где есть, ионное) **+ видимый признак**.
- Цвета осадков/индикаторов — химически достоверные.
- Все builder-функции в конце финальной волны главы — НЕ stub'ы.
- Коммитить только изменённые файлы (не `git add -A`), сразу push.
---
## 📊 Оценка объёма
| Раздел | § | Лаб/ПР | Ожидаемый LOC |
|--------|---|--------|---------------|
| Вводный (кол-во вещества) | 9 | ПР1 | ~7 000 (+`moleTriangle`, `equationBalancer`, `stoichiometry`) |
| Гл.1 Классы соединений | 14 | Лаб1,2 + ПР2,3 | ~16 000 (+`classifier`, `solubilityTable`, `activitySeries`, `geneticMap`) |
| Гл.2 ПЗ и ПСХЭ | 5 | Лаб3 | ~5 000 (+`miniPeriodic`, амфотерность) |
| Гл.3 Строение атома | 7 | — | ~7 000 (+`orbitalDiagram`, sim bohratom/orbitals/radioactive) |
| Гл.4 Химическая связь | 6 | Лаб4 | ~6 500 (+3D-модели, 4 решётки) |
| Гл.5 ОВР | 4 | — | ~4 500 (+`oxStateCalc`, `redoxBalancer`) |
| Гл.6 Растворы | 7 | ПР4 | ~7 000 (+`dissociationAnim`, sim solutions, калькулятор $c$) |
| Финалы глав + общий | — | — | ~5 000 |
| `/js/chem8_svg.js` хелперы | — | — | ~3 000 |
| Хаб + 7 каркасов глав (Phase 0) | — | — | ~3 000 |
| **Итого** | **52** | **4 лаб + 4 ПР** | **~64 000 LOC** |
---
## 🎬 Запуск
**Phase 0**: `chemistry_8_hub.html` (по образцу `physics_9_hub.html`) + 7 каркасов глав
(`chemistry_8_intro.html`, `chemistry_8_ch1..ch6.html`) + `/js/chem8_svg.js` (скелет) +
подключение `biochem-core.js`/симуляторов + миграция `041_chemistry8_hub.sql` (родитель + 7 детей)
+ `npm run migrate` + jsdom-каркас.
**Phase 1**: Вводный раздел (§§1–9) — закладываем движки расчётов (`moleTriangle`,
`equationBalancer`, sim `stoichiometry`), от которых зависят все главы.
Дальше — последовательно по главам (Phase 2 → 6), затем финалы (Phase 7) и качество (Phase 8).