chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user