2.7 KiB
2.7 KiB
Phase 5: Каталог (custom-sims в /lab)
Status: ⬜ Not Started Parent plan: PLAN.md Domain: fullstack
Objective
Сохранённые custom-симуляции появляются и играют в /lab наравне со встроенными; раздел «Мои симуляции», редактирование/удаление из каталога, deep-link.
Tasks
- При загрузке /lab подтягивать custom-sims (свои + published) из
GET /api/custom-simsи регистрировать черезregisterSpecSim(Ф0-адаптер) с idcustom:<dbid>. - Карточки в каталоге: категория/предмет/класс из меты; бейдж «Моя»/«Опубликована».
- Раздел/фильтр «Мои симуляции» в /lab.
- Кнопки на карточке custom-sim: «Редактировать» →
sim-builder.html?id=<id>, «Удалить» (владельцу). - Deep-link
/lab?sim=custom:<id>открывает напрямую (расширить существующийLAB_SIM_ALIASES/openSim). - Ленивая загрузка движка (
_sim_*.js) — только когда открыта custom-sim (через_loader/_sim_deps).
Files to Modify/Create
frontend/js/labs/lab-glue.jsи/илиlab-init.js— загрузка+регистрация custom-sims, карточки, фильтр (modify)frontend/js/labs/_sim_deps.js—_sim_*.jsв ленивые зависимости (modify)js/api.js— при необходимости (modify, опц.)
Acceptance Criteria
- Сохранённая в Ф4 симуляция видна в /lab, открывается и играет.
- «Мои симуляции» показывает свои (вкл. draft); published видят и другие.
- Edit/Delete с карточки работают; deep-link открывает.
- Старт /lab не тормозит (движок грузится лениво).
Notes
- НЕ ломать существующий каталог встроенных (lab_sims) — custom-список добавляется поверх.
- id-неймспейс
custom:чтобы не конфликтовать со встроенными.
Review Checklist
- Все задачи выполнены
- Встроенные симуляции и старт /lab не регрессировали
- Draft видит только владелец; published — все
- Ленивая загрузка движка работает