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:
@@ -52,14 +52,14 @@
|
||||
# 6. Mutation testing критичных P0-компонентов
|
||||
./scripts/ldd-mutation.sh
|
||||
|
||||
# 7. Браузерный E2E (Playwright + Chromium)
|
||||
# 7. Браузерный E2E (Playwright: Chromium/Firefox/WebKit)
|
||||
./scripts/ldd-browser.sh
|
||||
|
||||
# 8. Полный release gate
|
||||
./scripts/ldd-release.sh
|
||||
```
|
||||
|
||||
Для E2E один раз установите зависимости и браузер: `cd e2e && npm install && npx playwright install chromium`.
|
||||
Для E2E один раз установите зависимости и браузеры: `cd e2e && npm install && npx playwright install chromium firefox webkit`.
|
||||
Mutation harness использует JUnit 4: JUnit5-плагин PIT несовместим с JUnit
|
||||
Platform 6 из Spring Boot 4.
|
||||
|
||||
@@ -87,15 +87,17 @@ Platform 6 из Spring Boot 4.
|
||||
LDD-циклы выполнены 2026-10-27/28; последний — после закрытия продуктовых
|
||||
рисков:
|
||||
|
||||
- **319 автоматических тестов**, 0 failures/errors;
|
||||
- **46 claims**: 25 P0 + 21 P1, **46/46 proven, P0 gaps = 0**. P0 — доступы,
|
||||
- **346 автоматических тестов**, 0 failures/errors;
|
||||
- **51 claims**: 25 P0 + 26 P1, **51/51 proven, P0 gaps = 0**. P0 — доступы,
|
||||
повышение, жизненный цикл, профиль/скачивание, материалы/активы
|
||||
(включая secure-by-default legacy-файлы), миграция V13, аудит, refresh-токены
|
||||
и их отзыв; P1 — группы, авторство, UI, контракты, импорт, копирование лаб,
|
||||
пагинация аудита, bulk-группы курса, runtime, mutation и browser E2E;
|
||||
(включая secure-by-default legacy-файлы), миграции V11–V13, аудит,
|
||||
refresh-токены и их отзыв; P1 — группы, авторство, UI, контракты, импорт,
|
||||
копирование лаб, keyset-пагинация, пакетные детали лабораторных,
|
||||
абсолютный потолок сессии, runtime, mutation и browser E2E;
|
||||
- mutation testing: `CourseAccessService` 75% test strength,
|
||||
`PromotionPlanner` 69%;
|
||||
- Playwright: 4 сценария (admin, teacher, student/anonymous, сдача+mobile),
|
||||
- Playwright: 6 сценариев (admin, teacher, student/anonymous, сдача+mobile,
|
||||
cursor-аудит, инвентаризация активов) × Chromium/Firefox/WebKit = **18/18**,
|
||||
все зелёные;
|
||||
- масштабный load: 100 групп / 1000 студентов, 125 параллельных чтений,
|
||||
0 ошибок, p95 < 1 с (порог p95 < 2 с);
|
||||
@@ -107,7 +109,9 @@ LDD-циклы выполнены 2026-10-27/28; последний — посл
|
||||
Kotlin-модуль, поэтому DTO с default-значениями требовали все поля JSON
|
||||
(например, создание студента без `firstName`/`basis` давало 400).
|
||||
|
||||
Остаточные ограничения: offset-пагинация аудита, N+1 в отдельных лабораторных
|
||||
списках/ведомости, отсутствие абсолютного лимита web-сессии. Legacy-активы,
|
||||
срок жизни JWT и «ведущие нули» больше не являются открытыми рисками.
|
||||
Остаточные ограничения: ручная инвентаризация legacy-активов на production,
|
||||
сдачи по выбранной лабораторной в ведомости, непроверенный первый CI-прогон на
|
||||
реальных runner'ах и отсутствие визуальной регрессии. Legacy-активы, срок
|
||||
access-токена, пагинация, N+1 деталей лабораторных, абсолютный лимит сессии и
|
||||
«ведущие нули» больше не являются открытыми рисками.
|
||||
Результаты — в `baseline-2026-10-27.md`.
|
||||
|
||||
Reference in New Issue
Block a user