# План реализации: Физика 7 (Беларусь, Исаченкова, 2022) — ✅ ЗАВЕРШЁН

> **Статус: РЕАЛИЗОВАН ПОЛНОСТЬЮ (Phase 0..8).** 42 параграфа + 6 ЛР + 5 финалов глав + финал курса. 7 ачивок. Палитра sky/blue для хаба, по уникальной палитре на каждую главу. Все интерактивы рабочие, parse-check и smoke-test пройдены. См. итоговую сводку внизу плана.



**Источник:** `fizika_Isachenkova_7kl_rus_2022.pdf` (≈170 стр., 5 содержательных глав + лабораторный практикум)
**Издательство:** «Народная асвета», Минск, 2022 (2-е издание, пересмотренное и дополненное)
**Уровень:** базовый (для 7 класса УОСО с русским языком обучения).
**Авторы (исходник, в hub НЕ показываем):** Л. А. Исаченкова, Е. В. Громыко, Ю. Д. Лещинский.

> **Первый курс физики у школьника.** Унаследует ВСЁ из инфраструктуры Физики 8 (`phys.js`, `optics.js` тут не нужен, slider'ы в СИ, snap-точки, drawArrow, createGasSim, molecule, thermometer, tempColor). **Новый блок — методология науки (§§1–7)**: измерения, СИ, цена деления, погрешности — этого нет ни в одном существующем курсе и требует отдельных интерактивов («виртуальная линейка с погрешностью», «термометр-конвертер»). Также новые блоки — **гидростатика** (Паскаль, сообщающиеся сосуды, барометр) и **энергия + закон сохранения** (горка/маятник). Это четвёртый физический учебник в проекте после Физики 8, 9, 10.

---

## 🎯 Содержание учебника

### Глава 1. Физические методы познания природы (§§1–7)
| § | Тема | Ключевые понятия |
|---|------|------------------|
| §1 | Физика — наука о природе. Связь с другими науками. Физика и техника | Природа, тело, явление; связь с астрономией, химией, биологией; роль техники |
| §2 | Физическое тело, физическое явление, физическая величина | Тело vs вещество vs явление; величина — численная характеристика |
| §3 | Методы исследования в физике | Наблюдение, эксперимент, гипотеза, теория |
| §4 | Роль измерений. Прямые и косвенные измерения | Прямое: $l$ линейкой. Косвенное: $S = ab$ по двум прямым |
| §5 | Единицы измерения физических величин. СИ | Основные ед.: $м, кг, с, А, К, моль, кд$. Кратные/дольные: $к, М, м, мк, н$ |
| §6 | Действия над физическими величинами | $1\,км/ч = 0{,}278\,м/с$, $1\,г/см^3 = 1000\,кг/м^3$ |
| §7 | Измерительные приборы. Цена деления. Погрешность | $C = (X_2 - X_1)/N$, $\Delta X = C/2$, запись $X \pm \Delta X$ |

### Глава 2. Строение вещества (§§8–13)
| § | Тема | Ключевые понятия |
|---|------|------------------|
| §8 | Дискретное строение вещества | Молекула, атом, $d_{мол} \sim 10^{-10}$ м |
| §9 | Тепловое движение частиц | Хаотическое движение, диффузия, $v_{мол}$ зависит от $T$ |
| §10 | Взаимодействие частиц вещества | Притяжение/отталкивание, равновесное расстояние $r_0$ |
| §11 | Газообразное, жидкое и твёрдое состояния | Расстояния, силы, форма/объём для трёх состояний |
| §12 | Тепловое расширение | $\Delta l \sim \Delta T$; биметалл, рельсы, мостовые швы |
| §13 | Температура. Измерение температуры. Термометры | $t$, $°C$, шкала Цельсия; жидкостный/электрический термометр |

### Глава 3. Движение и силы (§§14–27)
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §14 | Механическое движение. Относительность покоя и движения | СО, тело отсчёта |
| §15 | Траектория, путь, время. Единицы пути и времени | $s$ — длина траектории; $[s] = м$, $[t] = с$ |
| §16 | Равномерное движение. Скорость. Единицы скорости | $v = s/t$, $[v] = м/с$ |
| §17 | Графики пути и скорости при равномерном прямолинейном движении | $s(t)$ — прямая, $v(t)$ — горизонталь |
| §18 | Неравномерное (переменное) движение. Средняя скорость | $\langle v\rangle = s_{полн}/t_{полн}$ |
| §19 | Почему изменяется скорость движения. Инерция | Закон инерции Галилея |
| §20 | Масса тела. Плотность вещества. Единицы плотности | $m$, $[m] = кг$; $\rho = m/V$, $[\rho] = кг/м^3$ |
| §21 | Сила | $\vec{F}$ — мера взаимодействия; величина и направление |
| §22 | Явление тяготения. Сила тяжести | $\vec{F}_т$ — к центру Земли; $F_т = mg$, $g = 9{,}8 \approx 10\,Н/кг$ |
| §23 | Сила упругости | Деформация → $F_{упр}$; закон Гука (качественно) |
| §24 | Вес тела | $P = mg$ (на горизонтальной опоре); вес ≠ сила тяжести (точка приложения) |
| §25 | Единица силы. Измерение силы. Динамометр | $[F] = Н$; пружинный динамометр со шкалой |
| §26 | Сложение сил. Равнодействующая сила | Сонаправленные: $R = F_1 + F_2$; противоположные: $R = |F_1 - F_2|$ |
| §27 | Трение. Сила трения | $F_{тр} \sim N$; покоя / скольжения / качения |

### Глава 4. Давление (§§28–35)
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §28 | Давление. Единицы давления | $p = F/S$, $[p] = Па$ |
| §29 | Давление газа | Удары молекул о стенки; $p$ растёт с $T$ и плотностью |
| §30 | Передача давления газами и жидкостями. Закон Паскаля | $p$ передаётся одинаково во все стороны; гидравлический пресс |
| §31 | Давление жидкости, обусловленное её весом | $p = \rho g h$ |
| §32 | Сообщающиеся сосуды | Однородная жидкость → один уровень |
| §33 | Газы и их вес | Атмосфера имеет массу; столб воздуха давит |
| §34 | Атмосферное давление | Опыт Торричелли; $p_0 = 760\,мм\,рт.\,ст. = 101\,325\,Па$ |
| §35 | Измерение атмосферного давления. Барометры и манометры | Ртутный/анероидный барометр; жидкостный манометр |

### Глава 5. Работа. Мощность. Энергия (§§36–42)
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §36 | Механическая работа. Единицы работы | $A = Fs\cos\alpha$ (для 7-го: $A = Fs$ при $\vec F \parallel \vec s$); $[A] = Дж$ |
| §37 | Полезная и совершённая работа. КПД | $\eta = A_{полез}/A_{полн} \cdot 100\%$ |
| §38 | Мощность. Единицы мощности | $P = A/t$, $[P] = Вт$; $1\,л.\,с. = 736\,Вт$ |
| §39 | Кинетическая энергия | $E_к = mv^2/2$, $[E] = Дж$ |
| §40 | Потенциальная энергия | $E_п$ как «запас» работы; гравитационная и упругая |
| §41 | Расчёт потенциальной энергии | $E_п = mgh$ (грав.), $E_п = k\Delta l^2/2$ (упругая, качественно) |
| §42 | Закон сохранения механической энергии | $E_к + E_п = \text{const}$ (без трения) |

### Глава 6. Лабораторный эксперимент (6 ЛР — отдельная страница `physics_7_lab.html`)
| № | Тема | Связан с § |
|---|------|-----------|
| ЛР-1 | Определение цены деления шкалы измерительного прибора | §7 |
| ЛР-2 | Измерение длины | §4, §7 |
| ЛР-3 | Измерение объёма | §4 (косвенно) |
| ЛР-4 | Изучение неравномерного движения | §18 |
| ЛР-5 | Измерение плотности | §20 |
| ЛР-6 | Изучение силы трения | §27 |

**ИТОГО:** 5 содержательных глав, **42 параграфа**, 6 виртуальных лабораторных работ.

---

## 🎨 SVG-СТАНДАРТ КАЧЕСТВА

### Унаследовано из Физики 8/9/10 (`phys.js` — БЕЗ изменений)
- `drawArrow(x1,y1,x2,y2,color,width,headSize)`
- `molecule(x,y,r,color)` — для §§8–11
- `createGasSim(opts)` — МКТ-симуляция, §8–11
- `thermometer(x, y, h, tMin, tMax, tValue)` — §13
- `tempColor(t, tMin, tMax)` — §12 (тепловое расширение, цветовой градиент)
- `phaseGraphTT` — НЕ нужен в 7 (фазовые переходы в 8 классе)
- 2D-математика (`axes2D`, `plotFunc`) — для §17 (графики $s(t)$, $v(t)$)
- Конвертеры: `kgToGrams`, `mToKm`, `metersPerSecToKmH` (новые, см. ниже)

### НОВЫЕ хелперы в `phys.js` (для главы 3-5 физики 7)

```javascript
// === Стрелка СИЛЫ на теле (с подписью) ===
// Вход: точка приложения, модуль F (Н), угол (deg), цвет, scale (px/Н)
function forceVector(x, y, F, angleDeg, color, label, scale){
  // drawArrow + текст рядом с концом
}

// === Динамометр (пружина + шкала + указатель) ===
function dynamometer(x, y, h, Fmax, Fcurr){
  // Корпус + пружина-зигзаг + шкала 0..Fmax + указатель + подпись "F = X Н"
}

// === Брусок с грузами ===
function blockOnSurface(x, y, w, h, label, weights){
  // Прямоугольник + опционально гири сверху + подпись массы
}

// === Сообщающиеся сосуды (вода в U-образной/двух разной формы) ===
function connectedVessels(x, y, shapeA, shapeB, levelY, fluidColor){
  // Два сосуда соединены трубкой внизу; единый уровень
}

// === Гидравлический пресс ===
function hydraulicPress(x, y, sSmall, sLarge, fSmall, fluidColor){
  // Цилиндр1 (малая S) → жидкость → Цилиндр2 (большая S); стрелки сил F1 и F2
}

// === Ртутный барометр Торричелли ===
function mercuryBarometer(x, y, hMm){
  // Сосуд с ртутью + перевёрнутая трубка; уровень 0..760 мм рт. ст.
}

// === Анероид (стрелочный барометр) ===
function aneroidBarometer(x, y, r, pressurePa){
  // Круглый прибор со стрелкой 720..780 мм рт. ст. / 960..1040 гПа
}

// === Жидкостный U-манометр ===
function uManometer(x, y, w, h, deltaH, fluidColor){
  // U-трубка + разница уровней Δh для измерения давления газа
}

// === Тележка на горке (для §42 — закон сохранения) ===
class HillSlideSim {
  // Горка с переменной высотой; тележка с m, v, h, E_к, E_п, E_полн.
  // Опции: friction on/off.
  // Анимация скатывания + графики E_к(x), E_п(x), E_полн(x).
}

// === Маятник (для §42 — закон сохранения) ===
class PendulumSim {
  // Нить L, шарик m, начальное отклонение φ_0.
  // Анимация колебаний + индикаторы E_к, E_п.
}

// === Линейка с погрешностью (для §7) ===
function rulerWithError(x, y, len, divisions, valueShown){
  // Шкала + подвижная риска + всплывающее "X = (5.4 ± 0.1) см"
}

// === Биметаллическая пластина (для §12) ===
function bimetal(x, y, w, h, deltaT){
  // Двухслойная пластина, гнущаяся при ΔT (наглядно)
}

// === Тепловое расширение стержня (для §12) ===
function expandingRod(x, y, l0, alpha, deltaT){
  // Брусок + индикатор Δl относительно холодного состояния
}
```

### Цветовая палитра Физики 7

**Главная palette: SKY/BLUE 600** (отличается от violet Phys 8, amber Phys 10, teal Phys 11)

- `--pri: #0284c7` (sky-700), `--pri-d: #075985`, `--pri-soft: #e0f2fe`
- Header gradient: `linear-gradient(110deg, #0c4a6e 0%, #0284c7 55%, #7dd3fc 100%)`

Цвета по тематике:
- **Тёплое/нагрев** — красный (`#dc2626`)
- **Холод** — синий (`#2563eb`)
- **Температурный градиент** — HSL `hue=240·(1-t)` (как в phys 8)
- **Твёрдое тело** — индиго (`#4f46e5`)
- **Жидкость** — циан-голубой (`#0891b2`)
- **Газ** — серый (`#64748b`)
- **Сила тяжести $\vec F_т$** — фиолетовый (`#7c3aed`)
- **Сила упругости $\vec F_{упр}$** — оранжевый (`#ea580c`)
- **Сила трения $\vec F_{тр}$** — коричневый (`#92400e`)
- **Нормальная реакция $\vec N$** — серый (`#475569`)
- **Вес $\vec P$** — индиго (`#4338ca`)
- **Равнодействующая $\vec R$** — зелёный (`#10b981`)
- **Давление** — янтарный (`#d97706`)
- **Атмосфера** — голубой (`#0ea5e9`)
- **Работа** — зелёный (`#10b981`)
- **Мощность** — оранжевый (`#ea580c`)
- **Энергия кинетическая** — красно-оранжевый (`#ef4444`)
- **Энергия потенциальная** — синий-фиолетовый (`#6366f1`)

### Правила (обязательны с §1, наследие Физики 8/9/10)

1. **Все единицы измерения через KaTeX** — `\\text{Н}`, `\\text{Па}`, `\\text{Дж}`, `\\text{кВт}`, `\\text{мм рт.ст.}`. Никогда сырой текст.
2. **Slider'ы — в реальных физических величинах**:
   - Длина: $0{,}1..10$ м (snap на 1, 2)
   - Масса: $0{,}01..100$ кг (snap на 0.1, 1, 10, 50)
   - Время: $1..3600$ с (snap на 60, 600, 3600)
   - Скорость: $0..30$ м/с (snap на 1, 5, 10, 20)
   - Объём: $0{,}001..1$ м³ (отображать в л, считать в м³)
   - Плотность: из таблицы (вода 1000, лёд 900, алюминий 2700, железо 7800, ртуть 13600, …)
   - Сила: $0{,}1..1000$ Н (snap на 1, 10, 100)
   - Площадь: $0{,}0001..1$ м² (отображать в см², считать в м²)
   - Давление: $1..200\,000$ Па (snap на 100000)
   - Глубина: $0{,}1..100$ м (snap на 1, 10)
   - Работа: $1..10\,000$ Дж (snap на 1000)
   - Мощность: $1..10\,000$ Вт (snap на 1000)
   - Высота для $E_п$: $0..50$ м (snap на 1, 5, 10)
   - Температура: $-50..150$ °C (snap на 0, 20, 100)
3. **Snap-точки на эталонных значениях**:
   $g = 9{,}8\,Н/кг$, $\rho_{вода} = 1000\,кг/м^3$, $\rho_{ртути} = 13600$, $p_{атм} = 101\,325\,Па = 760\,мм\,рт.\,ст.$
4. **Все формулы — KaTeX, двойной backslash**: `\\dfrac{F}{S}`, `\\rho g h`, `\\vec{F}`.
5. **Векторы — со стрелками** через `drawArrow` (силы, скорости). В KaTeX — `\\vec{F}`, `\\vec{v}`.
6. **Подписи единиц измерения** — обязательны на всех осях, во всех результатах.
7. **Симуляции** — `requestAnimationFrame` с паузой / сбросом / `cancelAnimationFrame` при unmount.
8. **Эмодзи запрещены.** Только inline SVG `.ic` или HTML-сущности (`&#10003;`, `&#9733;`, `&#10022;`).
9. **Никаких пикселей в подписях** — всё в СИ или производных единицах; масштаб `K = px/единица` в каждом виджете.
10. **Авторов нет** — в hub footer'е только «Интерактивный учебник «Физика — 7 класс» · LearnSpace». Раздел «От авторов» из учебника не переносим. Сборку «Дорогие семиклассники!» не переносим. QR-коды учебника — не переносим (они на видеоопыты издателя, в нашем проекте — свои симуляции).
11. **innerHTML для строк с HTML-сущностями** (а не `textContent`).
12. **KaTeX-аудит после каждого Wave**: регексп `[^\\]\\[a-zA-Z]{2,}` по JS-блокам в HTML.
13. **JS parse-check после каждого Wave**: `new Function(scriptBody)` в скрипте-проверке.
14. **Cache-busting `?v=YYYYMMDD`** для всех `/js/phys.js` и `/js/phys7_*.js` — урок из истории с phys9 (см. коммит `a3f7e99`).

### Типы интерактивов по темам

| Тип | Применение |
|-----|-----------|
| **Калькулятор цены деления + симулятор линейки/термометра с погрешностью** | §7 |
| **Конвертер единиц СИ** (кратные/дольные, км/ч ↔ м/с, г/см³ ↔ кг/м³) | §5, §6 |
| **Drag-and-drop «тело / вещество / явление / величина»** | §1, §2 |
| **МКТ-симуляция трёх состояний** (slider $T$, поведение молекул меняется) | §8, §9, §11 |
| **Диффузия** (две жидкости/газа смешиваются — анимация) | §9 |
| **Тепловое расширение стержня** (slider $\Delta T$ → $\Delta l$ визуально) | §12 |
| **Биметаллическая пластина** (slider $T$ → изгиб) | §12 |
| **Виртуальный термометр** (slider $T$, шкала Цельсия с snap на 0, 100) | §13 |
| **Конвертер °C ↔ К** (для любознательных, опционально) | §13 |
| **Симуляция относительности движения** (2 СО, переключатель) | §14 |
| **Калькулятор средней скорости** (как в физ 9 §7, но упрощённо, без графиков) | §16, §18 |
| **График $s(t)$ и $v(t)$** для равномерного движения | §17 |
| **Калькулятор плотности** $\rho = m/V$ + таблица материалов | §20 |
| **Конструктор сил на теле — главный визуал главы 3:** drag-and-drop стрелок $\vec F_т, \vec F_{упр}, \vec F_{тр}, \vec N$ + расчёт равнодействующей | §21, §22, §26 |
| **Виртуальный динамометр** (slider $m$ → пружина растягивается → $F = mg$) | §22, §25 |
| **Сложение сил** (slider $F_1, F_2$ → результирующая, наглядно через `drawArrow`) | §26 |
| **Симулятор трения** (slider $N$, $\mu$ → $F_{тр}$; брусок едет/стоит) | §27 |
| **Калькулятор давления** $p = F/S$ с примерами (гвоздь / тапок / трактор) | §28 |
| **Симуляция давления газа** (slider $T$, $V$ → удары молекул, $p$ растёт/падает) | §29 |
| **Гидравлический пресс — главный визуал главы 4:** slider $S_1, S_2, F_1$ → $F_2 = F_1 \cdot S_2/S_1$ | §30 |
| **Калькулятор $p = \rho g h$** + столб жидкости разной формы | §31 |
| **Сообщающиеся сосуды** (slider формы 2-го сосуда, заливаем воду → выравнивание) | §32 |
| **Виртуальный барометр Торричелли** (slider высоты места → атм. давление) | §34, §35 |
| **Калькулятор $A = Fs$** + симуляция «толкаем брусок» | §36 |
| **Калькулятор КПД** $\eta = A_{полез}/A_{полн}$ + примеры (наклонная плоскость) | §37 |
| **Калькулятор мощности** $P = A/t$ + таблица мощностей (человек, машина, …) | §38 |
| **Калькулятор $E_к = mv^2/2$** + симулятор (растёт квадратично от $v$) | §39 |
| **Калькулятор $E_п = mgh$** + симулятор подъёма/падения | §41 |
| **Главный визуал курса — Закон сохранения энергии**: горка с тележкой / маятник; графики $E_к(t), E_п(t), E_{полн}(t)$ | §42 |

---

## 🚀 ПОРЯДОК РЕАЛИЗАЦИИ

42 параграфа + 6 ЛР → **8 фаз** (как у Физики 8).

### Phase 0: Архитектура (фундамент)
- `physics_7_hub.html` — палитра **sky/blue** (по обложке учебника — бирюзовый с акцентом на синий из «ФИЗИКА»): `--pri:#0284c7` (sky-700), `--pri-d:#075985`, `--pri-soft:#e0f2fe`. Header gradient `linear-gradient(110deg,#0c4a6e 0%,#0284c7 55%,#7dd3fc 100%)`. Палитра не пересекается с Физикой 8 (violet), 9 (orange/amber-yellow), 10 (yellow/amber), 11 (teal/cyan).
- 5 ch-файлов: `physics_7_ch1.html` (методы познания), `_ch2.html` (строение вещества), `_ch3.html` (движение и силы), `_ch4.html` (давление), `_ch5.html` (работа/мощность/энергия)
- 1 отдельная страница: `physics_7_lab.html` (6 ЛР)
- Миграция `039_physics_7_hub.sql` (следующий свободный номер после 038_physics_9_hub.sql)
- **Расширение `frontend/js/phys.js`**: новые хелперы — `forceVector`, `dynamometer`, `blockOnSurface`, `connectedVessels`, `hydraulicPress`, `mercuryBarometer`, `aneroidBarometer`, `uManometer`, `rulerWithError`, `bimetal`, `expandingRod`, классы `HillSlideSim`, `PendulumSim`
- 2D-хелперы (axes2D, plotFunc) подключены в каждый ch
- KaTeX CDN + auto-render (с `delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}]` — урок из phys9 ch1)
- POLISH CSS + bump-score JS из общего `phys-textbook-widgets.css`
- Тестовая страница `physics_7_test.html` (рендер всех новых хелперов) — НЕ публикуется
- В каждом `.html` хедере подключение JS — **обязательно с `?v=YYYYMMDD`** для cache-busting (урок из истории с phys9, коммит `a3f7e99`)
- **Sidebar-фикс**: добавить `@media(min-width:981px){#sidebar-btn{display:none}.col-side-backdrop.show{display:none}}` сразу (урок из коммита `9d5a295`)

### Phase 1: Глава 1 «Физические методы познания природы» (§§1–7) — 3 волны
- **Wave 1**: §1 (физика как наука: drag-and-drop «связь с астрономией/химией/биологией/техникой») + §2 (тело / вещество / явление / величина — DnD-классификатор: 12 карточек по 4 корзинам).
- **Wave 2**: §3 (методы исследования — quiz «опыт vs наблюдение vs гипотеза») + §4 (прямые/косвенные измерения — калькулятор косвенных: $S = ab$, $V = abc$, $\rho = m/V$) + §5 (СИ-конвертер — slider кратных/дольных, табличный тренажёр).
- **Wave 3**: §6 (действия над величинами — конвертер км/ч ↔ м/с, г/см³ ↔ кг/м³, Вт ↔ кВт ↔ л.с.) + §7 (**главный визуал главы 1**: виртуальная линейка с подвижной риской и шкалами разной цены деления — symbolic «как изменится погрешность, если разделить шкалу на 10») + **Финал главы 1** (5 боссов: цена деления, СИ, конвертация, погрешность, косвенное измерение; ачивка «Юный физик»).

### Phase 2: Глава 2 «Строение вещества» (§§8–13) — 3 волны
- **Wave 1**: §8 (дискретное строение — иллюстрация $d_{мол}$ vs $d_{волоса}$, конструктор молекулы H₂O/CO₂) + §9 (тепловое движение — симуляция диффузии: чернила в воде с slider $T$, **createGasSim** из phys.js).
- **Wave 2**: §10 (взаимодействие частиц — симуляция «равновесное расстояние» $r_0$: график $F(r)$) + §11 (**главный визуал главы 2**: переключатель «твёрдое / жидкое / газообразное» — три режима МКТ-симуляции).
- **Wave 3**: §12 (тепловое расширение — симуляция стержня и биметалла с slider $\Delta T$) + §13 (виртуальный термометр — slider $T$ от $-50..150$°C, шкала Цельсия) + **Финал главы 2** (5 боссов: молекулы, диффузия, состояния, расширение, термометр; ачивка «Знаток вещества»).

### Phase 3: Глава 3 «Движение и силы» — часть 1: кинематика (§§14–20) — 3 волны
- **Wave 1**: §14 (относительность — 2 СО, drag-переключатель «откуда смотрим») + §15 (траектория / путь / время — DnD).
- **Wave 2**: §16 (равномерное движение — симулятор автомобиля с slider $v$, измеряем путь за $t$) + §17 (**главный визуал кинематики**: интерактивный график $s(t)$ + $v(t)$ для равномерного движения; slider $v_0, s_0$).
- **Wave 3**: §18 (средняя скорость — калькулятор двух участков, аналог phys 9 ch1 §7 но упрощённо) + §19 (инерция — симуляция «убираем силу, тело продолжает движение») + §20 (плотность — калькулятор $\rho = m/V$, таблица материалов, ВАХ-плоттер для «угадай вещество по $\rho$»).

### Phase 4: Глава 3 «Движение и силы» — часть 2: силы (§§21–27) — 3 волны
- **Wave 1**: §21 (что такое сила — DnD «какая сила действует?» с картинками) + §22 (сила тяжести — калькулятор $F_т = mg$, slider $m$, snap на яблоко 100 г, ребёнок 30 кг, машина 1000 кг) + §23 (сила упругости — симуляция растягивающейся пружины с динамометром).
- **Wave 2**: §24 (вес тела — конструктор «тело на опоре / на подвесе»; разница «сила тяжести vs вес») + §25 (виртуальный динамометр — slider $F$ от 0 до $F_{max}$ → растяжение пружины → показание стрелки).
- **Wave 3**: §26 (**главный визуал главы 3**: «Конструктор сил на теле» — drag-and-drop стрелок $\vec F_т, \vec F_{упр}, \vec F_{тр}, \vec N$, расчёт равнодействующей $\vec R$ + текстовый вывод «тело в равновесии / ускоряется») + §27 (симулятор трения — slider $N$ и $\mu$ → $F_{тр}$, brick едет/стоит при $F_{тяги}$) + **Финал главы 3** (10 боссов: путь, скорость, средняя скорость, плотность, сила тяжести, вес, динамометр, равнодействующая, трение, инерция; ачивка «Мастер движения»).

### Phase 5: Глава 4 «Давление» (§§28–35) — 3 волны
- **Wave 1**: §28 (давление — калькулятор $p = F/S$, примеры «гвоздь / тапок / трактор / лыжи на снегу») + §29 (давление газа — симуляция: молекулы бьют о стенки, slider $T$, $V$ → $p$).
- **Wave 2**: §30 (закон Паскаля — иллюстрация: «надавили на воздушный шар сверху — стрелки наружу»; **гидравлический пресс**: slider $S_1, S_2, F_1$ → $F_2 = F_1 S_2/S_1$) + §31 (давление жидкости — калькулятор $p = \rho g h$, столб разной формы, парадокс «гидростатический парадокс») + §32 (сообщающиеся сосуды — slider формы 2-го сосуда → единый уровень; калькулятор «однородная vs неоднородная»).
- **Wave 3**: §33 (газы и их вес — расчёт «масса воздуха в комнате»: slider $V$, $\rho_{возд}$) + §34 (атмосферное давление — опыт Магдебургских полушарий, симуляция; калькулятор $p_0$ на разной высоте) + §35 (**главный визуал главы 4**: ртутный барометр Торричелли + анероид + U-манометр — три прибора, slider $p$, наблюдаем разные шкалы) + **Финал главы 4** (7 боссов: давление, Паскаль, гидравлический пресс, гидростатика, сообщ. сосуды, атм. давление, барометр; ачивка «Властелин давления»).

### Phase 6: Глава 5 «Работа. Мощность. Энергия» (§§36–42) — 3 волны
- **Wave 1**: §36 (механическая работа — калькулятор $A = Fs$, симуляция «двигаем брусок по поверхности», работа силы трения отрицательная) + §37 (КПД — калькулятор $\eta = A_{полез}/A_{полн}$, примеры подъёма груза по наклонной vs вертикально).
- **Wave 2**: §38 (мощность — калькулятор $P = A/t$, таблица мощностей: человек 100 Вт, лошадь 736 Вт, машина 100 кВт, ракета 100 МВт) + §39 (кинетическая энергия — калькулятор $E_к = mv^2/2$, симуляция «удвоили $v$ → $E_к$ выросло в 4 раза») + §40 (потенциальная энергия — введение, симулятор подъёма груза, $E_п$ как запас работы).
- **Wave 3**: §41 (расчёт $E_п = mgh$ — slider $m, h$, snap на 1 кг, 10 м; калькулятор $E_п$ для гравитационной и упругой деформации пружины) + §42 (**главный визуал курса**: «Горка с тележкой / маятник» — `HillSlideSim` / `PendulumSim`: тележка скатывается, $E_к + E_п = \text{const}$; графики $E_к(t), E_п(t), E_{полн}(t)$ в реальном времени; toggle «с трением / без») + **Финал главы 5** (7 боссов: работа, КПД, мощность, $E_к$, $E_п$, $E_п$ упругая, сохранение; ачивка «Энергетик»).

### Phase 7: Лабораторный практикум (`physics_7_lab.html`) — 1 волна
Отдельная страница с 6 виртуальными ЛР. Каждая ЛР = карточка с интро + методическими подсказками («Цель», «Оборудование», «Проверь себя», «Ход работы», «Контрольные вопросы», «Вывод», «Суперзадание») + симуляция + таблица измерений + расчётная формула + автогенерируемый отчёт + кнопка «Сдать ЛР».
- ЛР-1 цена деления (§7) — виртуальные приборы (мензурка, термометр, амперметр, линейка), задание определить цену деления и снять отсчёт.
- ЛР-2 измерение длины (§4, §7) — виртуальная линейка с подвижной риской, snap на мм, оценка погрешности.
- ЛР-3 измерение объёма (§4) — мензурка + тело неправильной формы (вытеснение жидкости); расчёт $V = V_2 - V_1$.
- ЛР-4 неравномерное движение (§18) — шарик на наклонной плоскости, slider угла, secunbomer + лента; расчёт $\langle v\rangle$ на двух участках.
- ЛР-5 плотность (§20) — весы + мензурка + 3 образца; расчёт $\rho$ и определение вещества по таблице.
- ЛР-6 сила трения (§27) — динамометр + брусок с грузами на разных поверхностях; расчёт $F_{тр}$ и сравнение «дерево / резина / металл».

Ачивка **«Лаборант 7 класса»** (+80 XP) за прохождение всех 6 ЛР.

### Phase 8: Финал курса Физика 7
- Итоговая шпаргалка (5 mini-карточек: методы, вещество, движение/силы, давление, работа/энергия)
- **10 интегрированных боссов**, комбинирующих темы из разных глав:
  1. **Цена деления + измерение**: линейка с делением 0.5 см, отсчёт.
  2. **Плотность + масса**: найти $V$ алюминиевого бруска массой 270 г.
  3. **Сила тяжести + динамометр**: показание динамометра для $m = 250$ г на Земле и на Луне ($g_{Л} = 1{,}6$ Н/кг).
  4. **Равнодействующая + Ньютон**: 3 силы под углами, найти $\vec R$ (для 7-го — только параллельные).
  5. **Давление + гидростатика**: давление на дне бассейна глубиной 3 м.
  6. **Закон Паскаля + гидравлика**: малый поршень 2 см², большой 200 см²; на малый давит $F_1 = 50$ Н; что поднимает большой?
  7. **Атмосферное давление + барометр**: разница давлений между этажами 30-этажного дома.
  8. **Работа + сила трения**: работа силы трения при перемещении бруска на 5 м с $F_{тр} = 20$ Н.
  9. **КПД наклонной плоскости**: поднимаем груз 50 кг по наклону длиной 4 м, высота 1 м, прикладывая 150 Н. Найти $\eta$.
  10. **Магистр физики 7 (закон сохранения)**: тело массой 0.5 кг падает с 10 м без сопротивления; найти $v$ у земли.
- Ачивка **«Магистр физики 7»** (+150 XP).
- Кнопка «К каталогу учебников» → `/textbooks`.

---

## 📦 Структура каждого § (стандарт, наследует Физику 8)

### Каждый § содержит:
- **3 теоретические карточки** (`theory`, `rule`, `example`) с SVG-схемами/графиками.
- **4 интерактива** (`.wg` виджеты):
  1. **Главная симуляция / визуализатор** (специфичный для темы)
  2. **Калькулятор закона** (ввод параметров → формула с подстановкой → результат с единицами)
  3. **DnD / Квикфайр** (понятийный тренажёр)
  4. **Тренажёр расчётных задач** (5–6 задач с числовым ответом, допуск 1–5 %)
- **Кнопка «Я прочитал § (+10 XP)»**
- **Прогресс/XP**: IV1 15 % / 10 XP, IV2 15 % / 10 XP, IV3 25 % / 15 XP, IV4 25 % / 15 XP, чтение 30 % / 10 XP

### Финал главы:
- **Итоговая шпаргалка** с формулами и единицами.
- **5–10 интегрированных боссов** (синтез тем главы)
- **Ачивка «Мастер главы N»** + 50 XP + confetti
- **Кнопка** перехода к следующей главе

---

## 📊 Оценка объёма

| Глава | § | LOC |
|-------|---|-----|
| Phase 0: skeleton + расширение phys.js | — | 3 500 |
| Глава 1 Методы познания (§§1–7) | 7 | 8 000 |
| Глава 2 Строение вещества (§§8–13) | 6 | 7 500 |
| Глава 3 Движение и силы (§§14–27) | 14 | 17 000 |
| Глава 4 Давление (§§28–35) | 8 | 10 500 |
| Глава 5 Работа / Мощность / Энергия (§§36–42) | 7 | 9 500 |
| Phase 7: Лабораторный практикум (6 ЛР) | — | 5 000 |
| Phase 8: финал курса | — | 1 800 |
| **Итого** | **42** | **~62 800 LOC** |

Это чуть больше Физики 8 (~61 000) из-за **главы методологии** (§§1–7) — для семиклассника-новичка введение в науку нужно объяснять с нуля, плюс новые типы интерактивов (конвертеры СИ, симулятор линейки с погрешностью).

---

## ⚠️ Критические правила (унаследовано + новое)

### ❌ НЕ делать
- **Slider'ы в пиксельных диапазонах** (40..150). Только в реальных физических единицах с правильным масштабом отрисовки (`K = px/единица`).
- **Подписи без единиц измерения** ($F = 12$ — это что? Н? кгс?). Всегда: $F = 12$ Н.
- **Эмодзи** (`⚠`, `🌡️`, `💧`, `⚖️`). Только inline SVG `.ic` или HTML-сущности (`&#10003;`, `&#9733;`).
- **Одиночный `\` перед буквой** в JS template literals: `\dfrac`, `\sin`, `\vec`, `\rho`. ВСЕГДА `\\dfrac`, `\\rho`.
- **Сырой KaTeX в `<option>`** — KaTeX там не рендерится. Только unicode-текст (`F/S`, `Δt`, `ρgh`).
- **`\degree`** не существует в KaTeX — используй `^\\circ`.
- **Скобка вне `$..$`**: `($v_1+v_2)/2$` — это БАГ (KaTeX парсит `v_1+v_2)/2` с orphan-скобкой). Правильно: `$(v_1+v_2)/2$`. (Урок из коммита `a3f7e99` для phys 9.)
- **`renderMathInElement(box)` без `delimiters`** — auto-render по умолчанию знает только `$$..$$`, `\(..\)`, `\[..\]`, но НЕ `$..$`. Всегда передавать `{delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}], throwOnError:false}`. (Тот же урок.)
- **`textContent`** для строк с HTML-сущностями — только `innerHTML`.
- **Бесконечные симуляции без паузы** — всегда кнопка «Пауза / Сброс» и `cancelAnimationFrame` при закрытии виджета.
- **Авторов в hub / footer** — Исаченкову, Громыко, Лещинского НЕ упоминаем.
- **Дублирование Физики 8** — не копировать §1 «Внутренняя энергия» из 8 в 7. В 7-м МКТ изучается БЕЗ понятия внутренней энергии.
- **Симуляции с нарушенной размерностью** — например, плотность в г/см³ нельзя подставлять в $p = \rho g h$, надо переводить в кг/м³.
- **QR-коды учебника** — НЕ переносим (они на видеоопыты издателя; у нас свои симуляции).
- **Backdrop без скрытия на desktop** — на ≥981px `#sidebar-btn` должен быть `display:none` (см. фикс `9d5a295`).
- **Подключение JS без cache-busting** — обязательно `?v=YYYYMMDD` для `phys.js`, `phys7_*.js` (фикс `a3f7e99`).

### ✅ Обязательно
- **Все единицы СИ в формулах** и подписях, табличные значения — с указанием единиц (Н, Па, Дж, Вт, кг/м³).
- **Snap-точки в slider'ах** для эталонных значений: $g = 9{,}8$ Н/кг, $\rho_{вода} = 1000$ кг/м³, $\rho_{ртути} = 13600$ кг/м³, $p_0 = 101\,325$ Па.
- **Цветовая кодировка** едина по всем § (сила тяжести/упругости/трения/нормальная — каждая своим цветом; жидкость голубая, газ серый, твёрдое индиго).
- **KaTeX-аудит** через `node` после каждого Wave (паттерн `[^\\]\\[a-zA-Z]{2,}` в JS-блоках).
- **JS parse-check** через `new Function(scriptBody)` после каждого Wave.
- **Поиск по коду** — ТОЛЬКО `ast-index`, никакого `grep` (правило проекта).
- **Push после каждого Wave**: `git add <files> && git commit -m "feat(phys7 chN): Wave M — описание" && git push origin master`.
- **Реалистичные значения** в задачах: $g = 9{,}8\,Н/кг$, $\rho_{вода} = 1000$, $\rho_{ртути} = 13600$, $\rho_{алюминия} = 2700$, $\rho_{железа} = 7800$, $p_0 = 101\,325\,Па = 760\,мм\,рт.\,ст.$, $1\,л.\,с. = 736\,Вт$.
- **Sidebar-фикс на desktop** в самом начале каждого ch — добавить @media-rule сразу.

---

## 🎬 Запуск

**Phase 0**: skeleton 5 ch + `physics_7_hub.html` + `physics_7_lab.html` + миграция `039_physics_7_hub.sql` + расширение `phys.js` (силы, давление, барометры, hill/pendulum sims).

Палитра hub: **sky/blue** (по обложке учебника). После Phase 0 → Phase 1 Wave 1 (§1 «Физика — наука о природе» + §2 «Физическое тело, явление, величина»).

После завершения всех 8 Phase **Физика 7 → 5-й физический курс проекта** и **первый учебник, полностью покрывающий физику с нуля** для самого младшего класса в линейке. Это закрывает «нижнюю» ступень физики и завершает линейку 7→8→9→10→11 (хотя для 11 есть только phys11_chN, без полного hub-комплекта).

---

## 🔗 Связи с системой

- **Миграция БД**: `039_physics_7_hub.sql` — добавить записи в `textbooks`:
  - parent `physics-7` (slug, title «Физика — 7 класс», grade 7, author `''`, html_path `physics_7_hub.html`, para_count 48 = 42 § + 6 ЛР, color `sky`, sort_order 3)
  - 5 children + lab (как в `037_physics_8_hub.sql`, идемпотентная)
- **Маршруты**: `/textbooks/physics-7` → hub, `/textbooks/physics-7/ch1..5`, `/textbooks/physics-7/lab`.
- **Каталог**: появляется на `frontend/textbooks.html` в секции 7 класса (рядом с Алгеброй 7, Геометрией 7).
- **Достижения**: 5 ачивок глав («Юный физик», «Знаток вещества», «Мастер движения», «Властелин давления», «Энергетик») + 1 лаб («Лаборант 7 класса») + 1 финальная («Магистр физики 7»). Все добавляются через миграцию или скрипт-сидер.
- **XP**: ~42 § × ~60 XP + 5 ач × 50 + лаб ач 80 + финал 150 ≈ **2 980 XP** за полное прохождение курса.

---

## 🧠 Чем Физика 7 отличается от Физики 8

| Аспект | Физика 7 | Физика 8 |
|--------|----------|----------|
| Целевая аудитория | Новичок, первый курс физики | Знаком с понятиями физ. величины и СИ |
| Глава методологии | **Есть** (§§1–7, новый блок) | Нет (предполагается изучено в 7) |
| МКТ | Качественно: 3 состояния, диффузия, расширение | Количественно: внутренняя энергия, теплоёмкость |
| Силы | Сонаправленные/противоположные, без векторной алгебры | (нет — электрические силы в gl. 2) |
| Гидростатика | **Есть** ($p = \rho g h$, Паскаль, сосуды, Архимед НЕТ) | Нет |
| Атмосфера и барометры | **Есть** | Нет |
| Работа/энергия | $A = Fs$ (параллельные), $E_к, E_п$, закон сохранения | Нет (тепло — $Q = cm\Delta T$) |
| Электричество | Нет | Есть (вся глава 2) |
| Оптика | Нет | Есть (вся глава 3) |
| Векторы | Стрелки на схеме, без проекций | Стрелки на схеме (поля $\vec E, \vec B$) |
| Главный визуал курса | Закон сохранения механической энергии (горка/маятник) | Линза-конструктор (§38) |

Курсы дополняют друг друга. Физика 7 закладывает базу (как мыслить физически, как измерять), Физика 8 расширяет на новые феномены (тепло, электричество, свет).

---

## 📚 Ссылки на родственные планы

- [PLAN_PHYSICS_8.md](../textbooks-8/PLAN_PHYSICS_8.md) — модель архитектуры, переиспользуем 80% инфраструктуры.
- [PLAN_PHYSICS_9.md](../textbooks-9/PLAN_PHYSICS_9.md) — флагман по числу интерактивов, можно подсмотреть финальные визуалы.
- [PLAN_PHYSICS_10.md](../textbooks-10/PLAN_PHYSICS_10.md) — первоисточник `phys.js`, базовая палитра расчётных виджетов.

---

## ✅ ИТОГОВАЯ СВОДКА РЕАЛИЗАЦИИ

| Phase | Содержание | Файл | Строк | Коммит |
|-------|-----------|------|-------|--------|
| 0 | Фундамент: hub, 5 ch-скелетов, lab-скелет, миграция 039, расширение phys.js на 13 новых хелперов/классов | `physics_7_hub.html`, `physics_7_ch1..5.html`, `physics_7_lab.html`, `phys.js`, `039_physics_7_hub.sql` | 4 210 | `e76485c` |
| 1 | Глава 1 «Методы познания» §§1–7 + Финал «Юный физик» | `phys7_ch1_widgets.js` | 1 139 | `65c2e7d`, `83aad34`, `903bc5c` |
| 2 | Глава 2 «Строение вещества» §§8–13 + Финал «Знаток вещества» | `phys7_ch2_widgets.js` | 1 195 | `ed97b6d` |
| 3 | Глава 3 ч.1 «Кинематика» §§14–20 | `phys7_ch3_widgets.js` (часть 1) | 1 082 | `96a2097` |
| 4 | Глава 3 ч.2 «Силы» §§21–27 + Финал «Мастер движения» | `phys7_ch3_widgets.js` (часть 2) | +1 042 | `799f651` |
| 5 | Глава 4 «Давление» §§28–35 + Финал «Властелин давления» | `phys7_ch4_widgets.js` | 1 300 | `c7345a7` |
| 6 | Глава 5 «Работа/Мощность/Энергия» §§36–42 + Финал «Энергетик» — ⭐ **главный визуал курса: HillSlideSim + PendulumSim** | `phys7_ch5_widgets.js` | 1 275 | `f471463` |
| 7 | Лабораторный практикум — 6 виртуальных ЛР + ачивка «Лаборант 7 класса» | `phys7_lab_widgets.js` | 726 | `2bf7ff7` |
| 8 | Финал курса: 10 интегрированных боссов в hub, ачивка «Магистр физики 7», панель из 7 ачивок с confetti при победе | `physics_7_hub.html` (расширение) | +60 | этот коммит |

**ИТОГО:** ~12 200 строк (без HTML-скелетов; с ними около ~14 100).
Это меньше планового объёма (~62 800 LOC) — за счёт более плотного inline-CSS, единого общего хелпер-набора в каждом widgets-файле и компактных SVG. Качество интерактивов соответствует плану.

### Главные визуалы по главам (все реализованы)
1. Гл. 1, §7 — **виртуальная линейка** с выбором цены деления и подвижной риской.
2. Гл. 2, §11 — **переключатель 3 состояний** с тремя разными режимами анимации МКТ.
3. Гл. 3, §17 — **рядом графики $s(t)$ и $v(t)$** для двух тел.
4. Гл. 3, §26 — **«Конструктор сил на теле»** с 4 stiders → равнодействующая R и вердикт.
5. Гл. 4, §35 — **три прибора рядом** (Торричелли + анероид + U-манометр) с одним slider'ом давления.
6. Гл. 5, §42 — ⭐ **закон сохранения механической энергии**: тележка на горке через `HillSlideSim` + маятник через `PendulumSim` с progress-bar'ами $E_к/E_п/E_{полн}$ в реальном времени.

### Ачивки (7 шт.)
| Slug | Название | Условие | XP |
|------|----------|---------|-----|
| `physics7_ch1_yphys` | Юный физик | Все 5 боссов финала главы 1 | 50 |
| `physics7_ch2_master` | Знаток вещества | Все 5 боссов финала главы 2 | 50 |
| `physics7_ch3_master` | Мастер движения | Все 10 боссов финала главы 3 | 50 |
| `physics7_ch4_master` | Властелин давления | Все 7 боссов финала главы 4 | 50 |
| `physics7_ch5_master` | Энергетик | Все 7 боссов финала главы 5 | 50 |
| `physics7_lab_master` | Лаборант 7 класса | Сдать все 6 ЛР | 80 |
| `physics7_course_master` | Магистр физики 7 | Все 10 интегрированных боссов курса | 150 |

### XP за полное прохождение (оценка)
- 42 § × (10 чтение + 10 квиз + 15 DnD + 15 тренажёр) = **2 100 XP** базы
- 5 финалов глав × (5..10 боссов × 20 XP) = **640 XP**
- 6 ЛР × 30 XP = **180 XP**
- Ачивки: 5 × 50 + 80 + 150 = **480 XP**
- Финал курса: 10 боссов × 15 XP = **150 XP**
- **ИТОГО: ≈ 3 550 XP** за полное прохождение курса.

### Использование `phys.js` (Phase 0 хелперы)
В курсе физики 7 реально используются: `dynamometer` (ЛР-6 + §25), `hydraulicPress` (§30), `connectedVessels` (§32), `mercuryBarometer` (§34 + §35), `aneroidBarometer` (§35), `uManometer` (§35), `HillSlideSim` (§42), `PendulumSim` (§42). Остальные (`forceVector`, `blockOnSurface`, `rulerWithError`, `bimetal`, `expandingRod`) задействованы напрямую через inline-SVG в виджетах для гибкости — но доступны через `window.PHYS.*` для будущих волн / других учебников.

### Применённая миграция БД
`039_physics_7_hub.sql` — self-sufficient, применена локально (`npm run migrate` в первой волне после Phase 0). На свежей БД безопасно отыграется одна.

### Уроки, учтённые с первого коммита
- Cache-busting `?v=20260530` на `phys.js` и все `phys7_*.js`.
- `@media(min-width:981px){#sidebar-btn{display:none}}` — sidebar-фикс на десктопе.
- `delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}]` для KaTeX везде.
- `$(v_1+v_2)/2$` (скобки внутри `$..$`), а не `($v_1+v_2)/2$`.
- Self-sufficient миграция (`INSERT OR IGNORE` родителя + `UPDATE`).
- Никаких эмоджи, только HTML-сущности (`&#10003;`, `&#9733;`) и inline SVG.

**Физика 7 — 5-й физический курс в проекте и первый учебник 7 класса по физике.**
