Files
Learn_System/plans/sim-builder/phase-7-classroom.md
T

3.1 KiB

Phase 7: Доска онлайн-урока

Status: Not Started Parent plan: PLAN.md Domain: fullstack

Objective

Открывать custom-симуляцию на доске онлайн-урока через существующий конвейер встраивания sim, с синхроном параметров классу и аннотациями поверх.

Tasks

  • Учитель в classroom выбирает sim для доски: добавить в список источников свои+published custom-sims (рядом со встроенными).
  • Открытие на доске через существующий simOpen (controller classroom/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 корректно размонтируется

Handoff to Next Phase