--- name: LearnSpace — полная карта реализованных функций description: Что уже сделано в проекте: все страницы, API, таблицы БД, инструменты доски, стек, деплой type: project originSessionId: 1959f491-c6c4-4d6b-9081-0b09298d1699 --- # LearnSpace — реализованный функционал (апрель 2026) **Why:** Чтобы не переоткрывать то, что уже есть, при планировании новых фич. **How to apply:** Перед реализацией любой фичи — сверяться, чтобы не дублировать. --- ## Frontend pages (43 HTML-файла в frontend/) | Файл | Назначение | |------|-----------| | login.html | Split-layout авторизация, canvas neural-network анимация | | dashboard.html | Главная ученика — задания, прогресс, gamification | | admin.html | Панель администратора | | profile.html | Профиль пользователя | | classes.html | Google Classroom-стиль карточки классов | | board.html | Лента класса (анонсы, задания, активность) | | classroom.html | Онлайн-урок (доска + чат + видео/аудио) | | live-quiz.html | Live-викторина в реальном времени | | test-run.html | Прохождение теста | | test-result.html | Результат теста | | question-bank.html | Банк вопросов | | homework.html | Задания студента | | course.html | Прохождение курса | | lesson.html | Просмотр урока | | lesson-editor.html | Редактор уроков с блоками | | theory.html | Теоретические материалы | | library.html | Библиотека файлов | | analytics.html | Аналитика/отчёты | | flashcards.html | Карточки с интервальным повторением | | knowledge-map.html | Граф знаний | | crossword.html | Кроссворд | | hangman.html | Виселица | | biochem*.html (5) | Интерактивная биохимия: молекулы, реакции, пути | | red-book*.html (4) | Красная книга: виды, биомы, экосистемы, игры | | collection*.html (2) | Коллекции предметов | | gradebook.html | Журнал оценок | | parent.html | Кабинет родителя | | pet.html | Виртуальный питомец | | lab.html | Интерактивные лабораторные работы (30+ симуляций) | | 403/404/500.html | Страницы ошибок | --- ## Backend API (28 групп маршрутов) ``` /api/auth — JWT авторизация, регистрация, профиль /api/subjects — Предметы /api/sessions — Тестовые сессии /api/admin — Управление платформой, feature flags /api/questions — Банк вопросов /api/classes — Классы /api/assignments — Задания, дедлайны /api/files — Загрузка файлов, папки /api/tests — Тесты/квизы /api/notifications — Уведомления /api/permissions — RBAC /api/submissions — Сдача работ, оценки /api/courses — Курсы (теория) /api/lessons — Уроки с блоками /api/gamification — XP, уровни, ачивки, стрики /api/shop — Виртуальный магазин, монеты /api/templates — Шаблоны заданий /api/bookmarks — Закладки /api/search — Поиск контента /api/flashcards — Флэшкарты со spaced repetition /api/settings — Настройки /api/analytics — Аналитика и отчёты /api/live — Live-квизы (real-time) /api/classroom — Онлайн-урок (SSE, доска, чат, WebRTC) /api/games — Игры (виселица, кроссворд) /api/knowledge-map — Граф знаний /api/pet — Виртуальный питомец /api/collection — Коллекционирование /api/red-book — Красная книга /api/biochem — Биохимия ``` --- ## Classroom API (детально) - POST/GET/DELETE сессий - JOIN/LEAVE участников, attendance log - Чат: отправка, получение, реакции, закрепление, загрузка файлов - Strokes: batch save, load (с пагинацией + since_seq), update, delete, preview (SSE) - Страницы: add, change_current, set_template, clear - Поднятая рука: raise/lower/list - Разрешения рисования: grant/revoke per user - WebRTC: signaling relay, cursor broadcast, mute, screen share - Notes: get/save per user per session - Templates: save/load session как шаблон --- ## БД — 76 таблиц SQLite (better-sqlite3, sync) Ключевые группы: - **users** + role_permissions + user_permissions - **test_sessions** + session_questions + user_answers - **subjects** + topics + questions + options + tests + test_questions - **classes** + class_members - **classroom_sessions** + classroom_pages + classroom_strokes + classroom_chat + classroom_chat_reactions + classroom_attendance + classroom_invites + classroom_draw_permissions + classroom_notes - **courses** + course_sections + lessons + lesson_blocks + lesson_progress + lesson_notes + class_courses - **assignments** + assignment_sessions + assignment_templates + submissions + submission_log - **files** + file_access + folders + folder_access - **xp_log** + achievements + user_achievements + daily_goals + challenges - **announcements** + notifications + bookmarks - **live_sessions** + live_answers - **shop_items** + user_purchases - **flashcard_decks** + flashcard_cards + flashcard_reviews - **bio_elements/molecules/reactions/...** (5 биохим-таблицы) - **rb_species/habitats/groups/...** (9 красная книга) - **app_settings** + error_log + admin_audit_log --- ## Whiteboard (frontend/js/whiteboard.js ~3200 строк) ### Инструменты рисования - Pencil (Catmull-Rom сглаживание) - Highlighter (полупрозрачный маркер) - Laser (без сохранения) - Eraser - Connector (линии со стрелками) - Sticky notes - Text (inline editing) - Image (вставка + upload) - Formula / LaTeX (KaTeX, modal editor с категориями) - Table (интерактивная) - Coordinate system (с графиками функций, парсер выражений) - Number line (для неравенств, точки + интервалы) - Compass: трёхфазная state machine (idle → setting-radius → waiting-arc → drawing-arc), сохраняется как `{cx, cy, radius, arcStart, arcSweep, color, lineWidth, showLegs}`, live preview в `_renderDynamic` с ногами компаса и меткой угла ### Shapes (11) rect, ellipse, line, arrow, triangle, diamond, hexagon, star, roundedrect, callout, connector ### Инструмент выделения - Move + resize всех объектов (bbox handles) - Rotation handle (purple) для объектов - Lasso multi-select (резиновая рамка) - Shift+click добавить к выделению - Copy/Paste с offset - Snap guides при перемещении - Delete / Bring to front / Send to back ### Zoom / Pan - Wheel zoom (к курсору) - Space+drag = pan - Ctrl+0/+/- hotkeys - clampPan() — ограничение выхода за пределы - Minimap: 192×108 overlay bottom-right (показывается при zoom>1) - Viewport indicator на minimap; клик/drag = прыжок ### Оверлеи (не сохраняются) - Ruler: вращение (drag ↺), resize (drag ↔), свойства-панель (угол + длина) - Protractor: вращение, resize (radius), свойства-панель ### Прочее - Двухслойный canvas: static (strokes) + dynamic (selection/guides/live) - Шаблоны страниц: blank, grid, lined, dots, coordinate - Multi-page с thumbnail sidebar (renderThumbnail) - Export PNG (с сохранением zoom/pan) - Auto-measurements (длины/углы/площадь для shape) - Real-time sync: SSE + HTTP polling (since_seq) - Live strokes preview через /stroke-preview - Cursor broadcast (teacher position visible to students) ### Темы доски (4) - **Chalkboard** (по умолчанию): зелёный (#213d26), меловая текстура, горизонтальные смазки - **Blackboard** (классная): тёмно-синий (#1a1a2e), диагональная текстура, chalk-grain - **Corkboard** (пробка): коричневый (#7a5c1e), диагональные волокна, случайные узлы-пятна - **Whiteboard** (маркерная): светло-серый градиент, minimal grain, тёмные линии шаблонов - Переключатель: `setBoardTheme(name)` + `wbSetBoardTheme()` + `