Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
13 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project_chemistry7_textbook | Новый интерактивный учебник «Химия 7» (Беларусь, Шиманович 2023): план + статус фаз, архитектура (переиспользование движка Химии 8) |
|
Создаём интерактивный учебник «Химия 7» (Беларусь, Шиманович и др., 2023) — первый курс химии. План: plans/textbooks-7/PLAN_CHEMISTRY_7.md. Программа из книги (PDF himiya_7kl_shimanovich_rus_2023 (1).pdf в reference_textbook_sources, TOC на стр. 3–4): 4 главы, 26 §, 5 лаб. опытов, 4 практ. работы. Гл.I Первоначальные понятия §1–12, Гл.II Кислород §13–17, Гл.III Водород §18–22, Гл.IV Вода §23–26.
Why: закрывает нижнюю ступень химии (линейка 7→8→9). 7 класс — качественный курс (валентность, а не степень окисления; M_r без моля; без ПЗ/строения атома/ТЭД — это project_lab_content_engine… нет, это Химия 8).
How to apply (ключевая архитектура — НЕ дублировать): движок Химии 8 полностью переиспользуется для Химии 7. Страница главы лишь объявляет window.CHEM8_CFG/PARAS/BUILDERS/POOLS/SIDEBARS/TIPS/ACH_LABELS и подключает общие /js/chem8_engine.js + /css/chem8-textbook.css + /js/chem8_svg.js (window.Chem8) + /js/biochem-core.js. Свой только /js/chem7_svg.js (window.Chem7 — тонкая надстройка над Chem8) и страницы. /textbook/<slug> → frontend/textbooks/<html_path> (html_path из БД). Прогресс/XP/ачивки — автоматически движком; ключи localStorage chemistry7_*.
Статус (2026-05-30): ВЕСЬ КОНТЕНТ ГОТОВ — все 26 § наполнены (Phases 0–4, последний коммит 7574d16, ветка feature/lab-content-engine). Глава 3 «Водород» (§§18–22 + ЛО3,4 + ПР3, виджеты chem7_ch3_widgets.js: паспорт H₂, реакции водорода, индикаторы кислот, ряд активности, опыт металл+кислота, конструктор солей, проверка чистоты H₂) и Глава 4 «Вода» (§§23–26 + ЛО5 + ПР4, chem7_ch4_widgets.js: разложение воды 2:1, конструктор оснований, индикаторы щёлочи, нейтрализация, экология) — ГОТОВЫ. У всех 4 глав финалы по 6 боссов; курсовой финал (8 боссов + ачивка «Химик 7 класса») в хабе. Тесты chem7: 15/15 pass; полный прогон 161/164 (3 — baseline Auth). Учебник появляется в каталоге /api/textbooks автоматически (is_active=1, parent_slug=NULL).
Визуальный апгрейд (анимации): план plans/textbooks-7/PLAN_CHEMISTRY_7_VISUAL.md (~15 флагманов, фазы V0–V5). V0+пилот V1 ГОТОВЫ (коммит f620562): движок frontend/js/chem7_anim.js (window.Chem7Anim: loop с IntersectionObserver-паузой, molecule3d SVG-вращение+drag, separation canvas-частицы, colorMorph, confettiSmall; headless-guard navigator.userAgent~jsdom — canvas getContext НЕ зовётся в тестах, молекулы на SVG → jsdom-safe; IntersectionObserver guard). Пилот: §5/§6 → вращающиеся 3D-молекулы (molViewer+MOL в chem7_ch1_widgets.js), §2/ПР1 → анимация разделения смесей при верном методе. Тест ch1 V-пилот зелёный (16/16). Готово: V0 + V1 (Гл.1) + V2 §15 (горение). Движок дополнен CSS-хелперами (jsdom-safe): bubbleField/precipField/flameBox/colorBlock (+ инжект keyframes). V1 анимировано: §2/ПР1 разделение (canvas separation), §5/§6 3D-молекулы (molViewer+MOL), §10/ЛО1 признаки (demoAnim: colorBlock/precip/flame/bubble), §11 осадок (precipField). V2: §15 горение — flameBox с цветом по веществу (C оранж, S синий, P бел., Fe/Mg искры); chem7_anim.js подключён в Гл.1 и Гл.2. Коммиты f620562, 41985a9, e8cb95b.
Готово V0–V4: ВСЕ 4 главы анимированы (коммиты …e8cb95b, 33f968b, 639f985). chem7_anim.js подключён во все 4 главы. V3 (Гл.3): §21 ряд активности → пузырьки H₂ (bubbleField)/«нет реакции» для Cu; §19 восстановление CuO → colorBlock чёрный→красный; §20/ЛО3 индикаторы → colorBlock. V4 (Гл.4): §23 электролиз → 2 потока пузырьков H₂(18)/O₂(9) = 2:1; §24/ЛО5 индикаторы щёлочи → colorBlock; §25/ПР4 нейтрализация → colorBlock малиновый→бесцветный. chem7-тест: 16/16 (3D-молекулы, разделение, признаки, осадок, горение, пузырьки, морфинг цвета, индикаторы, электролиз, титрование).
V1-хвост ЗАКРЫТ (коммит ac6552b): §9 — Chem7Anim.valenceLink (SVG «связи-крючки», draw-in); §12 — анимированный подсчёт атомов (реагенты vs продукты, точки появляются масштабом, баланс слева=справа). ВСЕ интерактивы Химии 7 анимированы (V0–V4 + хвост). chem7-тест 16/16. Остаток (опционально): звук (Web Audio: хлопок гремучего газа / пшик лучинки) — не делал; V5 reduced-motion и пауза вне экрана УЖЕ в движке. ВАЖНО при full-test: chem8 «intro» тест иногда флачит по таймингу под параллельной нагрузкой (не регрессия — проходит в изоляции).
КРИТИЧНО для тестов: пакет canvas НЕ установлен → getContext в jsdom кидает «Not implemented» (ловится как jsdomError) → анимации на canvas ОБЯЗАНЫ иметь headless-guard. jsdom и katex стоят --no-save (любой npm install их пруннит — при пропаже восстановить npm install --no-save jsdom katex).
Осталось по контенту (опциональная полировка, Phase 5/6): виджет глоссария chem7_glossary.js (по образцу chem8_glossary), проверка в браузере, выдача доступа ученикам (project_content_access), при желании — общий «большой финал»/карта связей. Функционально курс завершён.
Предыдущий статус (Phase 0+1+2):
Phase 2 — Глава 2 «Кислород» (§§13–17 + ЛО2 + ПР2 + финал) ГОТОВА (2 волны). Виджеты в frontend/js/chem7_ch2_widgets.js: §13 диаграмма состава воздуха, ЛО2 выбор собирания газа, §14 переключатель элемент/O₂/O₃ + модели (molSvg), §15 симулятор горения (C/S/P/Fe/Mg → оксид, через Chem8.chemEq), §16 конструктор оксида (валентность) + Chem7Classify (оксид/не оксид), §17 схема получения O₂ (катализатор), ПР2 тлеющая лучинка. 8 боссов финала курса в хабе уже работают.
⚠️ КРИТИЧНО — флака Cyrillic-FS (видел вживую): под путём G:\Dev\Тесты\… инструмент Edit иногда рапортует success, но запись НЕ персистится (целый пакет из 6 Edit'ов молча не сохранился). Также node --test <relative-file> и node -e readFileSync(...) периодически дают ENOENT/«Could not find» под кириллицей. ПРАВИЛО (см. feedback_verify_edits_applied): после пакета Edit'ов в файл под Тесты\ — ОБЯЗАТЕЛЬНО проверить персист через node -e \"h=fs.readFileSync(...); h.includes('маркер')\" (Bash), и только потом коммитить. Тесты запускать через node -e \"require('./tests/chemistry7-page.test.js')\" (require резолвит кириллицу надёжнее, чем --test <file>); при ENOENT — повторить (флака транзиентна). Read-state харнесса слетает после компакта → перед Edit может понадобиться повторный Read.
Phase 1 — Глава 1 «Первоначальные химические понятия» (§§1–12) наполнена ПОЛНОСТЬЮ (4 волны):
теория (3 карточки/§), звёздные виджеты, тренажёры задач (POOLS), финал главы (6 боссов). Виджеты в frontend/js/chem7_ch1_widgets.js (CHEM8_WIDGETS/FLAG_MOUNTS): §1 классификатор тело/вещество, §2/ПР1 разделитель смесей, §3 каталог элементов + тренажёр символов, §4 весы атомов, §5 галерея молекул (SVG-шарики molBalls), §6 классификатор простое/сложное, §7 парсер формулы (Chem8.elementCounts), §8 калькулятор M_r (Chem8.molarMass), §9 конструктор формулы по валентности (НОК), §10/ЛО1 детектор признаков реакции, §11 весы сохранения массы, §12 балансировщик (Chem8.equationBalancer). Builder'ы build_pN — inline в chemistry_7_ch1.html (override заглушек). Тест chemistry7-page.test.js: 10/10 pass; полный прогон 156/159 (3 — baseline Auth). Паттерн волны: добавить build_pN+POOLS+SIDEBARS+TIPS+override в HTML + mount_pN в widgets-файл + тест + commit.
Phase 0 ГОТОВ (коммит c33b4ab):
- миграция
046_chemistry7_hub.sqlприменена (родительchemistry-726§ + 4 ребёнкаchemistry-7-ch1..ch4, палитра emerald/cyan/violet/blue); frontend/textbooks/chemistry_7_hub.html(emerald, 4 главы, финал курса 8 боссов, ачивкаchemistry7_course_master«Химик 7 класса» +150 XP);chemistry_7_ch1..ch4.html— каркасы на общем движке; PARAS по реальной программе; builder'ы пока заглушки (para-hero + «содержание готовится» + кнопка прочтения), генерятся inline из PARAS;frontend/js/chem7_svg.js— Chem7 (стабы звёздных виджетов: valenceBuilder, mixtureSeparator, reactionSigns, massConservation, combustionSim, compoundBuilder, airComposition, waterDecomp, massFraction);- тест
backend/tests/chemistry7-page.test.js(6 тестов, все проходят).
Дальше: Phase 1 — наполнить Гл.I §§1–12 реальным контентом (теория + интерактивы + POOLS), создать chem7_ch1_widgets.js (заменить inline-заглушки на build_pN + CHEM8_WIDGETS/FLAG_MOUNTS, как в chem8_intro_widgets.js). Затем Phase 2–4 (главы), Phase 5 финалы, Phase 6 качество/админка.
Тесты: cd backend && node --test tests/*.test.js. ВАЖНО: Cyrillic-путь ломает запуск node --test <file> из PowerShell — запускать через Bash. Baseline: 3 pre-existing Auth-фейла (не трогать). См. reference_sqlite_node, feedback_no_emoji, project_concurrent_sessions_branch.