feat(access): Фаза 1c — видимость курсов по классам (Фаза 1 завершена)
Миграция 052: мост «открыть все опубликованные курсы всем существующим классам» (тип 'course' уже в CHECK из 051). courseController.list/search фильтруют курсы для НЕпривилегированных по allowedRefs(uid,'course') (content_ref = courses.id как TEXT); admin/teacher — все. /api/access/catalog отдаёт курсы; CONTENT_TYPES в админ-UI = textbook,exam,sim,course → курсы управляются во всех режимах «Доступ». Тест course-access 4/4 (allowlist+класс+privileged+каталог). Полный набор: 213 pass. ВАЖНО: новый опубликованный курс по умолчанию закрыт (allowlist) — открыть классам в админке. Мост сохранил видимость текущих опубликованных курсов у существующих классов. class_courses остаётся для назначений с дедлайном (сверх видимости). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
const KEYNAME = { textbook: 'slug', exam: 'exam_key', sim: 'id', course: 'id' };
|
||||
const TYPE_LABEL = { textbook: 'Учебники', exam: 'Экзамены', sim: 'Симуляции', course: 'Курсы' };
|
||||
const TYPE_BADGE = { textbook: 'Учебник', exam: 'Экзамен', sim: 'Симуляция', course: 'Курс' };
|
||||
const CONTENT_TYPES = ['textbook', 'exam', 'sim']; // course добавим отдельным шагом
|
||||
const CONTENT_TYPES = ['textbook', 'exam', 'sim', 'course'];
|
||||
const bucket = (type) => BUCKET[type] || (type + 's');
|
||||
const keyName = (type) => KEYNAME[type] || 'id';
|
||||
const itemsOf = (type) => (_catalog && _catalog[bucket(type)]) || [];
|
||||
|
||||
Reference in New Issue
Block a user