docs: итоговый отчёт и оставшиеся разрывы

This commit is contained in:
2026-10-27 19:21:48 +03:00
parent fba648ea54
commit 3fd0d41cf2
3 changed files with 306 additions and 7 deletions

View File

@@ -1,6 +1,9 @@
# 08. План реализации: группы, курсы, преподаватели
**Статус:** план согласован, этапы 0–4 выполнены, этапы 5–6 — в работе.
**Статус:** план согласован, этапы 0–5 выполнены. Проверка этапа 6 выполнена
(тесты, upgrade миграций, security, deploy-runbook), но этап 6 закрыт не
полностью: остаются права преподавателя на запись, видимость активов и CI —
см. § 9.1 и [16-stage6-report.md](16-stage6-report.md).
**Основа:** [07-groups-courses.md](07-groups-courses.md).
**Дата решений:** 2026-10-23.
@@ -311,12 +314,35 @@ identity V9, **academic V11**, progress V13 (+V14 при необходимос
31 августа МСК и догон), жизненный цикл студента, архив группы,
усиленное подтверждение удаления, блокировка входа для архивных
и выпущенных групп. Отчёт: [14-stage4-report.md](14-stage4-report.md).
- **Этап 5 — остаётся.** UX и контент: студенческие страницы курсов,
материалы по `/learn/course/{course_no}/...` и аудитории, наследуемая
видимость активов, публичные материалы `ALL`.
- **Этап 6 — остаётся.** Hardening: полная security-матрица,
upgrade-тест миграций, аудит, индексы/пагинация, backup/restore,
документация и smoke.
- **Этап 5 — выполнен.** Студенческие страницы курсов, материалы по
`/learn/course/{course_no}/...` и аудитории, публичные материалы `ALL`,
скрытые материалы для преподавателя, перепроверка статуса web-сессии.
Отчёт: [15-stage5-course-materials.md](15-stage5-course-materials.md).
- **Этап 6 — проверка выполнена, закрыт не полностью.** Проверены полный
прогон тестов/линтеров, upgrade миграций с master-схемы, security-матрица,
gateway и deploy-runbook. Отчёт: [16-stage6-report.md](16-stage6-report.md).
Не закрыты: права преподавателя на запись, видимость активов, аудит
скачиваний и CI. Остальные пункты hardening (индексы, backup/restore,
документация, smoke) описаны в отчёте и чек-листе.
### 9.1. Известные пробелы после этапа 6
- **Активы публичны.** `/api/v1/content/assets/{name}` не проверяет курс и
статью; нужна проверка `article_assets → article → section → chapter` и
visibility-aware маршруты.
- **Преподаватель — в основном read-only.** Авторство лабораторных/материалов,
распределение, оценки, комментарии и защита остаются admin-only в UI/API;
ТЗ ожидает преподавательский self-service.
- **Имена групп в кабинете преподавателя.** На странице курса показывается
UUID группы, batch-разрешения имён нет.
- **Аудит.** Есть история членства и журнал повышения, но нет audit-log
скачиваний, просмотров профилей, назначений и публикаций.
- **Импорт.** Старый формат не поддерживается; ведущие нули номера группы
нормализуются (`01` → `1`).
- **JWT 30 дней.** Web перепроверяет статус каждые 45 секунд, но прямой API
с уже выданным токеном живёт до истечения.
- **CI отсутствует.** Гейт — локальный `./gradlew test ktlintCheck detekt`;
автоматического pipeline и upgrade-теста в CI нет.
## 10. Definition of Done