# 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