Files
Learn_System/plans/textbooks-8/PLAN_CHEMISTRY_8.md
T
Maxim Dolgolyov 67b95234d0 @
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>
@
2026-05-30 14:10:21 +03:00

39 KiB
Raw Blame History

План реализации: Химия 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. Важнейшие классы неорганических соединений (§§10–23) — 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. Периодический закон и периодическая система (§§24–28) — 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. Окислительно-восстановительные реакции (§§42–45) — deep-orange

§ Тема Ключ Интерактив
§42 Степень окисления правила, расчёт по формуле Калькулятор степени окисления (любая формула)
§43 Процессы окисления и восстановления отдача/приём e^-, окислитель/восстановитель Визуализация переноса e^-
§44 Окислительно-восстановительные реакции метод электронного баланса Балансировщик ОВР (пошаговый e-баланс)
§45 ОВР вокруг нас горение, коррозия, дыхание, батарейки Инфографика-исследование ОВР в жизни

ГЛАВА 6. Растворы (§§46–52) — 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, не дублировать.

// 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^-
Растворы (§4652) 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.htmlfeedback_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).