3.5 KiB
3.5 KiB
Phase 6: Раздача / шаблоны / клон / программа
Status: ⬜ Not Started Parent plan: PLAN.md Domain: fullstack
Objective
Экосистема вокруг custom-sims: публикация, раздача классу, клонирование чужих, старт из шаблонов, привязка к программе (учебник/тема).
Tasks
- Публикация: тумблер draft↔published в билдере/каталоге (PUT status). Только владелец/админ.
- Раздача классу:
POST /api/custom-sims/:id/share { classId }— по паттерну «Мои материалы» (shareMaterial): ученики класса получают доступ/уведомление. Решить — ссылка-доступ или копия (рекоменд.: доступ-ссылка на published + запись в lab_sim_links/доступ; копия избыточна). - Клон:
POST /api/custom-sims/:id/clone— копия спеки новому владельцу (draft). Кнопка «Клонировать» на чужой published-карточке. - Шаблоны: набор стартовых спек (встроенные JSON-фикстуры: пустая, маятник, график, бросок) → «Создать из шаблона» в билдере; «Создать из существующей» = clone.
- Привязка к программе: переиспользовать
lab_sim_links(kind=textbook|topic) дляcustom:<id>; чип «Связано с программой» (как у встроенных,_loadRelated) и кнопка «В лабораторию» с карточки учебника. - Тесты: share (доступ ученику), clone (новый владелец, draft), ownership на публикации.
Files to Modify/Create
backend/src/controllers/customSimController.js— share/clone/publish (modify)backend/src/routes/customSims.js— роуты share/clone (modify)backend/src/controllers/.../lab links— связи для custom (reuselab.jslinks, modify при необходимости)frontend/sim-builder.html/frontend/js/labs/lab-glue.js— шаблоны, кнопки публикации/клона/раздачи (modify)js/api.js— методы share/clone (modify)backend/tests/custom-sims-share.test.js(new)
Acceptance Criteria
- Учитель публикует; другой учитель видит и клонирует к себе (draft).
- Выданная классу симуляция доступна ученикам класса (с уведомлением).
- Старт из шаблона создаёт рабочую заготовку. Привязка к учебнику показывает чип/кнопку.
Notes
- Раздача — переиспользовать существующий механизм доступа/уведомлений, не строить новый.
- Решение копия-vs-ссылка зафиксировать в CONTEXT.md.
Review Checklist
- Все задачи выполнены
- Ownership на publish/share/clone покрыт тестами
- Ученик класса получает доступ; чужой — нет
- Reuse материалов/доступа/links, без дублей