43 lines
2.7 KiB
Markdown
43 lines
2.7 KiB
Markdown
# Phase 5: Каталог (custom-sims в /lab)
|
||
|
||
**Status:** ⬜ Not Started
|
||
**Parent plan:** [PLAN.md](./PLAN.md)
|
||
**Domain:** fullstack
|
||
|
||
## Objective
|
||
Сохранённые custom-симуляции появляются и играют в /lab наравне со встроенными;
|
||
раздел «Мои симуляции», редактирование/удаление из каталога, deep-link.
|
||
|
||
## Tasks
|
||
- [ ] При загрузке /lab подтягивать custom-sims (свои + published) из `GET /api/custom-sims`
|
||
и регистрировать через `registerSpecSim` (Ф0-адаптер) с id `custom:<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 — все
|
||
- [ ] Ленивая загрузка движка работает
|
||
|
||
## Handoff to Next Phase
|
||
<!-- Заполняет реализатор -->
|