Files
Learn_System/backend/src/db/migrations/039_physics_7_hub.sql
T
Maxim Dolgolyov e76485cadc feat(phys7): Phase 0 — фундамент учебника Физики 7
Полная инфраструктура: hub, 5 ch-скелетов, lab-скелет, миграция 039,
расширение phys.js на 11 хелперов + 2 класса симуляций для новых тем 7-го класса.

ФАЙЛЫ:
- backend/src/db/migrations/039_physics_7_hub.sql — self-sufficient миграция
  (parent physics-7 + 6 children: ch1..ch5 + lab). Palette: sky/blue для hub,
  глав: indigo/violet/red/amber/emerald/cyan.
- frontend/textbooks/physics_7_hub.html (862 строки) — hub с прогресс-картами
  6 разделов, шпаргалкой курса в 5 mini-карточках, 10 интегрированных боссов
  финала курса (через ачивку «Магистр физики 7», +150 XP), темой/lang storage
  через ключи physics7_*. Sidebar-фикс на десктопе встроен.
- frontend/textbooks/physics_7_ch1..ch5.html (350-390 строк каждый) —
  скелеты глав с header, paragraph selector, sidebar, прогресс/XP, goTo,
  search-модалом, KaTeX с delimiters, sidebar-фиксом, cache-busting ?v=20260530.
  Каждая глава имеет правильное число параграфов (7/6/14/8/7) + sec-finalN.
- frontend/textbooks/physics_7_lab.html (306 строк) — скелет лаб. практикума
  на 6 ЛР с teal/cyan палитрой и ачивкой «Лаборант 7 класса» (+80 XP).
- backend/scripts/gen_phys7_ch.js / gen_phys7_lab.js — генераторы из единого
  шаблона (для регенерации при правках инфраструктуры).

PHYS.JS НОВЫЕ ХЕЛПЕРЫ (всё работает, smoke-test пройден):
- forceVector(x,y,F,angle,color,label) — стрелка силы с подписью
- dynamometer(x,y,h,Fmax,F) — динамометр с пружиной и шкалой
- blockOnSurface(x,y,w,h,label,weights) — брусок со стопкой гирь
- connectedVessels(x,y,kindA,kindB,levelY) — сообщающиеся сосуды
- hydraulicPress(x,y,sSmall,sLarge,fSmall) — гидравлический пресс
- mercuryBarometer(x,y,hMm) — ртутный барометр Торричелли
- aneroidBarometer(cx,cy,r,p) — стрелочный барометр-анероид
- uManometer(x,y,w,h,deltaH) — U-образный жидкостный манометр
- rulerWithError(x,y,lenCm,mmPerDiv) — линейка со шкалой и ценой деления
- bimetal(x,y,w,h,deltaT) — биметаллическая пластина (гнётся от ΔT)
- expandingRod(x,y,l0,alpha,deltaT) — стержень с тепловым расширением
- class HillSlideSim — тележка на горке (§42, закон сохранения; графики Ek/Ep/Etot)
- class PendulumSim — математический маятник (§42, осцилляции)

Все 13 экспортированы в window.PHYS, smoke-test показал физически разумные
значения энергий. Parse-check + node --check проходят.

Уроки phys 9 учтены сразу: cache-busting на phys.js, sidebar-фикс @media
min-width:981px, delimiters для renderMathInElement.

PHASE 0 DONE. Дальше: Phase 1 Wave 1 — §§1-2 (Физика как наука + Тело/явление/величина).
2026-05-30 10:32:37 +03:00

61 lines
4.6 KiB
SQL

-- Physics 7 hub migration (self-sufficient).
-- Creates physics-7 as a full 5-chapter + lab textbook in the style of physics-8/9/10:
-- physics-7 (hub, html_path = physics_7_hub.html)
-- physics-7-ch1 (Физические методы познания природы, §§1–7) → physics_7_ch1.html
-- physics-7-ch2 (Строение вещества, §§8–13) → physics_7_ch2.html
-- physics-7-ch3 (Движение и силы, §§14–27) → physics_7_ch3.html
-- physics-7-ch4 (Давление, §§28–35) → physics_7_ch4.html
-- physics-7-ch5 (Работа. Мощность. Энергия, §§36–42) → physics_7_ch5.html
-- physics-7-lab (Лабораторный практикум, 6 ЛР) → physics_7_lab.html
--
-- This migration is the single source of truth for physics-7 textbook structure.
-- It is idempotent and does not depend on any prior physics-7 migration.
-- 1. Ensure the parent physics-7 hub row exists.
INSERT OR IGNORE INTO textbooks
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active)
VALUES
('physics-7', 'physics', 7, 'Физика — 7 класс',
'',
'Первый курс физики: методы познания, строение вещества, движение и силы, давление, работа/мощность/энергия. 42 параграфа в 5 главах + 6 виртуальных лабораторных работ.',
'physics_7_hub.html', 48, 'sky', 3, 1);
-- 2. Update the parent physics-7 hub row (idempotent on re-runs).
UPDATE textbooks
SET
author = '',
para_count = 48,
html_path = 'physics_7_hub.html',
description = 'Первый курс физики: методы познания, строение вещества, движение и силы, давление, работа/мощность/энергия. 42 параграфа в 5 главах + 6 виртуальных лабораторных работ.',
color = 'sky'
WHERE slug = 'physics-7';
-- 3. Insert the 6 children (5 chapters + lab).
INSERT INTO textbooks
(slug, subject, grade, title, author, description, html_path, para_count, color, sort_order, is_active, parent_slug)
VALUES
('physics-7-ch1', 'physics', 7, 'Физика 7 · Физические методы познания природы',
'',
'§§1–7: физика как наука, физическое тело и явление, методы исследования, измерения, СИ, цена деления, погрешность.',
'physics_7_ch1.html', 7, 'sky', 1, 1, 'physics-7'),
('physics-7-ch2', 'physics', 7, 'Физика 7 · Строение вещества',
'',
'§§8–13: дискретное строение, тепловое движение, взаимодействие частиц, три состояния, тепловое расширение, термометр.',
'physics_7_ch2.html', 6, 'indigo', 2, 1, 'physics-7'),
('physics-7-ch3', 'physics', 7, 'Физика 7 · Движение и силы',
'',
'§§14–27: механическое движение, равномерное и неравномерное, плотность, силы тяжести/упругости/трения, динамометр, равнодействующая.',
'physics_7_ch3.html', 14, 'red', 3, 1, 'physics-7'),
('physics-7-ch4', 'physics', 7, 'Физика 7 · Давление',
'',
'§§28–35: давление, закон Паскаля, гидравлический пресс, гидростатика, сообщающиеся сосуды, атмосферное давление, барометры.',
'physics_7_ch4.html', 8, 'amber', 4, 1, 'physics-7'),
('physics-7-ch5', 'physics', 7, 'Физика 7 · Работа. Мощность. Энергия',
'',
'§§36–42: механическая работа, КПД, мощность, кинетическая и потенциальная энергия, закон сохранения механической энергии.',
'physics_7_ch5.html', 7, 'emerald', 5, 1, 'physics-7'),
('physics-7-lab', 'physics', 7, 'Физика 7 · Лабораторный практикум',
'',
'6 виртуальных лабораторных работ: цена деления, измерение длины, объёма, неравномерное движение, плотность, сила трения.',
'physics_7_lab.html', 6, 'cyan', 6, 1, 'physics-7');