47 lines
3.5 KiB
Markdown
47 lines
3.5 KiB
Markdown
# Phase 4: Билдер (редактор)
|
|
|
|
**Status:** ⬜ Not Started
|
|
**Parent plan:** [PLAN.md](./PLAN.md)
|
|
**Domain:** frontend
|
|
|
|
## Objective
|
|
Учительский редактор: страница с живым превью и панелями для сборки спеки без кода.
|
|
После фазы учитель собирает рабочую симуляцию с нуля в UI и сохраняет в БД (Ф3).
|
|
|
|
## Tasks
|
|
- [ ] Страница `frontend/sim-builder.html` (доступ teacher/admin; сайдбар как у других страниц).
|
|
- [ ] Левая/правая панель + центр-превью (встроенный `SimEngine` инстанс, перемонтаж при правках).
|
|
- [ ] Панель **Параметры**: добавить/удалить параметр (имя, min, max, step, начальное, единица) → слайдер в превью.
|
|
- [ ] Панель **Объекты**: добавить объект (тип из whitelist), редактор свойств; числовые поля
|
|
принимают число ИЛИ выражение; палитра-помощник функций/параметров; подпись с LaTeX.
|
|
- [ ] Панель **Графики/Физика**: добавить plot (expr/var/range/trace); тумблер физики + её поля (Ф2).
|
|
- [ ] Размещение объектов мышью на превью (клик-поставить, drag-двигать) с синхроном в свойства.
|
|
- [ ] Мета: заголовок, описание, предмет, класс, категория, превью-картинка (опц.).
|
|
- [ ] Save/Load через `LS.customSims*` (Ф3): новый / редактировать существующий; кнопка «Тест» (play inline).
|
|
- [ ] Валидация на клиенте (понятные ошибки до сохранения) + показ ошибок выражений.
|
|
|
|
## Files to Modify/Create
|
|
- `frontend/sim-builder.html` (new) — страница + инлайн-логика редактора
|
|
- `frontend/js/labs/_sim_engine.js` — при необходимости hook'и для билдера (live re-mount, highlight) (modify, минимально)
|
|
- `js/api.js` — если нужны доп. методы (modify, опц.)
|
|
- ссылка в сайдбаре/навигации для учителя (modify соответствующего include)
|
|
|
|
## Acceptance Criteria
|
|
- Учитель с нуля добавляет параметры/объекты/график, видит живое превью, сохраняет, открывает заново и видит то же.
|
|
- Ошибка в выражении показывается понятно, не роняет редактор.
|
|
- Нет эмодзи, дизайн в системе ls.css.
|
|
|
|
## Notes
|
|
- Прагматично: форма-панели + лёгкий drag на превью. НЕ полноценный node-граф.
|
|
- Это frontend-фаза — использовать гайдлайны frontend-design.
|
|
- Большой файл — держать логику модульной (можно вынести в `frontend/js/sim-builder.js`).
|
|
|
|
## Review Checklist
|
|
- [ ] Все задачи выполнены
|
|
- [ ] Полный цикл build→save→reload→edit работает
|
|
- [ ] Доступ только teacher/admin
|
|
- [ ] Нет эмодзи; дизайн-система соблюдена
|
|
|
|
## Handoff to Next Phase
|
|
<!-- Заполняет реализатор -->
|