8a7091ddec
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
11 KiB
11 KiB
LearnSpace Project Memory
- project_status.md — Полный список реализованных фич: все страницы, API, таблицы БД, инструменты доски, стек, деплой (апрель 2026)
- project_classroom_module.md — Оригинальный план classroom-модуля (4 фазы, все реализованы)
- project_whiteboard_roadmap.md — Roadmap улучшений доски (7 фаз, утверждён 2026-04-11)
- project_pet_assistant.md — «Квантик-ассистент» РЕАЛИЗОВАН (commit
3f8009c): Ф0/Ф1/«Спроси-FAQ», правиловый движок, reuse 'pet', assistant_seen, на учебнике тоже. НЕ сделано: Ф2 тур, реальная LLM, activeLesson - feedback_no_emoji.md — Запрет эмоджи в коде, только inline SVG
.ic - feedback_sims_admin_sync.md — При добавлении симуляции в lab.html → сразу обновить ADMIN_SIMS в admin.html
- project_ct_seeded.md — Список перенесённых сборников ЦТ/ЦЭ (физика 2024 + матем 2024); правило: 1 вариант из сборника, нет повторов
- project_hardening_2026.md — 8-task security/architecture hardening plan (started 2026-05-06), executed by Sonnet sessions one task at a time
- reference_textbook_sources.md — Расположение PDF учебников Беларуси (физика/алгебра/геометрия 7-11) в
G:\Dev\Тесты\Методички\тест_6 класс\Книги\+ структура §-канвы Исаченковой - project_stereo3d_improvements.md — Стереометрия 3D: апгрейд 5 фаз (май 2026) + deep-link фигур
openSim('stereo:<figure>')/?stereofig= - reference_sqlite_node.md — БД на встроенном node:sqlite (НЕ better-sqlite3); живая БД backend/data/learnspace.db; Bash ломает кириллический путь
- reference_textbook_latex_escaping.md — Баг формул = ЛИШНИЕ слэши (over-escape), правило чётности, фикс fix_overescaped_latex.js; БД чиста
- project_content_access.md — Доступ к учебникам/экзаменам/симуляциям/курсам по классам и ученикам (allowlist, ученик > класс), миграции 040/051/052, /api/access; ревью+переработка done, Фаза 3 (HTML-гейт) отложена
- project_permissions_rework.md — Ролевые права (registry/role_permissions/user_permissions): Phase A+B+C ВСЕ в master (2026-06-03): зависимости, история, группы, массово по классу, пресеты, временные права, произвольные кастомные роли (конструктор). План plans/permissions-rework/
- project_optics_constructor.md — Конструктор оптических систем (BenchSim) в режиме «Конструктор» оптической скамьи: общий 2D-трассировщик, элементы/призма/дисперсия
- project_lab_content_engine.md — Рефактор лаборатории «симуляции как данные» (LabRegistry); фазы 0-3 done, ветка feature/lab-content-engine
- project_chemistry7_textbook.md — Новый учебник «Химия 7» (4 гл, 26§): план + статус (Phase 0 done), переиспользует движок Химии 8
- project_concurrent_sessions_branch.md — Несколько сессий коммитят в одну ветку → fetch перед работой, не force-push вслепую, add поимённо
- feedback_verify_edits_applied.md — После каждого Edit проверять grep -c маркера; не пушить пакет без поштучной верификации (дважды коммитил сломанное)
- project_dashboard_rebuild.md — План пересборки dashboard.html по скрину (hero: чтение+лаба+питомец, синхрон питомца); редизайн утерян (был некоммичен)
- project_phys7_status.md — Физика 7: контент ВСЕХ 5 глав готов (рендер из phys7_chN_widgets.js); Шпаргалки наполнены (47 шт, commit
c6835cf); учебник функционально полный - reference_vex_search.md — vex установлен+проиндексирован (semantic); когда vex (semantic/pattern/similar/duplicates), когда ast-index (символы/usages); гочи модели/HEAD
- project_math6_textbook.md — Учебник «Математика 6» (Герасимов 2022): движок math6_engine.js + Math6 svg (numberLine/plane/pie/venn). ВСЕ 6 глав + курсовой финал ГОТОВЫ на master (тесты 17/17, +полировка 20/20). Осталось только: выдать доступ ученикам (/api/access)
- project_math5_textbook.md — Учебник «Математика 5» (Герасимов 2020) переиспользует движок math6. НАПОЛНЕН ЦЕЛИКОМ: 3 главы, 44 § (Гл.1 Opus-эталон, Гл.2–3 Sonnet), хаб+курсовой финал, тест 12/12, всё на master (последний
5a2a1be). Осталось только: выдать доступ ученикам (/api/access). План: plans/textbooks-5/ - reference_exam_textbook_links.md — Привязка задач экзамена math9 к § учебников: per-task колонки в exam_tasks + классификатор tag-exam-textbook.js (таксономия gen-exam-textbook-sections.js) + починенный deep-link (textbook-deeplink.js). 98% размечено. Готчи: geometry-8 поглавная нумерация, math5/6 движковые
- reference_svg_drawer.md — Векторная SVG-рисовалка: виджет js/svg-draw.js (SvgDraw.mount) + санитайзер js/svg-sanitize.js (UMD, клиент+сервер) + блок урока svg-draw (редактор/превью/lesson.html). Переиспользуемо для флешкарт/фигур генератора
- reference_quick_lesson.md — «Быстрый урок»: одиночный урок без курса через скрытый личный курс-контейнер (courses.is_personal, POST /api/lessons/quick, кнопка в theory.html). Каталог скрывает контейнеры от всех кроме владельца
- reference_student_materials.md — «Мои материалы»: ученик сохраняет к себе доску(PNG)/заметку из онлайн-урока (миграция 060 student_materials, /api/materials, Whiteboard.exportBlob, страница /my-materials, кнопки в my-lessons.html). Копия переживает удаление сессии
Stack
- Node.js/Express backend, SQLite (встроенный node:sqlite
DatabaseSync, НЕ better-sqlite3 — см. reference_sqlite_node) - Frontend: vanilla JS,
window.LS.*namespace via /js/api.js - No bundler — plain HTML/CSS/JS served by Express static
- Репо: https://git.dolgolyov-family.by/maxim.dolgolyov/Learn_System (master)
Key Paths
- Backend:
backend/src/ - Frontend pages:
frontend/*.html - Shared CSS:
frontend/css/ls.css(design system) - JS API:
js/api.js→window.LS.* - Whiteboard engine:
frontend/js/whiteboard.js(~3200 строк) - Server entry:
backend/src/server.js
UI Architecture
- Sidebar nav:
.app-layout > .sidebar + .sb-content - login.html: split layout
.login-layout > .login-left + .login-right - Page transitions: CSS
@view-transition { navigation: auto } - Mobile:
.mob-bar(56px fixed top), sidebar drawer на ≤768px,/js/mobile.js - Notifications dropdown:
leftставится черезr.right + 8динамически
Whiteboard (classroom.html)
- Chalkboard theme: зелёный фон (#2d5a2d), деревянная рамка, chalk-grain
- Tools: pencil (Catmull-Rom), highlighter, laser, eraser, 11 shapes, connector, sticky, text, image, formula (KaTeX), table, coordinate system, number line, compass
- Select tool: move/resize/rotate всех объектов, lasso multi-select, snap guides, copy/paste
- Zoom/Pan: wheel zoom, Space+drag, minimap overlay (bottom-right, при zoom>1)
- Ruler/Protractor: rotation + resize handles, floating props panel
- SSE real-time sync + HTTP polling (since_seq параметр)
- Two-layer canvas: static (_ctx) + dynamic (_dynCtx)
- Multi-page + thumbnail sidebar
User Roles
- admin: full access
- teacher: classes + board + library + classroom
- student: dashboard + board (только если в классе)
Icons — КРИТИЧНО
- ⛔ ЗАПРЕТ на эмоджи — никогда не использовать эмоджи в коде.
- Только inline SVG с классом
.ic(определён в ls.css). - На некоторых страницах также Lucide CDN
lucide@0.469.0.
Workflow Preferences — КРИТИЧНО
- ⛔ АБСОЛЮТНЫЙ ЗАПРЕТ на Grep tool — пользователь запретил КАТЕГОРИЧЕСКИ.
- Поиск по коду:
ast-index(дефолт: символы/usages/callers/outline) +vex(semantic/pattern/similar/duplicates) — см. reference_vex_search /.claude/rules/search-tools.md. usages по JS — только ast-index. - Чтение файлов: ТОЛЬКО
Readс offset/limit - Поиск файлов:
Globилиast-index search - НЕТ ИСКЛЮЧЕНИЙ. Даже для "быстрой проверки". Даже для верификации.