Commit Graph

948 Commits

Author SHA1 Message Date
Maxim Dolgolyov 46d373752c fix(profile): visual frame previews in shop + sidebar avatar sync
Shop items of type 'frame' now render a real avatar-sized preview with
the frame's CSS applied (instead of a generic lucide icon) so buyers
see exactly what they're paying for. Title items get a tag-shaped
preview in their color. The avatar-frames section above the shop also
shows the user's actual avatar inside the frame circles, not 'LS' text.

Sidebar nav-avatar now:
  • renders the uploaded avatar_url instead of always showing initials
    (LS.initPage + new LS.refreshNavAvatar helper)
  • picks up frame CSS on every page via applyCosmetics — previously
    only dashboard.html applied it
  • repaints immediately after picking/deleting an avatar preset
    (avPickPreset / avDelete now call LS.setUser + LS.refreshNavAvatar)

Backend getMyActive resolves avatar_frame to {id, css} for both
gamification frames ('fire', 'crown', ...) and shop-purchased frames
('shop_<id>'), so the client doesn't need a second round-trip to
look up the CSS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 15:04:27 +03:00
Maxim Dolgolyov 8e39993bb0 feat(geom10 W3): Раздел 2 §4-§6 — Параллельность (полная реализация)
§4 Прямые в пространстве:
- 3 случая side-by-side (пересек./парал./скрещ.)
- Куб с 3 типами пар рёбер подсвечены тремя цветами
- 6 теоретических карточек (определения, признак скрещ., теорема о парал., угол, расстояние)
- 3 тренажёра: тип пары (7), угол между прямыми (5), верно/неверно (5)
- Босс §4: 5 этапов, +65 XP

§5 Прямая и плоскость:
- 3 случая (a⊂α / a∩α=M / a∥α)
- Признак параллельности прямой и плоскости (SVG)
- 4 теоретические карточки
- 3 тренажёра: какой случай (6), применение признака (5), параллельность в кубе (5)
- Босс §5: 5 этапов, +65 XP

§6 Две плоскости:
- 2 случая (пересекаются по прямой / параллельны)
- Признак параллельности плоскостей через 2 пересек. прямые
- 4 теоретические карточки
- 3 тренажёра: расположение (5), достаточно ли условий (5), свойства (5)
- Босс §6: 5 этапов, +65 XP

Финал R2 — stub до W4 (4 босса + ачивка stereo10_r2_master).
2026-05-29 15:04:10 +03:00
Maxim Dolgolyov 788d612716 feat(geom11 ch4 wave2): §10 «Координаты и векторы 3D» + 3D-визуализатор 2026-05-29 15:00:13 +03:00
Maxim Dolgolyov 3cc52e21b0 feat(exam9): link tasks to textbook + difficulty-ordered random + topic exclusion
Practice (random) now picks tasks by ascending difficulty so the first
slot is always level 1 and the session ramps up. Adds ?exclude= to drop
specific subtopics from the random pool, with a per-section checkbox
modal in the UI.

Each task carries a topic_ref (textbook chapter + paragraph) shown as
a 'Учить тему · §N' button next to the solution, deep-linking to the
right section of /textbook/<slug>. Mapping seeded for all 15 math9
subtopics in migration 028.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 14:55:47 +03:00
Maxim Dolgolyov 441321c598 feat(geom11 ch4 wave1): §8 «Планиметрия» + §9 «Площади и объёмы» (повторение) 2026-05-29 14:55:20 +03:00
Maxim Dolgolyov 0e52fedc2d feat(geom10 W2): Раздел 1 §3 Сечения + Финал R1 (4 босса + ачивка)
§3 Построения сечений:
- Hero: куб с шестиугольным сечением через M, N, P (4-шаговая анимация: точки → 2 ребра → 6 точек → заливка)
- 3 типа сечений куба: треугольник / прямоугольник / правильный шестиугольник
- Метод следов: куб с M, N, K и следом плоскости сечения на основании
- 4 теоретические карточки (определение, метод следов, параллельные сечения, max сторон)
- 3 тренажёра: тип многоугольника (6), max сторон (5), метод следов (5)
- Босс §3: 5 этапов, +70 XP

Финал раздела 1 (4 босса):
- Босс 1 Элементы тел (4 этапа, +35 XP)
- Босс 2 Аксиомы (4 этапа, +35 XP)
- Босс 3 Сечения (4 этапа, +35 XP)
- Босс 4 Сборная (5 этапов, +45 XP)
- Celebration: ачивка stereo10_r1_master + 100 XP бонус
- Прогресс хранится в STATE.bosses{f1..f4} + geometry10_achievements в localStorage
2026-05-29 14:54:52 +03:00
Maxim Dolgolyov bf794f76a6 feat(geom11 ch3 final): Финал Раздела 3 (5 боссов + ачивка) 2026-05-29 14:49:25 +03:00
Maxim Dolgolyov bfa7c46ef5 feat(geom10 W1): Раздел 1 §1 + §2 — Введение в стереометрию
§1 Пространственные фигуры:
- 5 hero-тел (призма/пирамида/цилиндр/конус/шар) через stereo3d
- Куб ABCDA1B1C1D1 с подсветкой диагонали AC1 и грани ABB1A1
- Прямая vs наклонная призма (side-by-side)
- 6 теоретических карточек (грани/рёбра, призма, пирамида, тела вращения, Эйлер, проекция)
- 3 тренажёра: узнавание тел (6 заданий), счёт элементов (6, формула Эйлера), 3D-крутилка куба (slider rotX/rotY)
- Босс §1: 5 этапов, +60 XP

§2 Прямые и плоскости:
- 3 SVG аксиом A1/A2/A3 + 3 SVG следствий
- 6 теоретических карточек (3 аксиомы + следствия + 4 способа задать плоскость + обозначения)
- 3 тренажёра: какая аксиома (6), можно ли задать плоскость (5), сколько плоскостей (5)
- Босс §2: 5 этапов, +65 XP

§3 + Финал — stub до Волны W2.
2026-05-29 14:48:30 +03:00
Maxim Dolgolyov fb12196cfa feat(geom11 ch3 wave3): §7 «Правильные многогранники» — 5 платоновых тел 2026-05-29 14:46:07 +03:00
Maxim Dolgolyov 451f6a66ea feat(geom11 ch3 wave2): §6 «Шар» + сегменты + вписанные/описанные 2026-05-29 14:39:06 +03:00
Maxim Dolgolyov 0284611263 feat(geom10 W0): инфра — миграция БД, stereo3d.js, hub + 4 stub-раздела
- Миграция 027: textbooks hub geometry-10 + 4 ребёнка (r1 blue, r2 emerald, r3 rose, r4 amber)
- frontend/js/stereo3d.js: библиотека 3D-проекций (Scene, CABINET/ISOMETRIC, cube/box/prism/pyramid/tetrahedron/plane/arrow/angle, авто-видимость рёбер)
- geometry_10_hub.html: 4 карточки разделов, общий прогресс, превью 4 тел через stereo3d
- 4 stub-файла разделов (r1-r4) с list параграфов и плашкой 'в разработке'
- backend/scripts/gen_geom10_stubs.js: генератор stub-файлов
2026-05-29 14:37:07 +03:00
Maxim Dolgolyov 3df79d081c feat(geom11 ch3 wave1): §5 «Сфера» + 3D + уравнение + сечения 2026-05-29 14:33:45 +03:00
Maxim Dolgolyov 4814d5edeb fix(static): корректный путь к /avatars (был на уровень выше реальной папки) 2026-05-29 14:33:30 +03:00
Maxim Dolgolyov 19ce8728e5 feat(avatars): 27 готовых пресет-аватаров + UI выбора для всех ролей
- backend/uploads/avatars/preset_01..27.png — иллюстрированные персонажи
- POST /api/avatar/preset — мгновенная установка без модерации
- GET  /api/avatar/presets — список доступных пресетов
- profile.html: галерея пресетов в модалке аватара, доступна студенту/учителю/админу
- кастомная загрузка с модерацией остаётся только для студентов
2026-05-29 14:30:24 +03:00
Maxim Dolgolyov 717ad3d0f5 feat(geom11 ch2 final): Финал Раздела 2 (5 боссов + ачивка) 2026-05-29 14:29:09 +03:00
Maxim Dolgolyov 15de0d914f feat(geom11 ch2 wave2): §4 «Конус» + 3D + развёртка 2026-05-29 14:26:11 +03:00
Maxim Dolgolyov dd0a54d8ca feat(geom11 ch2 wave1): §3 «Пирамида» + 3D + калькулятор 2026-05-29 14:21:23 +03:00
Maxim Dolgolyov c2b5d73913 feat(geom11 ch1 final): Финал Раздела 1 (5 боссов + ачивка) 2026-05-29 14:16:53 +03:00
Maxim Dolgolyov 6acdb72b39 feat(geom11 ch1 wave2): §2 «Цилиндр» + 3D-конструктор + сечения 2026-05-29 14:12:55 +03:00
Maxim Dolgolyov b6bb1d9f48 feat(geom11 ch1 wave1): §1 «Призма» + 3D-конструктор + калькуляторы 2026-05-29 14:07:51 +03:00
Maxim Dolgolyov b771c3d497 feat(geom11 phase0): skeleton + миграция + мини-3D движок g3d.js
- 026_geometry_11_hub.sql: hub geometry-11 (cyan, 11 параграфов) + 4 раздела
  (Призма и цилиндр, Пирамида и конус, Сфера и шар, Повторение).
- frontend/js/g3d.js: мини-3D движок для стереометрии.
  Векторная математика, матрицы 3x3, перспективная + изометрическая проекции,
  меши призмы/пирамиды/цилиндра/конуса, wireframe сферы, back-face culling
  через нормали, Z-sort, drag-to-rotate (mouse + touch), preset views.
- frontend/textbooks/geometry_11_hub.html: hub с палитрой cyan/sky,
  4 карточками разделов, аккордеон финала курса (placeholder Phase 5).
- frontend/textbooks/geometry_11_ch{1..4}.html: skeleton 4 разделов
  (через gen_geom11_chapters.js). Все включают: помощники KaTeX, SVG 2D
  (axes2D/plotFunc/pointWithDrop/asymptote/rightAngleMark/angleArcAuto/unitVec),
  ICONS, makeCard, setupSorter, gcd, wireReadBtn, secNav, search, sidebar,
  GEOM11 POLISH CSS + JS, подключение /js/g3d.js. STUB builder для всех 11
  параграфов + 4 финалов с demo-G3D viewer (призма/цилиндр/пирамида/конус/
  сфера-wireframe).
2026-05-29 12:45:20 +03:00
Maxim Dolgolyov 0cca1754e8 feat(alg11 phase4 final): итоговая шпаргалка + 7 боссов + ачивка «Магистр алгебры 11» 2026-05-29 12:31:12 +03:00
Maxim Dolgolyov e2f0bb61af feat(alg11 ch3 wave4 + final): §10 «Логарифмические неравенства» + Финал Главы 3 2026-05-29 12:26:14 +03:00
Maxim Dolgolyov c8385205b4 feat(alg11 ch3 wave3): §9 «Логарифмические уравнения» (4 метода + ОДЗ) 2026-05-29 12:19:43 +03:00
Maxim Dolgolyov 2a987f01d0 feat(alg11 ch3 wave2): §8 «Логарифмическая функция» + обратная к показательной 2026-05-29 12:15:24 +03:00
Maxim Dolgolyov aee927a3b1 feat(alg11 ch3 wave1): §7 «Свойства логарифмов» 2026-05-29 12:10:52 +03:00
Maxim Dolgolyov c931eeacd6 feat(alg11 ch2 wave3 + final): §6 «Показательные неравенства» + Финал Главы 2
§6 — 3 makeCard (теория правила знаков, алгоритм, замена переменной)
+ 4 интерактива: пошаговый решатель с числовой прямой SVG,
калькулятор a^(kx+b) sg c с учётом монотонности и знака k,
квикфайр «сохраняется/меняется» (8), тренажёр границ интервала (6).

Финал 2 — 3 mini-карточки шпаргалки (§4/§5/§6) + 5 боссов
(Циклоп Показательной, Минотавр Уравнений, Гарпия Неравенств,
Дракон Замены, Мастер Показательной) с прогресс-баром,
ачивкой ch2_done «Магистр показательной функции» + 50 XP бонус.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 12:05:15 +03:00
Maxim Dolgolyov c0efd1029e fix(exam9 v47/v48 t7): добавлены рисунки парабол + конкретные ответы в решениях 2026-05-29 12:04:13 +03:00
Maxim Dolgolyov 4606d79e44 feat(alg10 W7): Глава 3 «Производная» — полная реализация (§18-§22 + Финал)
- §18 Определение производной (slider секущая→касательная)
- §19 Правила вычисления (4 правила + (x^n)' плата KaTeX)
- §20 Геометрический смысл + монотонность (касательная SVG + цветные зоны)
- §21 Применение производной к исследованию функций (критические точки, алгоритм)
- §22 Наибольшее и наименьшее значения (отрезок + оптимизация)
- Финал: 5 боссов + спецдостижение alg10_master (+200 XP) при наличии trig_master + root_master
2026-05-29 12:02:34 +03:00
Maxim Dolgolyov 6bdfa48578 feat(alg11 ch2 wave2): §5 «Показательные уравнения» (4 метода решения) 2026-05-29 11:59:09 +03:00
Maxim Dolgolyov 3483223f42 feat(alg11 ch2 wave1): §4 «Показательная функция» + двухпанельный визуализатор 2026-05-29 11:55:03 +03:00
Maxim Dolgolyov d0e249613c feat(alg11 ch1 wave3 + final): §3 «Логарифм» + Финал Главы 1 (5 боссов) 2026-05-29 11:50:26 +03:00
Maxim Dolgolyov 2f4109cb7c feat(classroom): рисование поверх открытого учебника
Кнопка «Рисовать» в тулбаре учебника — переиспользует существующий
annotate-режим доски (так же, как для симуляций). Переключатель учителя
транслируется студентам через тот же SSE-канал /sim/annotate. При
закрытии учебника annotate-режим автоматически выключается.
2026-05-29 11:46:22 +03:00
Maxim Dolgolyov 566197df48 feat(alg11 ch1 wave2): §2 «Степенная функция y = x^α» + главный визуализатор 2026-05-29 11:45:24 +03:00
Maxim Dolgolyov 94490ba239 feat(alg10 W6): Глава 2 — Корень n-й степени (полная реализация)
Реализована вся глава 2 (был stub, теперь полноценный SPA):
violet тема (#7c3aed → #c4b5fd), 5 § + Финал.

§13 Корень n-й степени из числа a:
- SVG графиков y = x^n для n=2,3,4,5 на отрезке [-2.5; 2.5]
  с линией y=4 показывающей различие чётных/нечётных n
- Таблица существования (чётное/нечётное n vs знак a)
- Уравнение x^n = a и число корней
- Интерактив 1: 'существует ли?' (6 да/нет)
- Интерактив 2: 'найди значение корня' (8 вычислений)
- Интерактив 3: 'сколько корней x^n = a' (6 заданий)
- Босс §13: 5 этапов

§14 Свойства корней n-й степени:
- HTML+KaTeX плакат '5 основных свойств' (произв., частное,
  степень, сокращение, корень из корня)
- Подсветка важности: ⁿ√(a^n) = |a| для чётных, = a для нечётных
- Интерактив 1: вычисли через свойства (8 заданий)
- Интерактив 2: ⁿ√(a^n) с модулем (6 заданий)
- Босс §14: 5 этапов

§15 Применение свойств для преобразований:
- 4 алгоритма: вынесение, внесение, рационализация, сравнение
- Спойлер с сопряжёнными выражениями (a+b)(a-b)
- Интерактив 1: вынеси множитель (6 заданий)
- Интерактив 2: внеси множитель (5 заданий)
- Интерактив 3: рационализация (5 заданий)
- Босс §15: 5 этапов

§16 Функция y = ⁿ√x:
- 2 SVG графика (300x260 каждый): чётные n (²√x, ⁴√x, ⁶√x)
  только для x≥0 + нечётные n (³√x, ⁵√x, ⁷√x) на всей оси
- Полная сравнительная таблица свойств D, E, монотонность,
  чётность, нули для двух случаев
- Закономерности (точка (1,1), (-1,-1) для нечётных)
- Интерактив 1: сравни корни (6 заданий < / = / >)
- Интерактив 2: свойства функции (5 заданий)
- Босс §16: 5 этапов

§17 Иррациональные уравнения:
- Метод возведения в степень + объяснение посторонних корней
- Пример с подвохом: 2 корня после возведения, 1 истинный
- Эквивалентная система √f = g ⇔ {f = g², g ≥ 0}
- Метод замены переменной (4-степени корни в квадратные)
- Интерактив 1: простейшие (6 заданий с корнями или числом)
- Интерактив 2: 'сколько истинных корней?' (5 с проверкой)
- Босс §17: 6 этапов

Финал главы 2 — 4 интегрированных босса:
- Hero card с градиентом violet, 3 плашки-метки
- Общий прогресс-бар 'X / 4 побеждено'
- Босс 1 §13-§14: определение + свойства
- Босс 2 §15: преобразования
- Босс 3 §16: функция и график
- Босс 4 §17 + синтез: уравнения + смешанные
- Celebration 'МАГИСТР КОРНЕЙ' (скрытая) + ачивка
- Своё состояние в localStorage

XP до 200 за финал + ачивка root_master (+100 XP).

Файл вырос с 6 KB (stub) до 107 KB (1490 строк).
Глава 2 готова на 100%.
2026-05-29 11:44:54 +03:00
Maxim Dolgolyov 068d6c2afe feat(classroom): открытие любого учебника в онлайн-уроке
Учитель может выбрать любой активный учебник из каталога /api/textbooks
и открыть его в общем iframe для всех участников. По аналогии с симуляциями:

- Backend: контроллер classroom/textbook.js + 4 роута
  (POST/DELETE /:id/textbook, /:id/textbook/nav, /:id/textbook/mode)
  с SSE-событиями classroom_textbook_open|close|nav|mode
- Embed-режим /textbook/:slug?embed=1: сервер injectит CSS+JS-bridge
  перед </head>, скрывая хедер/сайдбар и пересылая клики/скролл наверх
  через postMessage (без правки 40+ HTML-учебников)
- Frontend (classroom.html): кнопка «Учебник» в header, пикер с
  фильтрами по предмету, iframe-панель с режимами демо/свободно,
  relay nav-событий учителя → всем студентам в demo-режиме
2026-05-29 11:41:57 +03:00
Maxim Dolgolyov 21c5ae2d91 feat(alg11 ch1 wave1): §1 «Степень с рациональным показателем» 2026-05-29 11:40:37 +03:00
Maxim Dolgolyov 54b8d06c61 feat(exam-prep F8): слабые темы на дашборде + strategy=weak в тренажёре 2026-05-29 11:38:55 +03:00
Maxim Dolgolyov fe7d44aa83 feat(exam-prep F7): карта тем + тематический тренажёр (API /topics + /topics/:slug/tasks + UI) 2026-05-29 11:35:28 +03:00
Maxim Dolgolyov 90cda5129c feat(alg11 phase0): skeleton + миграция учебника Алгебра 11 + SVG-хелперы
- Миграция 025_algebra_11_hub.sql: hub algebra-11 (emerald, sort 9, 10 параграфов)
  + 3 главы: ch1 amber (§1-3), ch2 violet (§4-6), ch3 cyan (§7-10).
- algebra_11_hub.html: палитра teal/emerald (отличие от индиго alg9),
  3 карточки глав, watermark a^x / e^x / log, финал курса placeholder Phase 4.
- algebra_11_ch1/ch2/ch3.html: полный скелет на основе algebra_9_ch1
  (search, sidebar, XP, theme, психельтор, поиск Ctrl+K).
- SVG-хелперы встроены во все 3 ch-файла:
  axes2D, plotFunc, pointWithDrop, asymptote, snapToValue
  + геометрические: rightAngleMark, angleArcAuto, unitVec, deg2rad, gcd.
- ALG11 POLISH CSS: wgFadeIn каскад, hover-фильтры, bump анимация score-display.
- ALG11 POLISH JS: MutationObserver для авто-bump score, psel-done маркер.
- STUB-builder'ы для всех §§ и final с заглушкой Phase 1+.
- KaTeX с двойным экранированием в template literals.
2026-05-29 11:35:27 +03:00
Maxim Dolgolyov 4747229b09 fix(alg10 ch1 §11): SVG двойного угла — подписи без LaTeX-скобок + 30°/60°
Проблемы старого рисунка:
- Метки 'P_α' и 'P_{2α}' рисовались как SVG <text>, а KaTeX
  не обрабатывает SVG — фигурные скобки '{2α}' показывались как
  литерал, выглядело как «P_{2α}»
- Угол 2α = 70° был слишком близко к оси y, метка P_{2α}
  наезжала на цифру '1' оси y
- Подзаголовок 'α = 35°, 2α = 70°' тоже перекрывался

Что переделано:
- Углы изменены на textbook-стандарт: α = 30°, 2α = 60°.
  Это даёт хорошо видимое разделение и удобные значения для
  вспоминания формул
- Размер канваса увеличен до 380x360, радиус R=130 — больше
  пространства для подписей
- Точки и подписи рисуются вручную (без c.point auto-label),
  потому что нужно тонкое позиционирование чтобы не пересечь
  '1' на оси y
- Подписи изменены на 'P(α)' и 'P(2α)' — скобки решают проблему
  визуально (math-нотация) и не используют braces которые SVG
  рисует литералом
- Подписи углов 'α' и '2α' расположены на биссектрисах секторов
  (через формулу 48*cos(ang/2), 48*sin(ang/2)) — посередине
  внутри своего сектора
- Усилены: размер шрифта 13, font-family Unbounded для контраста
  с Inter в остальном тексте
- Жирность fill-цвета увеличена (rgba .22 → .30 для α сектора)
2026-05-29 11:33:23 +03:00
Maxim Dolgolyov 5e37707b11 feat(exam-prep F6): таксономия из 16 подтем + эвристический классификатор (100% покрытие 800 задач math9) 2026-05-29 11:31:34 +03:00
Maxim Dolgolyov 77bfdb4331 feat(alg10 W5): Финал главы 1 — 6 интегрированных боссов + ачивка
Глава 1 'Тригонометрия' полностью завершена.

buildFinal1():
- Hero card с градиентом teal→violet, водяной знак ★ и 3 плашки-метки
  (★ 6 боссов / + до 300 XP / ★ Финальная ачивка)
- Общий прогресс-бар 'X / 6 побеждено' с градиентной заливкой
- 6 boss-card по теме отдельных параграфов
- Celebration-card 'МАГИСТР ТРИГОНОМЕТРИИ' (скрыта пока не все
  6 боссов повержены) с ачивкой, кнопкой возврата на хаб
- Своё состояние в localStorage (algebra10_ch1_final1_state)

6 боссов (5 этапов каждый, 30 вопросов всего):
- Босс 1 (teal, §1-§4): окружность, sin/cos/tg/ctg, тождества
- Босс 2 (cyan, §5-§7): графики, обратные функции
- Босс 3 (red, §8): уравнения (метод интервалов, замена, разложение)
- Босс 4 (dark teal, §9): формулы приведения (правило двух шагов)
- Босс 5 (deep teal, §10-§11): сложение, разность, двойной аргумент
- Босс 6 (violet, §12+): синтез — сумма→произведение, проверка
  на отождествление углов отличающихся на 2πn

XP:
- 5 XP за каждый правильный этап (30 правильных = 150 XP)
- 25 XP за победу над каждым боссом (6 × 25 = 150 XP)
- Бонус +150 XP за финальную ачивку 'trig_master'
- Итого до 450 XP за финал

Добавлены:
- ACH_LABELS.trig_master: 'Магистр тригонометрии! +150 XP'
- SIDEBARS.final1 + TIPS.final1
- BUILDERS.final1 теперь buildFinal1() (вместо stub)

Файл вырос с 221 KB до 240 KB (2998 → 3252 строки).
Глава 1 готова на 100% — 12 § + Финал.
2026-05-29 11:30:24 +03:00
Maxim Dolgolyov 18fadcba9f fix(alg10 ch1): формульные плакаты §10-§12 — KaTeX вместо моноширинного SVG
Заменены 3 SVG-плакаты (формул сложения, двойного аргумента,
сумма→произведение) на HTML-карточки с настоящим KaTeX-рендерингом.

Добавлен CSS-компонент .formula-plate с подкомпонентами:
- .formula-plate-head + цветовые варианты (teal/cyan/violet/green/amber)
  → плашка-заголовок с градиентом
- .formula-plate-title + .formula-plate-sub
  → крупный заголовок + курсивный подзаголовок
- .formula-plate-body + .formula-row + альтернативные цвета
  → строки формул с подсветкой
- .formula-section (янтарная вставка для tg)
- .formula-mnem (фиолетовая плашка с мнемоникой)

§10: 8 формул в HTML-плакате с teal-плашкой + янтарный блок 'Тангенсы'
§11: 3 формулы двойного аргумента отдельным плакатом ПЕРЕД SVG
     с окружностью (которая теперь короче — без встроенного
     формульного блока)
§12: 4 формулы в violet-плакате + фиолетовая плашка 'Мнемоника' со
     списком правил

Все формулы теперь рендерятся настоящим KaTeX с дробями \dfrac,
правильными операторами \tg \sin \cos, греческими буквами
\alpha \beta, и индексами/степенями.
2026-05-29 11:25:03 +03:00
Maxim Dolgolyov 0903ef640a feat(alg10 W4): §9-§12 главы 1 (формулы преобразования)
Реализованы 4 формуло-ёмких параграфа главы 1:

§9 Формулы приведения:
- SVG единичной окружности с 4 цветными четвертями и знаками
  всех 4 функций в каждой (380x360, заголовочная плашка)
- Правило двух шагов с разбором примера cos(3π/2 − α) = −sin α
- Полная таблица 28 формул (4 функции × 7 видов аргумента)
- Интерактив 1: 8 заданий «приведи к острому»
- Интерактив 2: 8 заданий «вычисли значение»
- Босс §9: 5 этапов

§10 Сумма и разность углов:
- SVG-плакат с 8 формулами 580x280 (sin/cos зелёным+фиолетовым,
  tg в отдельной янтарной плашке)
- Мнемоника: знаки совпадают в sin, чередуются в cos
- Спойлер с классическим доказательством для cos(α−β) через
  теорему косинусов
- Применение к «нестандартным» углам (75°, 15°, 105°)
- Интерактив 1: 6 вычислений нестандартных углов
- Интерактив 2: 5 упрощений выражений
- Босс §10: 5 этапов

§11 Двойной аргумент:
- SVG окружности с углами α=35° и 2α=70° (одна над другой
  с разными цветными секторами)
- Формулы sin 2α, cos 2α (три формы!), tg 2α
- Когда какую форму cos 2α использовать
- Формулы понижения степени sin²α, cos²α
- Интерактив 1: 6 заданий на вычисление через данную sin/cos α
- Интерактив 2: 5 упрощений с двойным углом
- Босс §11: 5 этапов

§12 Преобразование суммы в произведение:
- SVG-плакат с 4 формулами + мнемоника
- Применение к решению уравнения sin 3x + sin x = 0
- Применение для упрощения дробей
- Интерактив 1: 5 преобразований
- Интерактив 2: 4 задачи «сколько корней у sin x ± sin nx = 0»
- Босс §12: 4 этапа (этот § покороче)

Обновлены ACH_LABELS (+p9-p12_done), bumpProgress, BUILDERS,
SIDEBARS (4 шпаргалки), TIPS (4 подсказки).

Глава 1 теперь готова на 12 из 13 параграфов — остался
только финал главы (6 боссов).

Файл вырос со 160 KB до 221 KB (2189 → 2998 строк).
2026-05-29 11:19:56 +03:00
Maxim Dolgolyov c590c32b41 feat(exam-prep F10): план по дате экзамена — виджет на дашборде + модалка + GET/PUT/DELETE /plan 2026-05-29 11:17:28 +03:00
Maxim Dolgolyov a4be2ecba0 feat(geom9): полировка — анимации появления, bump-эффекты, hover, плавные переходы 2026-05-29 11:13:39 +03:00
Maxim Dolgolyov 294b3622b5 feat(exam-prep F4): живой дашборд — streak + последние попытки + точность 7д + хитмап активности + пробники 2026-05-29 11:12:23 +03:00
Maxim Dolgolyov 2fda4ee7f6 fix(alg10 ch1 §8): премиум-рисунки для геометрии sin/cos/tg = a
Переделаны 3 SVG в §8 — теперь это полноценные плакатные
визуализации с заголовками, формулами и цветовым кодированием:

sin x = a (400×430):
- Заголовочная плашка teal: 'УРАВНЕНИЕ: sin x = a' + пример a=1/2
- Окружность с осями, горизонтальная линия y=a в красной рамке
- 2 сектора углов π/6 и 5π/6 разных цветов (бирюзовый + фиолетовый)
- Вертикальные пунктиры от обеих точек к оси x (показывают sin α = a)
- Подписи P_{π/6} и P_{5π/6} крупно, цветом совпадающим с сектором
- Формульный блок снизу в рамке: x = (-1)^n · arcsin a + πn

cos x = a (400×430):
- Заголовочная плашка cyan
- Вертикальная линия x=a с красной плашкой-меткой
- Сектор +π/3 (верхний, cyan) и -π/3 (нижний, фиолетовый)
- Горизонтальные пунктиры от точек к оси y
- Формульный блок: x = ±arccos a + 2πn

tg x = a (440×430, шире из-за оси тангенсов):
- Заголовочная плашка green
- Ось тангенсов справа (вертикальная пунктирная)
- Точка A_a = (1; a) в красной рамке-метке
- Прямая через O и A_a пунктиром в обе стороны
- Пример a = √3/3 → корни π/6 и 7π/6
- Сектор угла π/6 + 2 точки
- Формульный блок: x = arctg a + πn

Все три SVG используют consistency:
- Заголовок с подзаголовком сверху
- Чёткое цветовое кодирование (a/sin/cos = красный)
- Сектора заполненные пастельными цветами
- Формула в нижней рамке с заголовком 'ОБЩАЯ ФОРМУЛА'
2026-05-29 11:11:33 +03:00
Maxim Dolgolyov e63c05cc34 feat(alg10 W3): §8 главы 1 (тригонометрические уравнения)
Самый большой параграф главы 1:

§8 Тригонометрические уравнения:

Карточки теории (8 шт):
- 8.1 Зачем геометрия — мотивация
- 8.2 sin x = a (геометрия + объединённая формула (-1)^n)
- 8.3 cos x = a (геометрия + ±arccos)
- 8.4 tg x = a (через ось тангенсов)
- 8.5 Особые случаи (a = 0, ±1) — полная таблица
- 8.6 Метод замены переменной
- 8.7 Метод разложения на множители
- 8.8 Однородные уравнения 1-й и 2-й степени

SVG (через ALG10.tri.canvas):
- sin x = a: окружность + горизонтальная линия y=a + 2 точки
- cos x = a: окружность + вертикальная линия x=a + 2 точки
- tg x = a: окружность + ось тангенсов + точка A_a + прямая через O

Интерактивы:
- ИВ1: 10 простейших уравнений (sin/cos/tg = a)
- ИВ2: 6 заданий 'сколько корней в промежутке'
- ИВ3: 5 заданий на замену переменной (квадратные относительно sin/cos)

Босс §8 — 6 этапов:
- 1: проверка |a|>1 → нет корней
- 2: подсчёт корней в [0;2π]
- 3: простейшее cos x = -1
- 4: квадратное относительно cos
- 5: проверка подстановкой
- 6: tg x = 1 → серия π/4 + πn

Обновлены ACH_LABELS (+p8_done), bumpProgress, SIDEBAR §8
(10 строк с формулами и особыми случаями), TIP §8.

Файл вырос со 141 KB до 160 KB (1888 → 2189 строк).
2026-05-29 11:07:03 +03:00