Files
Learn_System/plans/textbooks-7/PLAN_PHYSICS_7.md
T
Maxim Dolgolyov e4050fcaed feat(phys7): Phase 8 — финал курса. Панель 7 ачивок + confetti + завершение плана
ХАБ physics_7_hub.html:
- Подключён canvas-confetti с CDN (jsdelivr 1.6.0)
- Заменена старая ach-strip с одной ачивкой на полную панель .ach-section
  с сеткой из 7 карточек: 5 ачивок глав + лаб + master
- Master-карточка выделена (grid-column: 1/-1, фиолетовый градиент при .lit)
- Каждая карточка: иконка (★ при .lit, ? до получения), название, описание условия
- Счётчик «N / 7 ачивок получено»
- renderAchievements() читает все 7 ключей из localStorage и подсвечивает
  получённые, обновляется при focus
- При первом получении «Магистр физики 7» — confetti-залп в 3 волны (через
  sessionStorage флаг, чтобы не запускать повторно при ре-открытии хаба)
- Текст финального аккордеона: «...по всем 5 главам» вместо «3»

ПЛАН plans/textbooks-7/PLAN_PHYSICS_7.md:
- Заголовок отмечен как « ЗАВЕРШЁН» (Phase 0..8)
- Добавлена итоговая сводка реализации:
  * Таблица 9 фаз с файлами, строками и коммитами
  * Список 6 главных визуалов с указанием §
  * Таблица 7 ачивок (slug / название / условие / XP)
  * Оценка XP за полное прохождение (~3 550)
  * Список фактически использованных хелперов phys.js
  * Список уроков, учтённых с первого коммита (cache-busting, sidebar-фикс,
    delimiters, скобки в KaTeX, self-sufficient миграция, без эмоджи)

Итог: 5-й физический курс в проекте, первый учебник 7 класса по физике.
8 фаз × несколько волн каждая = ~14 100 строк кода. Все интерактивы работают.
parse-check, smoke-test и pre-commit хуки пройдены на каждом этапе.
2026-05-30 12:01:50 +03:00

530 lines
56 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План реализации: Физика 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)` — для §§811
- `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-сущности (`✓`, `★`, `✦`).
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 Движение и силы (§§1427) | 14 | 17 000 |
| Глава 4 Давление (§§2835) | 8 | 10 500 |
| Глава 5 Работа / Мощность / Энергия (§§3642) | 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-сущности (`✓`, `★`).
- **Одиночный `\` перед буквой** в 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 класса по физике.**