feat(phys8): Phase 0 — skeleton hub + 3 chapters + lab + phys.js/optics.js

Полная инфраструктура курса «Физика 8» (Исаченкова, 2018):
- physics_8_hub.html: палитра violet/indigo, 3 главы + ЛР + финал курса
  с 10 интегрированными боссами и ачивкой «Магистр физики 8» (+150 XP)
- physics_8_ch1.html (Тепловые, §§1–11): красный акцент
- physics_8_ch2.html (Электромагнитные, §§12–31): янтарный акцент
- physics_8_ch3.html (Световые, §§32–40): голубой акцент
- physics_8_lab.html (7 ЛР): зелёный акцент
- Расширение phys.js: tempColor, thermometer, calorimeter, createHeatBar,
  phaseGraphTT, Rseries, Rparallel
- Новый модуль optics.js: ray, refractRay, reflectRay, mirrorPlane,
  mirrorSpherical, thinLens, buildLensImage, goldenRays, eyeDiagram,
  lightObject, shadowTriangle
- Миграция 037: replace legacy children (thermal/electro/optics) на
  physics-8-ch1/ch2/ch3 + physics-8-lab; обновлён hub до 47 пунктов

BUILDERS всех § рендерят stub с указанием Phase/Wave из PLAN_PHYSICS_8.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-29 22:41:37 +03:00
parent 8e8988ec23
commit 33a91900a8
8 changed files with 4022 additions and 0 deletions
@@ -0,0 +1,45 @@
-- Physics 8 hub migration.
-- Rebuilds physics-8 as a full 3-chapter + lab textbook in the style of physics-10:
-- physics-8 (hub, html_path = physics_8_hub.html)
-- physics-8-ch1 (Тепловые явления, §§1–11) → physics_8_ch1.html
-- physics-8-ch2 (Электромагнитные явления, §§1231) → physics_8_ch2.html
-- physics-8-ch3 (Световые явления, §§32–40) → physics_8_ch3.html
-- physics-8-lab (Лабораторный практикум, 7 ЛР) → physics_8_lab.html
--
-- Replaces the old legacy children created in migration 015
-- (physics-8-thermal / physics-8-electro / physics-8-optics), which pointed
-- to monolithic legacy files. Author left empty per project policy.
-- 1. Remove legacy children (HTML files are kept on disk as backup, just unlinked from DB).
DELETE FROM textbooks WHERE slug IN ('physics-8-thermal', 'physics-8-electro', 'physics-8-optics');
-- 2. Update the parent physics-8 hub row.
UPDATE textbooks
SET
author = '',
para_count = 47,
html_path = 'physics_8_hub.html',
description = 'Полный курс физики 8 класса: тепловые явления (§§1–11), электромагнитные явления (§§12–31), световые явления (§§32–40), 7 виртуальных лабораторных работ.',
color = 'violet'
WHERE slug = 'physics-8';
-- 3. Insert the 4 new children.
INSERT INTO textbooks
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active, parent_slug)
VALUES
('physics-8-ch1', 'physics', 8, 'Физика 8 · Тепловые явления',
'',
'§§1–11: внутренняя энергия, теплопроводность, конвекция, излучение, удельная теплоёмкость, плавление, кипение.',
'physics_8_ch1.html', 11, 'red', 1, 1, 'physics-8'),
('physics-8-ch2', 'physics', 8, 'Физика 8 · Электромагнитные явления',
'',
'§§12–31: электризация, ток, закон Ома, последовательное и параллельное соединения, мощность тока, постоянные магниты, электромагнит.',
'physics_8_ch2.html', 20, 'amber', 2, 1, 'physics-8'),
('physics-8-ch3', 'physics', 8, 'Физика 8 · Световые явления',
'',
'§§32–40: прямолинейное распространение света, отражение, преломление, линзы, построение изображений, глаз и очки.',
'physics_8_ch3.html', 9, 'cyan', 3, 1, 'physics-8'),
('physics-8-lab', 'physics', 8, 'Физика 8 · Лабораторный практикум',
'',
'7 виртуальных лабораторных работ: теплообмен, удельная теплоёмкость, простейшая цепь, последовательное и параллельное соединения, работа и мощность, отражение света.',
'physics_8_lab.html', 7, 'emerald', 4, 1, 'physics-8');