Files
Learn_System/plans/lab-content-engine/phase-4-db-admin.md
T
Maxim Dolgolyov 410eb8a862 fix(biochem 3D): корректная глубина + объёмные связи-цилиндры
Два дефекта, из-за которых 3D читался как плоская диаграмма:
- painter-сортировка была по возрастанию z (ближние первыми) — дальние
  атомы рисовались поверх ближних. Теперь единый список примитивов
  (атомы + половинки связей) сортируется по убыванию z (дальние первыми).
- связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»:
  толстый штрих с поперечным градиентом (центр светлее, края темнее),
  двухцветные (каждая половина под цвет своего атома) — фирменный вид
  ball-and-stick. Ширина зависит от перспективы (ближе — толще).
- усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 12:58:39 +03:00

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:sqlite DatabaseSync.
  • 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)
  • Мёрж корректен, фолбэк работает
  • Тесты проходят

Handoff to Next Phase