docs: закрытие продуктовых рисков и новый LDD baseline

This commit is contained in:
2026-10-28 13:26:43 +03:00
parent 71fa3284a0
commit 9dcba8ce0c
16 changed files with 584 additions and 212 deletions

View File

@@ -57,6 +57,22 @@ Compose передаёт одно и то же значение identity, academ
Значение по умолчанию `dev-internal-token` для production не используйте;
`.env.prod` не коммитьте.
Сроки аутентификации и сессии (можно не задавать — действуют значения ниже):
```dotenv
LMS_ACCESS_TOKEN_TTL=15m # access JWT identity, короткий
LMS_REFRESH_TOKEN_TTL=7d # refresh-токен, ротация и отзыв
LMS_SESSION_TIMEOUT=7d # web-сессия LMS_SESSION, sliding
```
`LMS_ACCESS_TOKEN_TTL` и `LMS_REFRESH_TOKEN_TTL` читает identity,
`LMS_SESSION_TIMEOUT` — web. `docker-compose.prod.yml` прокидывает эти
переменные в environment соответствующих сервисов; при переопределении
используются значения из `.env.prod`. Access
обновляется автоматически за 2 минуты до истечения; прямой API-клиент должен
сам вызывать `POST /api/v1/auth/refresh`. Уменьшайте значения только осознанно:
слишком короткая web-сессия заставит пользователей чаще входить заново.
## 4. Собрать и запустить
```bash
@@ -109,16 +125,24 @@ git pull
`deploy.sh up` **обязательно** делает backup перед обновлением. Если backup
завершился ошибкой, деплой прерывается. Миграции БД (Flyway) применяются
автоматически при старте сервисов: identity `V4–V10` (`V10` создаёт
`identity.audit_events`), academic `V6–V12`, progress `V13`.
автоматически при старте сервисов: identity `V4–V11` (`V10` создаёт
`identity.audit_events`, `V11` — `identity.refresh_tokens`), academic `V6–V12`,
progress `V13`.
После обновления проверьте, что админ открывает `/admin/audit` и видит события
(например, после входа в профиль студента — `PROFILE_VIEW`); преподаватель и
студент на эту страницу не попадают.
студент на эту страницу не попадают. Журнал листается через `page`/`limit`
(«Показать ещё»). Для инвентаризации старых файлов админ может вызвать
`GET /api/v1/content/legacy-assets`: файлы без привязки к статье больше не
публичны (`404` для обычных пользователей), их нужно привязать или удалить.
CI (`.gitlab-ci.yml`) на каждом push/MR выполняет
`./gradlew --no-daemon test ktlintCheck detekt`; для Testcontainers runner
должен разрешать privileged `docker:dind`.
`./gradlew --no-daemon test ktlintCheck detekt evidenceCheck` и job `smoke`
(`./scripts/ldd-smoke.sh`: полный стек, health, вход админа, один курс).
Полный job `release-evidence` (`./scripts/ldd-release.sh`) обязателен для тегов
и запускается вручную для веток. `check` использует privileged `docker:dind`
для Testcontainers; `smoke`/`release-evidence` выполняются на shell-runner
с Java 21, Docker Compose v2, Python 3, Node и Chromium Playwright.
## 8. Резервное копирование