feat: закрыть остаточный backlog

- keyset-пагинация аудита с курсором (occurred_at, id) и UI «Показать ещё»
- пакетный /api/v1/labs/details и переход progress на один запрос
- абсолютный потолок сессии 30 дней (identity V12 + web), очистка refresh
- админская инвентаризация legacy-активов (/admin/legacy-assets, скрипт)
- E2E в Chromium/Firefox/WebKit (18/18), CI preflight
- LDD: 51 claim, 346 тестов, docs и handoff обновлены
This commit is contained in:
2026-10-28 19:29:23 +03:00
parent d45137220c
commit 1e1e9ae0e4
64 changed files with 2124 additions and 372 deletions

View File

@@ -24,6 +24,16 @@ UML- и архитектурные диаграммы (Mermaid) — в ката
- `services/gateway` — Spring Cloud Gateway, маршрутизация и проверка JWT.
- `web` — серверный веб-интерфейс (Thymeleaf + htmx), BFF.
Ключевое в текущей версии:
- роли `ADMIN/TEACHER/STUDENT`, курсы и группы-когорты, повышение и жизненный
цикл студента, профиль студента курса;
- access JWT 15 минут + refresh 7 дней с ротацией/отзывом; web-сессия 7 дней
sliding с абсолютным потолком 30 дней и автоматическим обновлением access;
- аудит с keyset-пагинацией, пакетная выдача лабораторных и групп курса;
- материалы и активы secure-by-default: файл без статьи доступен только
админу (инвентаризация `/admin/legacy-assets`).
## Требования
- JDK 21 (runtime) + Docker (для PostgreSQL 18). Gradle сам скачает toolchain 21 для сборки.
@@ -58,8 +68,10 @@ progress `:8083`, web `:8090`. Интерфейс: `http://localhost:8090`.
./scripts/ldd-runtime.sh # runtime-smoke полного стека + scale load
./scripts/ldd-migration-upgrade.sh # upgrade с master-схемы
./scripts/ldd-mutation.sh # PIT: mutation strength критичных P0-компонентов
./scripts/ldd-browser.sh # Playwright E2E (cd e2e && npm install && npx playwright install chromium)
./scripts/ldd-browser.sh # Playwright E2E: Chromium/Firefox/WebKit
./scripts/ldd-release.sh # полный release gate: test/upgrade/mutation/runtime/E2E
./scripts/ci-preflight.sh --release # проверка окружения runner без установки
./scripts/legacy-assets.sh # инвентаризация бесхозных файлов на стенде (admin)
```
- `ktlint` отвечает за формат, `detekt` — за качество (сложность, вложенность, ошибки).
@@ -77,7 +89,8 @@ progress `:8083`, web `:8090`. Интерфейс: `http://localhost:8090`.
`release-evidence` (`scripts/ldd-release.sh`) обязателен для тегов и
запускается вручную для веток. `check` требует privileged `docker:dind`
для Testcontainers; `smoke`/`release-evidence` — shell-runner с Java 21,
Docker Compose v2, Python 3 и (для release) Node/Chromium.
Docker Compose v2, Python 3 и (для release) Node + Chromium/Firefox/WebKit.
Baseline: **51 claim, 346 тестов, 18/18 browser E2E**.
## Запуск в Docker (для сервера)