3.1 KiB
3.1 KiB
Phase 7: Доска онлайн-урока
Status: ⬜ Not Started Parent plan: PLAN.md Domain: fullstack
Objective
Открывать custom-симуляцию на доске онлайн-урока через существующий конвейер встраивания sim, с синхроном параметров классу и аннотациями поверх.
Tasks
- Учитель в classroom выбирает sim для доски: добавить в список источников свои+published custom-sims (рядом со встроенными).
- Открытие на доске через существующий
simOpen(controllerclassroom/sim.js, роут/:id/sim) — для custom передаётсяcustom:<id>; рантаймSimEngineмонтируется в sim-контейнер доски. - Синхрон состояния: параметры/play-pause/время транслировать классу через
simState/simMode(как для встроенных) — ученики видят те же значения слайдеров и фазу анимации. - Аннотации поверх — через существующий
simAnnotate(без изменений конвейера). - Закрытие/смена sim корректно размонтирует
SimEngine(destroy). - Тест/проверка: открыть custom-sim на доске, подвигать слайдер у учителя → у ученика синхрон.
Files to Modify/Create
frontend/classroom.html— выбор custom-sim в источниках доски, монтаж SimEngine, проброс состояния (modify)backend/src/controllers/classroom/sim.js— поддержатьcustom:<id>(валидация доступа к published/own) (modify)js/api.js— при необходимости (modify, опц.)
Acceptance Criteria
- Учитель открывает custom-sim на доске; ученики видят её синхронно (параметры/анимация/режим).
- Аннотации поверх работают; закрытие чистит ресурсы.
- Существующее встраивание встроенных sim не регрессировало.
Notes
- Reuse simOpen/simState/simMode/simAnnotate — НЕ строить новый канал синхрона.
- Доступ: на доску можно класть только свои или published (проверка на сервере).
- classroom.html большой (8240 строк) — править точечно.
Review Checklist
- Все задачи выполнены
- Синхрон параметров учитель→ученики работает
- Доступ к custom-sim на доске проверяется
- Встроенные sim на доске не сломаны; SimEngine корректно размонтируется