feat(catalog): авто-mark-as-read + Физика 8 как полноценный хаб

A. textbook-tracker.js: первый клик по .para-pill теперь автоматически
   помечает параграф как прочитанный. «Прочитано» = «открыто». Сразу
   даёт осмысленный счётчик для chemistry-9 и physics-9 в каталоге.
   Slug fallback: physics8_* → physics-8-* (корректный слаг).

B. Физика 8 — миграция 015:
   - 3 children: physics-8-thermal / electro / optics с parent_slug
   - parent физики-8 обновлён: para_count=40, описание трёх разделов
   - sub-файлы получили textbook-tracker.js + правильный слаг
   - physics_8.html переписана в стиле algebra_8_hub: 3 цветные
     карточки, агрегированный прогресс, ачивка «Эксперт физики 8»

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-27 17:00:36 +03:00
parent c806a5137a
commit 1a347650f4
6 changed files with 207 additions and 168 deletions
@@ -0,0 +1,29 @@
-- Physics 8 hub migration.
-- Converts physics-8 from a monolithic entry into a hub with 3 children,
-- mirroring the algebra-8 hub pattern established in migration 014.
-- 1. Insert 3 child rows for the sub-textbooks.
INSERT OR IGNORE INTO textbooks
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active, parent_slug)
VALUES
('physics-8-thermal', 'physics', 8, 'Физика 8 · Тепловые явления',
'',
'Внутренняя энергия, теплопередача, удельная теплоёмкость, фазовые переходы, тепловые двигатели.',
'physics8_thermal.html', 11, 'orange', 1, 1, 'physics-8'),
('physics-8-electro', 'physics', 8, 'Физика 8 · Электрические явления',
'',
'Электростатика, закон Кулона, электрический ток, закон Ома, электрические цепи.',
'physics8_electro.html', 20, 'blue', 2, 1, 'physics-8'),
('physics-8-optics', 'physics', 8, 'Физика 8 · Световые явления',
'',
'Источники света, отражение, преломление, линзы, оптические приборы.',
'physics8_optics.html', 9, 'purple', 3, 1, 'physics-8');
-- 2. Update the parent physics-8 row: clear author, set para_count=40, update description.
UPDATE textbooks
SET
author = '',
para_count = 40,
html_path = 'physics_8.html',
description = 'Полный курс физики 8 класса в трёх разделах: тепловые явления (§1–§11), электрические явления (§12–§31), световые явления (§32–§40).'
WHERE slug = 'physics-8';