Files
Learn_System/.claude/memory/project_status.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

207 lines
10 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.
---
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()` + `<select id="wb-theme-select">`
- Текстуры кешируются в `_bgNoiseCache` (Map по имени темы)
---
## Tech stack
- **Backend**: Node.js 22, Express 4.18, better-sqlite3 (sync), JWT, bcryptjs, multer, sharp, compression
- **Frontend**: Vanilla JS ES6+, HTML/CSS без бандлера, Canvas API, SSE, WebRTC
- **Иконки**: inline SVG `.ic` класс (НЕ эмоджи), Lucide CDN на некоторых страницах
- **Шрифты**: Google Fonts (Unbounded, Manrope)
- **Деплой**: Docker multi-stage Alpine, docker-compose, tini init, 3 named volumes
- **Репо**: https://git.dolgolyov-family.by/maxim.dolgolyov/Learn_System (ветка master)
---
## Env vars (backend/.env.example)
```
PORT=3000
JWT_SECRET=...
JWT_EXPIRES_IN=7d
CLIENT_ORIGIN=http://localhost:3000
DB_PATH=/app/backend/data/learnspace.db
UPLOADS_DIR=/app/backend/uploads
```