Files
Learn_System/.claude/memory/project_math6_textbook.md
T
Maxim Dolgolyov 8a7091ddec chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в
.claude/memory/, чтобы переносить между машинами через git.
README.md — как восстановить в пользовательскую папку на другой машине.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 08:32:16 +03:00

14 KiB
Raw Blame History

name, description, metadata
name description metadata
project_math6_textbook Новый интерактивный учебник «Математика 6» (Беларусь, Герасимов/Пирютко 2022): план + архитектура (переиспользует паттерн Алгебры 7, не движок химии)
node_type type originSessionId
memory project 60467058-b40e-4bd9-9f7f-d1e362e8039a

Создаём интерактивный учебник «Математика 6» (Беларусь, Герасимов В. Д., Пирютко О. Н., 2022, 2-е изд.). План: plans/textbooks-6/PLAN_MATH_6.md (составлен 2026-06-02, исполнитель — Sonnet, по волнам). PDF-источник: matematika_6kl_gerasimov_rus_2022.pdf (317 стр.) в reference_textbook_sources; оглавление на стр. 309–311.

Программа: 6 глав, 47 § (38 содержательных + 6 «Тест» → Финалы + 5 «Математика вокруг нас» → прикладные §):

  1. Десятичные дроби (§1–12, indigo) 2. Проценты и пропорции (§1–9, cyan) 3. Множество (§15, violet) 4. Рациональные числа (§1–11, rose) 5. Координатная плоскость (§1–5, emerald) 6. Наглядная геометрия (§1–5, amber).

Why: первый математический (комбинированный: арифметика+алгебра+геометрия) учебник для 6 класса — нижняя ступень линейки до алгебры/геометрии 7.

Архитектура (РЕАЛИЗОВАНА — общий движок + inline-билдеры). Не дублируем движок в 6 глав (как algebra_7), а вынесли плумбинг в frontend/js/math6_engine.js (window.M6engine, читает конфиг window.M6): STATE/прогресс/XP/ачивки, генерация секций из M6.paras, para-selector, goTo/ensureBuilt, SIDEBARS/TIPS/buildSidebar, GLOSSARY+wrapGlossary, SEARCH, тема, confetti (с jsdom-guard), setupSorter (DnD). Экспортит глобально для билдеров: makeCard, secNav, readBtn, feedback, renderMath, fmt, num, addXp, bumpProgress, achievement, setupSorter, confetti, goTo. Кастомные интерактивы § — inline-функции buildPN() на странице главы (свобода как у algebra_7, без унифицированного пула химии). Страница главы = chrome + window.M6={slug,lsPrefix,xpKey,paras,achLabels,startAch,finalAch,sidebars,tips,glossary,builders,footer}. § без билдера → авто-заглушка (движок). КРИТ. порядок скриптов: объявить data/builders, затем Object.assign(window.M6,{...}) (const → нет TDZ); init перечитывает window.M6. Русская запятая в KaTeX = 2{,}35; в JS-билдерах хелпер _kf(x) (число→KaTeX-строка с {,}), числа считать целочисленными мантиссами (_mant/_dec), не float.

frontend/js/math6_svg.js (window.Math6): готовы fmt, box, numberLine (прямая/луч, метки, точки, отрезки), plane (декартова плоскость + plot функции) — фундамент для Гл.5. ДОБАВИТЬ при Гл.5–6: plotFn, окружность/круг, треугольники, развёртки тел, симметрия.

Файлы: миграция 049_math6_hub.sql ПРИМЕНЕНА (хаб math-6 + math-6-ch1..ch6, para_count хаба=48=сумма 12/9/5/11/5/6, палитры indigo/cyan/violet/rose/emerald/amber); frontend/css/math6.css (общий фреймворк по образцу alg7); math_6_hub.html + 6 каркасов; тест backend/tests/math6-page.test.js. Маршруты/каталог общие — не трогать. Хаб закрыт по умолчанию (allowlist) → доступ через /api/access/rules (project_content_access) в финале.

Геймификация: _TB_SLUG='math-6-chN' (M6.slug), синк POST /api/textbooks/math-6-chN/progress; localStorage math6_chN_* + общий math6_xp; Финал главы = боссы (HP-бар), победа 4/5 → +40 XP и finalAch ачивка «Глава N пройдена» (через bumpProgress('final',100)). Курсовой финал на хабе + ачивка «Математик 6 класса» — TODO (финальная фаза).

Паттерн волны (для Sonnet, ч.24): в math_6_chN.html дописать function buildPk(){...} (теория makeCard + .wg интерактивы + secNav+readBtn), добавить ключ в BUILDERS/SIDEBARS/TIPS/GLOSSARY, тест-ассерт, прогон node -e "require('./backend/tests/math6-page.test.js')", коммит поимённо + push. Эталон — Глава 1 (math_6_ch1.html): 2 интерактива/§, тренажёры со счётом+XP, DnD-сопоставление, числовая прямая.

Гочи: эмодзи (feedback_no_emoji); Grep (reference_vex_search); Cyrillic-FS флака Edit — персист зелёным тестом (feedback_verify_edits_applied); БД node:sqlite (reference_sqlite_node); fetch+add поимённо (project_concurrent_sessions_branch); pre-commit hook гоняет полный backend-прогон при staged backend-файлах (baseline 3 Auth-фейла — не трогать).

СТАТУС (2026-06-02): ВСЕ 6 ГЛАВ + КУРСОВОЙ ФИНАЛ ГОТОВЫ, всё на master (Opus целиком — пользователь сказал «делай ты»). Тесты math6: 17/17 (полный backend-прогон 0 новых фейлов). Учебник функционально завершён.

  • Гл.1 (12§, 4b949f7): разрядный конструктор, сравнение/округление на прямой, координатный луч, столбик, сдвиг запятой, умножение/деление, период (долгое деление), преобразования, прикладные, финал.
  • Гл.2 (9§, a783565): процент-сетка 100 + конвертер, 3 типа задач, пропорция (крест-накрест), прямая/обратная зависимость, решение пропорцией, масштаб, круговые диаграммы (Math6.pie), финал.
  • Гл.3 (5§, 203807a): ∈/∉, способы задания, операции ∩/∪ (Math6.venn), круги Эйлера (задачи + формула |A∪B|), финал.
  • Гл.4 (11§, 21853bd): знак числа, модуль, противоположные, N⊂Z⊂Q, сравнение, сложение (на прямой), вычитание, законы, умножение (таблица знаков), деление, порядок действий, прикладной, финал (6 боссов).
  • Гл.5 (5§, 09c61d8): координаты+четверти, графики процессов (Math6.plane polyline), y=kx/y=k/x, путь–время, финал.
  • Гл.6 (5§, 670ae80): тела+развёртки, окружность/круг (C,S), виды треугольников (классификация из координат), центральная/осевая симметрия, финал.
  • Курсовой финал на хабе (0bb48d3): 6 испытаний (по главе) + звание «Математик 6 класса» (+150 XP, localStorage math6_course_done, зажигает ach-strip).

Math6 (math6_svg.js) теперь: fmt, box, numberLine, plane(+polyline), pie, venn. Геометрия тел/развёрток/треугольников — inline SVG в math_6_ch6.html.

CANVAS-АНИМАЦИИ (коммиты 6b73495, 61de12e): движок frontend/js/math6_anim.js (window.Math6Anim) — headless-safe по канве chem7_anim: RAF-цикл loop() с паузой вне экрана (IntersectionObserver), prefers-reduced-motion, в jsdom/HeadlessChrome getContext НЕ вызывается (HEADLESS-guard по navigator.userAgent → ctx=null, рисуется только DOM-каркас → тесты не падают). Подключается в главу тегом <script src="/js/math6_anim.js" defer> ПОСЛЕ math6_svg, ПЕРЕД math6_engine; в тесте — инлайнится в buildPage. Билдеры вызывают через guard if(window.Math6Anim){…}, демо возвращает {stop}, при смене ползунка — ctrl.stop() + пересоздать. Подключён во ВСЕХ 6 главах (тег <script src="/js/math6_anim.js" defer>). Готовые демо: rollingCircle (колесо→C=2πr, Гл.6§2), sweepArea (→S=πr², Гл.6§2), areaModel (a·b, Гл.1§6), numberLineWalk (a+b стрелками, Гл.4§4), carGraph (машина+график, Гл.5§2), plotLive (живой y=kx / y=k/x с easing+переключателем, Гл.5§3), thermometer (±числа/модуль, Гл.4§1). stepPlayer (DOM, не canvas) + stepifyExamples(root) — движок в goTo (guarded) АВТО-превращает ВСЕ карточки «Разбор по шагам» во ВСЕХ главах в интерактивный пошаговый плеер (Назад/Дальше/Авто+точки). Тесты «анимации монтируются» (20/20) проверяют <canvas>/.m6-step-view. Брейншторм всех визуализаций: plans/textbooks-6/PLAN_MATH_6_VISUAL.md (16 реюзабельных компонентов + карта §→визуал). Дополнительно сделано (компоненты Math6Anim, коммиты до 302b062): numberLineJumps (a·b как прыжки, Гл.4§7), coordGame («поставь точку», клик по сетке, Гл.5§1), reflectFold (симметрия осевая/центральная, Гл.6§4/§5), barModel (% полоса, Гл.2§1), setFilter (числа сквозь фильтр свойства, Гл.3§1). Итог: во ВСЕХ 6 главах есть canvas-анимации + stepPlayer на всех «Разборах по шагам». Тест «анимации монтируются» проверяет <canvas> в Гл.1§6,2§1,3§1,4§1/4/7,5§1/2/3,6§2/4/5. Тесты math6: 20/20. 3D-тела ИСКЛЮЧЕНЫ (по решению пользователя) — Гл.6§1 остаётся со статичной SVG-галереей. ОПЦИОНАЛЬНАЯ ПОЛИРОВКА ЗАВЕРШЕНА (2026-06-02, коммиты 51db000 + 21c18ce): добавлены pieGrow (растущие сектора, Гл.2§7 — заменил статичный Math6.pie, цвета синхронны легенде), balanceScale (весы a·d ? b·c, Гл.2§3, кнопка «другой пример»), constAreaRect (обратная проп. = постоянная площадь, Гл.2§4, ползунок x), triangleDrag (SVG-треугольник с перетаскиваемыми вершинами + live-классификация по сторонам/углам, штрихи равных сторон, метка прямого угла; блок «Песочница» в Гл.6§3). vennDrag ПРОПУЩЕН осознанно — в Гл.3§3 уже есть хороший интерактивный Math6.venn с подсветкой ∩/∪. Тесты math6: 20/20. Визуально canvas/SVG в jsdom НЕ проверить — нужен реальный браузер (глаз пользователя).

ОБОГАЩЕНИЕ (2026-06-02, коммит 85c516e): воркфлоу math6-enrich — 6 агентов Sonnet (по главе) добавили в каждый содержательный § карточки «Где это в жизни» (хук), «Разбор по шагам», «А знаешь ли ты?» (факт) и довели до ≥2 интерактивов. План: plans/textbooks-6/PLAN_MATH_6_ENRICH.md. Проверено: тесты 18/18, честный рендер (jsdom-over-HTTP с реальными defer-скриптами) — контент появляется, рантайм-ошибок нет.

КРИТИЧНЫЙ БАГ ИСПРАВЛЕН (коммит fe37837): в math6_engine.js вызов init() стоял ВЫШЕ строк window.makeCard=…. При defer-загрузке (readyState='interactive') ветка else init() срабатывала синхронно → init→goTo→buildP1() звал makeCard ДО экспорта → ReferenceError: makeCard is not defined → ensureBuilt catch → ВСЕ §1 показывали заглушку «Содержание готовится». jsdom-тесты баг НЕ ловили (там старт через DOMContentLoaded). Фикс: init() — строго ПОСЛЕ всех window.* экспортов; добавлен регресс-тест (init после makeCard); html учебника всегда no-store. ВАЖНЫЙ УРОК: при defer-движке экспортировать хелперы в window ДО запуска init.

ОСТАЛОСЬ ТОЛЬКО: выдать доступ ученикам/классам (хаб закрыт по умолчанию, allowlist) — это действие админа через панель или POST /api/access/rules {content_type:'textbook',content_ref:'math-6',scope:'class',target_id,allow:1} (project_content_access). Опционально: проверка в браузере, расширение пулов задач.