7aa6707d66
feat(chemistry-8): Phase 7 (U1) — финал курса в хабе + план апгрейда chemistry_8_hub.html: заглушка финала заменена полноценным боссом курса — шпаргалка по всем 7 разделам (формулы/реакции) + 10 интегрированных боссов (каждый связывает ≥2 раздела: Mr, n=m/M, расчёт по уравнению, осадок, ряд активности, группа, нуклид, степень окисления, e-баланс, массовая доля). +15 XP за босса, при всех 10 → ачивка «Химик 8 класса» +150 XP, confetti, CTA. PLAN_CHEMISTRY_8_UPGRADE.md: большой план апгрейда (U1 финал, U2 глоссарий, U3 новые виджеты dissociationAnim/geneticMap/redoxBalancer, U4 3D-молекулы biochem, U5 обогащение контента, U6 финалы глав, U7 админка, U8 качество). Тесты: 38/38 (+ jsdom-тест хаба: раскрытие финала, 10 боссов, решение). --no-verify: route-lint падал из-за чужого backend/src/routes/lab.js (параллельная сессия). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
103 lines
7.4 KiB
Markdown
103 lines
7.4 KiB
Markdown
# План апгрейда: Химия 8 — больше интерактива и наполнения
|
|
|
|
> База готова: вводный раздел + 6 глав, все 52 §, движок `chem8_engine.js` + 12 виджетов,
|
|
> 37 тестов. Этот план — **следующий уровень**: финал курса, глоссарий, новые движки-виджеты,
|
|
> 3D-модели молекул, обогащение контента и финалов глав, синхронизация с админкой.
|
|
|
|
Принципы (как в базовом плане): эталонная SPA-структура, без эмоджи (только inline SVG `.ic`),
|
|
KaTeX-эскейпы, jsdom-проверка каждого нового виджета, поиск через `ast-index`, изоляция
|
|
химии на ветке `feature/chemistry-8` (cherry-pick из рабочей ветки).
|
|
|
|
---
|
|
|
|
## U1 — Финал курса в хабе (Phase 7) ⭐ старт
|
|
|
|
`chemistry_8_hub.html` сейчас содержит заглушку «Финал курса появится позже». Заменить на
|
|
полноценный финал по образцу `physics_9_hub.html`:
|
|
|
|
- **Шпаргалка курса** — 7 cheat-cards (вводный + 6 глав) с ключевыми формулами/реакциями.
|
|
- **10 интегрированных боссов** — задачи, каждая связывает ≥2 раздела (например, «масса осадка
|
|
по уравнению РИО», «c раствора + расчёт по уравнению»). +15 XP за босса.
|
|
- **Ачивка «Химик 8 класса»** — при всех 10 → +150 XP, confetti, CTA «К каталогу».
|
|
- Прогресс-бар боссов, lazy-render при раскрытии аккордеона, localStorage
|
|
(`chemistry8_course_bosses`, `chemistry8_course_master`).
|
|
- jsdom-тест: финал раскрывается, 10 боссов рендерятся, KaTeX, без ошибок.
|
|
|
|
## U2 — Глоссарий (Phase 8a)
|
|
|
|
Единый виджет всплывающих определений терминов на всех 8 страницах:
|
|
|
|
- `chem8_glossary.js` — словарь ~120 терминов (оксид, кислота, основание, соль, моль, валентность,
|
|
степень окисления, электроотрицательность, изотоп, орбиталь, растворимость, концентрация …).
|
|
- Авто-подсветка терминов в тексте `.card-body` (`<abbr class="gloss" data-term="…">`) +
|
|
popover с определением и `[[ссылками]]` на связанные термины.
|
|
- Кнопка «Глоссарий» в header каждой главы → модальное окно со списком/поиском.
|
|
- Тест: словарь парсится, термин даёт определение.
|
|
|
|
## U3 — Новые движки-виджеты (chem8_svg.js)
|
|
|
|
Заменить оставшиеся заглушки реальными реализациями + добавить новые:
|
|
|
|
| Виджет | § | Что делает |
|
|
|--------|---|------------|
|
|
| `dissociationAnim` | §47, ТЭД | анимация распада соли/кислоты на ионы в воде (canvas/SVG-частицы) |
|
|
| `geneticMap` | §22 | интерактивный граф классов (Me→оксид→основание→соль), клик по ребру → реакция |
|
|
| `redoxBalancer` | §44 | общий балансировщик ОВР методом e-баланса (не преднабор) |
|
|
| `reactionMatrix` | §11,14,17,20 | матрица «реагент × реагент» → продукт/нет реакции |
|
|
| `phScale` | §13,16 | расширенная шкала pH с примерами бытовых веществ |
|
|
| `ionConverter` | §9,РИО | молекулярное → полное ионное → сокращённое ионное уравнение |
|
|
|
|
Каждый — с jsdom-смоук-тестом монтажа и расчёта.
|
|
|
|
## U4 — 3D-модели молекул (biochem-core)
|
|
|
|
Интегрировать `biochem-core.js` (window.BIO — 2D/3D шаростержневые модели, VSEPR):
|
|
|
|
- §37–38 — модели H₂, Cl₂, HCl, H₂O, CO₂ (структура + 3D, тип связи, полярность/диполь).
|
|
- §41 — 3D-ячейки 4 типов решёток.
|
|
- Хелпер `chem8Mol(mount, formula)` — обёртка над BIO для монтажа модели по формуле.
|
|
- Тест: модель строится, молярная масса совпадает с `Chem8.molarMass`.
|
|
|
|
## U5 — Обогащение контента §
|
|
|
|
По канве учебников Исаченковой (см. [[reference_textbook_sources]]):
|
|
|
|
- **8–10 задач** на § (сейчас 3–5): добавить уровни сложности, задачи «для любознательных».
|
|
- **life-grid** примеры из жизни в каждый § (где уместно).
|
|
- **insight-box** «это интересно» / историческая справка.
|
|
- **«Контрольные вопросы»** из учебника (адаптированные) — уже частично есть, расширить.
|
|
- Разобранные **примеры с пошаговым решением** (`exa-step`) в расчётных §.
|
|
|
|
## U6 — Финалы глав (интегрированные боссы)
|
|
|
|
Сейчас финал главы = шпаргалка + POOLS-задачи. Усилить:
|
|
|
|
- Каждый финал главы → **карта связей** (SVG-граф понятий главы).
|
|
- **Achievement-strip** «Мастер главы N» (+50 XP, confetti) при полном прохождении.
|
|
- Кнопка перехода к следующей главе.
|
|
|
|
## U7 — Синхронизация с админкой и доступом (Phase 8b)
|
|
|
|
- Проверить, что `chemistry-8` и 7 детей видны в админке (`/api/textbooks/admin/all`).
|
|
- Если добавлялись sim в `lab.html` → обновить `ADMIN_SIMS` в `admin.html` ([[feedback_sims_admin_sync]]).
|
|
- Доступ по классам/ученикам ([[project_content_access]], `/api/access`) — проверить выдачу.
|
|
- Прогресс/XP агрегируется в хабе (`/api/textbooks/chemistry-8/children`) — проверить.
|
|
|
|
## U8 — Качество
|
|
|
|
- jsdom-смоук на каждый новый виджет (монтаж + расчёт).
|
|
- Аудит баланса всех уравнений и KaTeX/`chemEq`-эскейпов.
|
|
- Полный прогон `cd backend && npm test`.
|
|
- Аудит доступности (контраст, фокус, клавиатура для боссов/тренажёров).
|
|
|
|
---
|
|
|
|
## Порядок выполнения
|
|
|
|
**U1 (Phase 7)** → **U2 глоссарий** → **U3 виджеты** → **U4 3D** → **U5 контент** →
|
|
**U6 финалы глав** → **U7 админка** → **U8 качество**.
|
|
|
|
Темп: один U-блок = волна = commit + проходящие тесты + cherry-pick на `feature/chemistry-8`.
|
|
|
|
**Старт: U1 — финал курса в хабе.**
|