From 8c44115d32496ef705d3e8343487c9a1f153a573 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Sun, 31 May 2026 08:22:32 +0300 Subject: [PATCH] =?UTF-8?q?docs(readme):=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлено/обновлено: - Учебники: 18 учебников (химия/физика/алгебра/геометрия 7-11), движок Химии 7/8 - Лаборатория: 40 симуляций по категориям, Lab Content Engine, LabRegistry - Биохимия: biochem-core dual-export, services/chem.js, /analyze, valency - Dashboard: карточки учебника/лабы/питомца, командный центр админа - Геймификация: панель начисления XP, питомец с pet-sprite.js - Архитектура: node:sqlite, 47 миграций, 106 таблиц, 60 страниц, 40 routes - Feature flags: таблица флагов - Content access allowlist, galaxy map, планиметрия/стереометрия, System Health - Shared модули: pet-sprite.js, lab-previews.js - API: полная таблица 33 групп маршрутов Co-Authored-By: Claude Sonnet 4.6 --- README.md | 447 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 361 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 091d4bc..5bc2e54 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # LearnSpace -**Образовательная платформа с интерактивной онлайн-доской, системой тестирования, управлением классами и элементами геймификации.** +**Образовательная платформа с интерактивной онлайн-доской, системой тестирования, учебниками, виртуальной лабораторией и геймификацией.** -Стек: Node.js · Express · SQLite · Vanilla JS · Canvas API · SSE · WebRTC +Стек: Node.js · Express · SQLite (`node:sqlite` DatabaseSync) · Vanilla JS · Canvas API · SSE · WebRTC --- @@ -15,6 +15,8 @@ - [Архитектура](#архитектура) - [API](#api) - [Роли пользователей](#роли-пользователей) +- [Feature Flags](#feature-flags) +- [Контент](#контент) --- @@ -29,38 +31,60 @@ - Маркер (highlighter) с настраиваемой прозрачностью - Лазерная указка (без сохранения) - Ластик -- 11 фигур: прямоугольник, скруглённый прямоугольник, эллипс, линия, стрелка, треугольник, ромб, шестиугольник, звезда, облако, коннектор -- Стикеры с редактированием -- Текстовые блоки -- Вставка изображений -- Таблицы +- Connector (линии со стрелками) +- Стикеры с редактированием текста +- Текстовые блоки (inline editing) +- Вставка изображений (drag & drop + URL) +- Таблицы (интерактивные) - LaTeX-формулы (KaTeX) с визуальным редактором и категориями символов -- Система координат с построением графиков функций (встроенный парсер) +- Система координат с построением графиков функций (встроенный парсер выражений) - Числовая ось для неравенств (точки, интервалы) -- Циркуль с анимацией +- Циркуль с трёхфазной state machine + +**Фигуры (11):** прямоугольник, скруглённый прямоугольник, эллипс, линия, стрелка, треугольник, ромб, шестиугольник, звезда, облако, коннектор **Инструмент выделения** - Перемещение и изменение размера всех объектов - Вращение объектов (handle над объектом) - Lasso multi-select (резиновая рамка) - Shift+click для добавления к выделению -- Copy / Paste с автосмещением +- Copy/Paste с автосмещением - Snap-гайды при выравнивании объектов +- Delete, Bring to front, Send to back **Навигация по холсту** - Zoom: колесо мыши к курсору, Ctrl+`+`/`-`/`0`, кнопки в тулбаре - Pan: зажатый пробел + перетаскивание -- Minimap (192×108) в правом нижнем углу при zoom > 1 — клик/drag для прыжка по холсту +- Minimap (192×108) в правом нижнем углу при zoom > 1 — клик/drag для прыжка **Инструменты измерения** -- Линейка: поворот (drag ↺), изменение длины (drag ↔), панель свойств (угол, длина) +- Линейка: поворот, изменение длины, панель свойств (угол, длина) - Транспортир: поворот, изменение радиуса, панель свойств - Авто-измерения геометрических фигур (длины, углы, площадь) +**Планиметрия (геометрические построения)** +- Середина отрезка, биссектриса, высота, описанная/вписанная окружность +- Касательная, параллельный перенос, симметрия +- Правильный n-угольник, параллелограмм, средняя линия треугольника +- Метки параллельности, прямых углов, одинаковых отрезков +- Дуги углов, засечки рёбер + +**Стереометрия 3D** +- Куб, прямоугольный параллелепипед, тетраэдр, октаэдр, пирамида, призма +- Усечённая пирамида, правильные многогранники, конус, цилиндр, сфера +- Скрещивающиеся прямые, производные точки 3D, длины рёбер +- Вращение мышью, deep-link на конкретную фигуру (`openSim('stereo:cube')` / `?stereofig=`) + +**Темы доски (4)** +- **Chalkboard** — зелёный фон, меловая текстура +- **Blackboard** — тёмно-синий, диагональная текстура +- **Corkboard** — пробковый, волокна +- **Whiteboard** — светло-серый, маркерная доска + **Страницы и шаблоны** - Неограниченное количество страниц на сессию - Боковая панель с миниатюрами страниц -- Шаблоны: чистая страница, сетка, линейки, точки, координатные оси +- Шаблоны: чистая, сетка, линованная, точки, координатные оси - Экспорт страницы в PNG **Коммуникация** @@ -72,49 +96,203 @@ - Курсор учителя виден ученикам в реальном времени - Выдача прав рисования отдельным ученикам - Личные заметки по уроку (per user) +- Режим аннотации поверх симуляции + +--- + +### Учебники (Textbooks) + +Интерактивные параграф-по-параграфу учебники с прогрессом чтения. + +**Доступный контент (18 учебников)** + +| Предмет | Классы | +|---------|--------| +| Химия | 7, 8, 9 | +| Физика | 7, 8, 9, 10, 11 | +| Алгебра | 7, 8, 9, 10, 11 | +| Геометрия | 7, 8, 9, 10, 11 | + +**Функции:** +- Параграф-по-параграф навигация с прогресс-баром и `last_para` (последнее место) +- Задания на чтение: учитель назначает конкретные §, система проверяет выполнение +- Кнопка «В лабораторию» — ссылки на связанные симуляции (`lab_sim_links`) +- Чип «Связано с программой» (курикулумная привязка) +- Хабы глав: агрегированный прогресс по всем главам учебника +- Закладки с заметками и цветами +- Просмотр прогресса учеников класса (teacher view) +- Прогресс хранится в `textbook_progress` (JSON массив прочитанных §) + +**Контент-движок Химии 7 и 8:** +- 26 параграфов (Химия 7), 52 параграфа (Химия 8) с интерактивными виджетами +- Canvas-анимации (реакции, осадки, горение, электролиз, индикаторы) +- 3D-модели молекул (ball-and-stick, VSEPR-геометрия) +- Интегрированные задания и лабораторные работы +- Карты связей понятий, глоссарий в финалах глав + +--- + +### Виртуальная лаборатория (40 симуляций) + +Canvas-движок без внешних зависимостей (по аналогу three.js — всё сделано вручную). + +**Физика (14):** +projectile, waves, hydrostatics, race, dynamics, isoprocess, pendulum, opticsbench, radioactive, collision, heatengine, circuit, emfield, logic + +**Химия (14):** +titration, bohratom, qualanalysis, crystal, molphys, orbitals, organic, periodic, solutions, stoichiometry, chemsandbox, chemistry, equilibrium, electrolysis + +**Математика (9):** +graph, triangle, quadratic, normaldist, geometry (планиметрия), stereo (стереометрия 3D), probability, graphtransform, trigcircle + +**Биология (2):** +celldivision, photosynthesis + +**Игры (1):** +angrybirds + +**Lab Content Engine (LabRegistry):** +- Все симуляции зарегистрированы в `window.LabRegistry` через data-driven манифест +- Каталог в БД (`lab_sims`): включение/отключение отдельных симуляций, featured, теги +- Ленивая загрузка кода симуляций (Phase 3) +- Связь симуляций с параграфами учебников (`lab_sim_links`) +- Deep-link `?sim=` открывает конкретную симуляцию +- Курикулумная привязка: subject/grade/topics в манифесте +- Управление в админке: включение симуляций, редактор связей с учебниками + +**Оптическая скамья (opticsbench) — режим «Конструктор»:** +- 2D-трассировщик лучей (линза, зеркало, преломление) +- Характеристические лучи предмета, дисперсия, ПВО +- Алиасы deep-link: `thinlens`, `mirrors`, `refraction` + +--- + +### Биохимия (5 страниц) + +Интерактивный модуль без тяжёлых зависимостей (только Canvas). + +**Молекулярный редактор (`biochem.html`):** +- 2D и настоящая 3D-геометрия по VSEPR (ОЭПВО) +- Тумблер δ± — тепловая карта частичных зарядов (синий δ+/красный δ−), стрелка диполя +- Гибридизация, форма молекулы, валентный угол в панели свойств +- Импорт SMILES (учебное подмножество), экспорт PNG/JSON +- Химический движок `BIO` (window.BIO, dual-export browser+Node): `analyze`, `partialCharges`, `dipole`, `polarity`, `functionalGroups`, `balance`, `vsepr`, `render3D`, `parseSmiles`, `valency` +- Расширенная валидация валентности: подсказки («Углерод (C): занято 5 связей, максимум 4 — убери 1») + +**Серверный химический слой (`services/chem.js`):** +- Переиспользует то же ядро `biochem-core.js` (без дублирования) через dual-export +- `POST /api/biochem/analyze` → {formula, mass, dbe, geometry, polarity, dipole, charges, groups, massFractions, valency} +- `/validate` переведён на ядро (единые подсказки валентности на клиенте и сервере) +- `LS.biochemAnalyze(atoms, bonds)` в api.js + +**Библиотека (`biochem-library.html`):** 105+ молекул, 2D/3D-превью, сравнение + +**Реакции (`biochem-reactions.html`):** 27 реакций, `BIO.balance` (Гаусс+НОК), энергодиаграмма (canvas: реагенты→продукты, стрелка ΔH, экзо/эндо), коэффициенты + +**Метаболические пути (`biochem-pathways.html`):** пути из БД (`bio_pathways`), прогресс Learn-режима, награда XP + +**Свойства (`biochem-properties.html`):** сравнение молекул, столбчатый график молярных масс, экспорт CSV + +--- + +### Управление классом + +- Создание классов, добавление учеников +- Задания с дедлайнами и прикреплёнными файлами +- Отслеживание сдачи: статусы new/reviewed/accepted/revision +- Текстовые задания с прикреплением файлов учеником +- Журнал оценок +- Объявления и лента активности (Google Classroom-стиль) +- Шаблоны заданий для переиспользования +- Live-викторины в реальном времени (SSE) +- Аналитика успеваемости +- Назначение ученикам без класса (teacherStudents) +- Назначение чтения конкретных § учебника как домашнего задания + +--- ### Учебные материалы -- Банк вопросов с уровнями сложности и тематиками +- Банк вопросов с уровнями сложности, тематиками, поддержкой HTML/KaTeX - Конструктор тестов с перемешиванием вопросов - Многошаговые уроки с блоками: текст, медиа, формулы, код, викторина - Курсы с прогрессом прохождения - Карточки (flashcards) со spaced repetition - Граф знаний — визуализация связей между темами -- Интерактивные лабораторные работы (30+ симуляций): физика, химия, биология, математика +- Сборники ЦТ/ЦЭ: физика 2019–2024, математика 2021–2024 (300+ вопросов) +- Экзаменационные тесты (exam9): 80 вариантов по математике 9 класса -### Управление классом - -- Создание классов, добавление учеников -- Задания с дедлайнами, отслеживание сдачи -- Журнал оценок -- Объявления и лента активности (Google Classroom-стиль) -- Шаблоны заданий для переиспользования -- Live-викторины в реальном времени -- Аналитика успеваемости +--- ### Специализированный контент -- **Биохимия**: интерактивные молекулы, реакции, метаболические пути, электрофорез -- **Красная книга**: виды, биомы, экосистемы, пищевые сети, популяционные данные, квесты +**Биохимия** — см. раздел выше + +**Красная книга (4 страницы):** +- Виды, биомы, экосистемы, пищевые сети +- Популяционные данные, квесты + +**Коллекции:** коллекционирование предметов с галереей + +**Galaxy Map (`/sitemap`):** интерактивная Canvas-карта всех модулей платформы с feature flag фильтрацией + +--- ### Геймификация -- Опыт (XP) и уровни -- Система достижений +- Опыт (XP) и уровни (8 уровней эволюции, визуальная модель с VSEPR-геометрией) +- 38+ достижений в 6 группах (onboarding, streak, lab, exam, biochem, leaderboard) - Стрики (серии дней) -- Ежедневные цели и задачи -- Виртуальный питомец -- Магазин с внутренней валютой +- Ежедневные цели (easy/medium/hard тиры) с кольцом прогресса +- Виртуальный питомец: эволюция по уровням, 6 цветов, аксессуары (шляпа, очки, корона), радужный ошейник при streak ≥ 7, автономное настроение +- Магазин с внутренней валютой (монеты), фоны для питомца - Коллекционирование предметов +**Панель администратора геймификации:** +- Статистика: суммарный XP, монеты, средний уровень, достижения, покупки +- Топ-10 по XP, последние начисления XP с читаемыми подписями +- Начисление XP/монет: select с полным списком пользователей + фильтр, пресеты (0/+10/+25/+50/+100/+250), пресеты причин, fix: 0 XP не начисляется +- Сброс прогресса пользователя + +--- + ### Администрирование -- Управление пользователями и ролями -- Гранулярные разрешения (RBAC) -- Feature flags (глобальные и per-class) -- Журнал аудита -- Кабинет родителя +- Управление пользователями и ролями (student, teacher, admin, free_student) +- Гранулярные разрешения (RBAC) — per-role и per-user +- Feature flags: включение/отключение модулей (biochem, textbooks, flashcards, board, live_quiz, exam9) +- Управление симуляциями: каталог в БД, включение/отключение, редактор связей с учебниками +- Доступ к контенту (allowlist): учебники и экзамены по классам и ученикам (`content_access`) +- Журнал аудита (`admin_audit_log`) +- System Health: реальное время метрики (CPU, RAM, event loop lag), HTTP-статистика запросов, тренды (canvas-графики), журнал последних ошибок +- Кабинет родителя с аналитикой по ученику +- Аватары с crop/zoom — ученик загружает, учитель/админ модерирует +- Панель «Обзор» (командный центр): KPI 24ч, лента завершений, триаж событий, распределение по предметам +- KaTeX рендеринг в секции «Вопросы» +- Глобальный поиск (command palette): пользователи, тесты, классы + +--- + +### Дашборд (Главная) + +**Для ученика:** +- Карточка «Продолжить/Начать чтение» с обложкой учебника (цветная, по теме) +- Карточка «Лаборатория дня» с превью симуляции на фоне блока + deep-link +- Карточка питомца с реальными данными из `/api/pet` (имя, модель, цвет, уровень XP, настроение) +- Активность (тепловая карта / streak-календарь), слабые темы, задания + +**Для администратора:** +- Командный центр: pulse KPIs с count-up анимацией, attention inbox, лента завершений, health-плитки контента, топ/антирейтинг дня + +**Шапка (dash-header):** увеличенная (76px), аватарка 46px, Unbounded 1.15rem, кольца ученика 48px, чипы администратора крупные + +--- + +### Профиль и настройки + +- Звуковая система (12 звуков на Web Audio API): достижения, уровень, XP, монеты, тесты, доска +- Настройки предпочтений на сервере (dashboard widget visibility, whiteboard defaults) +- Вкладка звука и настроек в профиле --- @@ -130,9 +308,9 @@ cp backend/.env.example .env docker compose up -d ``` -Платформа будет доступна на `http://localhost:3000`. +Платформа доступна на `http://localhost:3000`. -Первый пользователь с ролью `admin` создаётся через seed: +Первый admin создаётся через seed: ```bash docker compose exec app npm run seed ``` @@ -141,29 +319,24 @@ docker compose exec app npm run seed ## Ручная установка -**Требования:** Node.js 18+ +**Требования:** Node.js 22+ ```bash -# 1. Клонировать и установить зависимости git clone https://git.dolgolyov-family.by/maxim.dolgolyov/Learn_System.git cd Learn_System/backend npm install -# 2. Конфигурация cp .env.example .env # Отредактировать .env -# 3. Миграции и начальные данные -npm run migrate -npm run seed # опционально — тестовые вопросы и пользователи +npm run migrate # применить все миграции (47 SQL-файлов) +npm run seed # опционально — тестовые данные -# 4. Запуск -npm start # production -npm run dev # development (nodemon) +npm start # production +npm run dev # development (nodemon) ``` -Сервер запустится на `http://localhost:3000`. -Фронтенд раздаётся Express-ом из папки `frontend/`. +Сервер стартует на `http://localhost:3000`. Фронтенд раздаётся Express из `frontend/`. --- @@ -189,28 +362,49 @@ npm run dev # development (nodemon) Learn_System/ ├── backend/ │ ├── src/ -│ │ ├── server.js # Express app, 28 route groups +│ │ ├── server.js # Express app, 40 route groups │ │ ├── config.js -│ │ ├── sse.js # Server-Sent Events broadcast -│ │ ├── controllers/ # 30 контроллеров -│ │ ├── routes/ # 28 файлов маршрутов -│ │ ├── middleware/ # auth, RBAC, rate limit, validate +│ │ ├── sse.js # Server-Sent Events broadcast +│ │ ├── controllers/ # 40+ контроллеров +│ │ │ ├── gamification/ # _shared, service, admin, achievements (split) +│ │ │ ├── classroom/ # 7 domain-файлов (split) +│ │ │ └── biochemController.js +│ │ ├── routes/ # 40 файлов маршрутов +│ │ ├── services/ +│ │ │ ├── chem.js # Серверный химический движок (dual-export с BIO) +│ │ │ └── contentAccess.js # Allowlist учебников и экзаменов +│ │ ├── middleware/ # auth, RBAC, rate limit, validate │ │ ├── db/ -│ │ │ ├── migrate.js # Auto-migration при старте (76 таблиц) -│ │ │ ├── db.js # better-sqlite3 singleton -│ │ │ └── migrations/ # SQL-файлы схемы -│ │ └── utils/ +│ │ │ ├── migrations-runner.js # Версионированный runner (47 миграций) +│ │ │ ├── db.js # node:sqlite DatabaseSync singleton +│ │ │ └── migrations/ # SQL-файлы схемы (000–046) +│ │ └── utils/ # audit, sanitize, healthMonitor │ └── package.json ├── frontend/ -│ ├── *.html # 43 страницы -│ ├── css/ls.css # Общая дизайн-система +│ ├── *.html # 60 страниц +│ ├── css/ls.css # Общая дизайн-система │ └── js/ -│ ├── whiteboard.js # Движок доски (~3200 строк) -│ ├── classroom-rtc.js # WebRTC модуль -│ └── labs/ # 30+ физических симуляций +│ ├── whiteboard.js # Движок доски (~3500+ строк) +│ ├── classroom-rtc.js # WebRTC модуль +│ ├── biochem-core.js # Химическое ядро BIO (dual-export) +│ ├── pet-sprite.js # Рендерер питомца (dual-export, shared) +│ ├── lab-previews.js # SVG-превью симуляций для дашборда +│ ├── labs/ # 40 симуляций + LabRegistry +│ │ ├── _registry.js # LabRegistry — единый реестр +│ │ ├── _register-all.js # Data-driven регистрация всех симуляций +│ │ ├── lab-glue.js # Каталог SIMS, THEORY, preview SVG +│ │ ├── lab-init.js # openSim dispatcher +│ │ └── *.js # 34 движка симуляций +│ └── admin/ # Секции admin.html +│ ├── admin.js # Оркестратор + роутер +│ ├── router.js # Hash-based router +│ └── sections/ # overview, users, sessions, gam, ... ├── js/ -│ ├── api.js # window.LS.* — клиентское API -│ └── mobile.js # Мобильная адаптация +│ ├── api.js # window.LS.* — 200+ клиентских методов +│ ├── sidebar.js # Сайдбар с nav-avatar +│ └── mobile.js # Мобильная адаптация +├── plans/ # Планы фич (BIOCHEM_UPGRADE, STEREO_3D, ...) +├── docs/ # Руководства и планы ├── docker-compose.yml └── Dockerfile ``` @@ -219,26 +413,45 @@ Learn_System/ **Синхронизация доски** - Штрихи сохраняются батчами через `POST /api/classroom/:id/strokes` -- Загрузка с `?since_seq=N` — клиент получает только новые штрихи -- Live-превью через `POST /stroke-preview` → SSE `stroke_preview` событие -- Двухслойный canvas: статический слой (_strokes) + динамический (_selection/guides/laser) +- Загрузка с `?since_seq=N` — только новые штрихи +- Live-превью через `POST /stroke-preview` → SSE `stroke_preview` +- Двухслойный canvas: статический (_strokes) + динамический (_selection/guides/laser) **Real-time (SSE)** -- Один SSE-поток на пользователя: `GET /api/classroom/:id/events` -- События: `stroke_batch`, `stroke_preview`, `stroke_deleted`, `page_changed`, `chat_message`, `cursor_move`, `hand_raised`, `screen_share`, и др. -- Compression отключён для SSE-потоков +- Один SSE-поток на пользователя +- События: `stroke_batch`, `stroke_preview`, `stroke_deleted`, `page_changed`, `chat_message`, `cursor_move`, `hand_raised`, `screen_share` и др. **База данных** -- SQLite через `better-sqlite3` (синхронный API) -- Автоматические миграции при каждом старте сервера -- 76 таблиц, транзакционная запись батчей штрихов +- SQLite через `node:sqlite` (`DatabaseSync`, встроенный в Node.js 22+) +- Версионированные миграции (47 SQL-файлов, 000–046) +- 106 таблиц +- Транзакционная запись батчей штрихов **Аутентификация** -- JWT Bearer token +- JWT Bearer token, bcryptjs - Роли: `admin`, `teacher`, `student`, `free_student` - RBAC middleware с кешированием разрешений - Rate limiting: 6000 req/min для classroom, 600 req/min для остальных +**Химическое ядро (BIO)** +- `frontend/js/biochem-core.js` — dual-export: `window.BIO` в браузере, `module.exports` в Node +- `backend/src/services/chem.js` — переиспользует ядро без дублирования +- VSEPR-геометрия, частичные заряды, дипольный момент, баланс уравнений (Гаусс+НОК) + +**Доступ к контенту (content_access)** +- allowlist учебников и экзаменов по классам и конкретным ученикам +- `services/contentAccess.js`: `canAccessTextbook`, `filterTextbooks`, `allowedRefs` +- `/api/access` — admin CRUD + +**Lab Content Engine (LabRegistry)** +- Все симуляции: data-driven манифесты в `LabRegistry` +- Ленивая загрузка через `LabLoader.ensure(simId)` +- Каталог в БД (`lab_sims`): включение, featured, теги, привязка к учебникам + +**Shared модули (pet-sprite.js, lab-previews.js)** +- `pet-sprite.js` — канонический рендерер питомца, используется и на `/pet`, и на дашборде +- `lab-previews.js` — SVG-превью 6 симуляций для карточки «Лаборатория дня» + --- ## API @@ -247,21 +460,41 @@ Learn_System/ Аутентификация: `Authorization: Bearer ` -| Группа | Базовый путь | Назначение | -|--------|-------------|-----------| -| Auth | `/auth` | Регистрация, вход, профиль | +| Группа | Путь | Назначение | +|--------|------|-----------| +| Auth | `/auth` | Регистрация, вход, профиль, аватар | | Classroom | `/classroom` | Онлайн-урок, доска, чат, WebRTC | | Classes | `/classes` | Управление классами | | Assignments | `/assignments` | Задания и сдача работ | +| Submissions | `/submissions` | Сдача работ, статусы, оценки | | Questions | `/questions` | Банк вопросов | | Sessions | `/sessions` | Тестовые сессии | | Courses | `/courses` | Теоретические курсы | | Lessons | `/lessons` | Уроки с блоками контента | -| Gamification | `/gamification` | XP, ачивки, стрики | -| Files | `/files` | Загрузка и хранение файлов | +| Textbooks | `/textbooks` | Учебники, прогресс, закладки | +| Lab | `/lab` | Симуляции: каталог, управление | +| Biochem | `/biochem` | Молекулы, реакции, пути, analyze, validate | +| Gamification | `/gamification` | XP, уровни, ачивки, стрики, admin | +| Pet | `/pet` | Питомец, действия, магазин фонов | +| Shop | `/shop` | Виртуальный магазин | | Live | `/live` | Live-викторины | | Analytics | `/analytics` | Статистика | -| Admin | `/admin` | Управление платформой | +| Admin | `/admin` | Управление платформой, overview | +| Access | `/access` | Allowlist контента | +| Exam9 | `/exam9` | Экзаменационные тесты | +| Files | `/files` | Загрузка и хранение файлов | +| Notifications | `/notifications` | Уведомления | +| Permissions | `/permissions` | RBAC правила | +| Search | `/search` | Глобальный поиск | +| Preferences | `/preferences` | Пользовательские настройки | +| Parent | `/parent` | Кабинет родителя | +| Red Book | `/red-book` | Красная книга | +| Collection | `/collection` | Коллекции предметов | +| Games | `/games` | Игры (виселица, кроссворд) | +| Knowledge Map | `/knowledge-map` | Граф знаний | +| Flashcards | `/flashcards` | Флэшкарты | +| Templates | `/templates` | Шаблоны заданий | +| Teacher Students | `/teacher-students` | Ученики учителя без класса | Полная документация по endpoint'ам — в `backend/src/routes/`. @@ -271,12 +504,54 @@ Learn_System/ | Роль | Доступ | |------|--------| -| `admin` | Полный доступ ко всему, включая панель администратора | -| `teacher` | Создание классов, уроков, заданий, проведение онлайн-уроков | -| `student` | Прохождение тестов, участие в уроках, доступ к материалам | -| `free_student` | Ограниченный доступ (настраивается feature flags) | +| `admin` | Полный доступ, панель администратора, командный центр | +| `teacher` | Классы, уроки, задания, учебники, проведение онлайн-уроков | +| `student` | Тесты, уроки, учебники (по allowlist), лаборатория, питомец | +| `free_student` | Ограниченный доступ (настраивается через feature flags) | -Разрешения настраиваются гранулярно через `/api/permissions`. +Разрешения настраиваются гранулярно через `/api/permissions` (per-role и per-user). + +--- + +## Feature Flags + +Управляются через `app_settings` и API `/api/admin` (только admin). + +| Флаг | Назначение | По умолчанию | +|------|-----------|-------------| +| `feature_biochem_enabled` | Модуль биохимии | вкл | +| `feature_textbooks_enabled` | Модуль учебников | вкл | +| `feature_flashcards_enabled` | Флэшкарты | вкл | +| `feature_board_enabled` | Доска (board) | вкл | +| `feature_live_quiz_enabled` | Live-викторины | выкл | +| `feature_exam9_enabled` | Экзаменационные тесты | вкл | +| `sim_module_disabled` | Весь модуль симуляций | выкл | +| `sim_disabled_ids` | JSON-массив отключённых симуляций | `[]` | + +--- + +## Контент + +### Учебники + +| Предмет | Классы | Статус | +|---------|--------|--------| +| Химия | 7, 8, 9 | Полный курс с виджетами и анимациями | +| Физика | 7, 8, 9, 10, 11 | Структура + контент | +| Алгебра | 7, 8, 9, 10, 11 | Структура + контент | +| Геометрия | 7, 8, 9, 10, 11 | Структура + контент | + +### Сборники ЦТ/ЦЭ + +| Сборник | Вопросов | +|---------|---------| +| Физика 2019–2024 | 150+ | +| Математика 2021–2024 | 150+ | +| Экзамен-9 (математика) | 80 вариантов | + +### Симуляции + +40 симуляций в 5 категориях — см. раздел «Виртуальная лаборатория». ---