410eb8a862
Два дефекта, из-за которых 3D читался как плоская диаграмма: - painter-сортировка была по возрастанию z (ближние первыми) — дальние атомы рисовались поверх ближних. Теперь единый список примитивов (атомы + половинки связей) сортируется по убыванию z (дальние первыми). - связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»: толстый штрих с поперечным градиентом (центр светлее, края темнее), двухцветные (каждая половина под цвет своего атома) — фирменный вид ball-and-stick. Ширина зависит от перспективы (ближе — толще). - усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Phase 4: Реестр в БД + API + админка
Status: ⬜ Not Started Parent plan: PLAN.md Domain: fullstack
Objective
Хранить оверрайды каталога в БД, мёржить с код-манифестами, управлять каталогом из админки (вкл/выкл, порядок, теги, рекомендуемые).
Tasks
- Миграция БД: таблица
lab_sims(id PK, title, cat, subject, grade, desc, enabled, sort, topic_id, textbook_ref, flags JSON, updated_at). Черезnode:sqliteDatabaseSync. - Backend route
GET /api/lab/sims— отдаёт мёрж: код-манифест (база) + БД-оверрайды. - Backend admin routes: upsert/enable/disable/reorder/tag (под RBAC admin).
- Frontend: каталог берёт enabled/order/теги из
/api/lab/sims(с фолбэком на код-манифест офлайн). - Расширить
frontend/js/admin/sections/sims.js: список, вкл/выкл, drag-reorder, теги, «рекомендуемые». - Сохранить совместимость с
_disabledSimIds.
Files to Modify/Create
backend/src/db/migrations/0XX_lab_sims.sql— новая миграция.backend/src/routes/lab.js(или расширить существующий) — API.backend/src/server.js— подключить роут (если новый файл).frontend/js/admin/sections/sims.js— расширить админку.frontend/js/labs/_loader.js/manifest — учитывать БД-данные.
Acceptance Criteria
npm testзелёный;npm run lint:routesбез ошибок (auth на роутах).- Админ может вкл/выкл/переупорядочить/тегировать симуляцию, изменения видны в каталоге.
- Офлайн/без БД — фолбэк на код-манифест.
Notes
- RBAC: мутации только admin. Чтение каталога — для роли с доступом к лаборатории.
- Не дублировать данные: код-манифест = источник базовых полей; БД = оверрайды/доп.
Review Checklist
- Миграция идемпотентна
- Роуты под auth (lint:routes)
- Мёрж корректен, фолбэк работает
- Тесты проходят