feat: закрыть остаточные P1/P2 по профилю, когорте и ведомости
- профиль приведён к docs/09: variant/level, updatedBy/name, лимит попыток - V14: NOT NULL и полная уникальность когорты, preflight legacy-групп - возврат группы из архива и история членства на странице группы - пагинация групп и плоского списка материалов - пакетные сдачи ведомости одним запросом - XLSX-preflight импорта и audit-тесты ростера - LDD: 66 claims, 398 тестов, release PASS
This commit is contained in:
44
docs/evidence/baseline-2026-10-29.md
Normal file
44
docs/evidence/baseline-2026-10-29.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# LDD baseline: 2026-10-29
|
||||
|
||||
Актуальный прогон после закрытия P1/P2-остатка: контракт профиля, финальные
|
||||
ограничения когорты, возврат группы из архива, пагинация, пакетные сдачи,
|
||||
row-level XLSX-импорт и audit-события ростера.
|
||||
|
||||
## Результат
|
||||
|
||||
| Проверка | Результат |
|
||||
|---|---|
|
||||
| JUnit/интеграционные тесты | **398**, 0 failures/errors/skipped |
|
||||
| ktlint + detekt | зелёные |
|
||||
| Claims | **66** (27 P0 / 39 P1), **66/66 proven**, P0 gaps = 0 |
|
||||
| Migration master→branch | PASS; identity `V4–V14`, повторные V13/V14 |
|
||||
| Mutation `CourseAccessService` | 75% test strength (порог 70%) |
|
||||
| Mutation `PromotionPlanner` | 69% test strength (порог 60%) |
|
||||
| Browser E2E | 18/18 (Chromium/Firefox/WebKit) |
|
||||
| Load smoke | 125 запросов, 0 ошибок, p95 0.942 с (порог < 1 с) |
|
||||
|
||||
## Что добавлено в этой итерации
|
||||
|
||||
- профиль соответствует `docs/09`: `variant.id`, `level.id/code`,
|
||||
`grade.updatedBy`, `author.name`; `submissionLimit`/`submissionsTotal` и
|
||||
SQL-тест «без N+1» на 10 лабораторных;
|
||||
- `V14__cohort_constraints.sql`: `NOT NULL` для пяти полей когорты, полный
|
||||
unique index и строгие check-ограничения; legacy-строки останавливают
|
||||
миграцию с явной ошибкой;
|
||||
- возврат группы из архива (`POST /api/v1/groups/{id}/restore`) с аудитом;
|
||||
- пагинация `/admin/groups` и плоского списка материалов;
|
||||
- `latestPerStudentByLab` — один запрос сдач на все лабораторные ведомости;
|
||||
- XLSX-тесты preflight-ошибок импорта (занятый логин, неактивная группа);
|
||||
- аудит `GROUP_CREATE/STUDENT_CREATE/GROUP_ENROLL/GROUP_IMPORT/GROUP_ARCHIVE/GROUP_RESTORE`;
|
||||
- история членства на странице группы (последние 200 событий).
|
||||
|
||||
## Остаточные ограничения
|
||||
|
||||
- гонка импорта с параллельной вставкой логина всё ещё даёт общий 409;
|
||||
- screenshot-diff/визуальной регрессии нет;
|
||||
- mutation testing не 100%, нагрузочный smoke не является SLA;
|
||||
- restore на staging, первый реальный Woodpecker pipeline, инвентаризация
|
||||
legacy-активов и daily backup timer требуют доступа к стенду/серверу.
|
||||
|
||||
Артефакты прогона: `build/evidence/{runtime,migration,mutation,browser,smoke}.json`,
|
||||
отчёт gate — `build/reports/evidence/index.md`.
|
||||
Reference in New Issue
Block a user