--- name: reference_quick_lesson description: «Быстрый урок» — одиночный урок без курса через скрытый личный курс-контейнер (is_personal) metadata: node_type: memory type: reference originSessionId: 60467058-b40e-4bd9-9f7f-d1e362e8039a --- Одиночного урока без курса в системе нет: `lessons.course_id NOT NULL`, `POST /api/lessons` требует courseId. Решено через **личный курс-контейнер** (сделано 2026-06-03, commit 6be8a50). - Миграция 059: `courses.is_personal INTEGER DEFAULT 0` (ADD COLUMN). - `POST /api/lessons/quick` (teacher/admin, `lessonController.quickLesson`): get-or-create контейнер `WHERE created_by=? AND is_personal=1` (subject_slug='personal', title='Мои материалы', is_published=1, один на учителя) → создаёт урок → `{lessonId, courseId}`. - Фронт: кнопка «Быстрый урок» в каталоге `theory.html` (рядом с «Новый курс», видна teacher/admin) → POST /quick → редирект `/lesson-editor.html?id=`. - `courseController.list` СКРЫВАЕТ `is_personal=1` из каталога для всех, кроме владельца (`AND (c.is_personal=0 OR c.created_by=?)`; студентам — всегда `is_personal=0`). - Учитель видит свои быстрые уроки как курс «Мои материалы» (открыв его в каталоге). - Доступ ученикам: контейнер опубликован, но урок надо ОПУБЛИКОВАТЬ (per-lesson) + доступ к курсу-контейнеру идёт через обычный content_access/класс (см. [[project_content_access]]). Standalone-урок на уровне схемы (course_id NULL) — НЕ делали (был выбран этот лёгкий путь).