fix(import): построчные ошибки до записи

- preflight занятого логина и неактивной целевой группы
- applied=false с номером строки, без частичных студентов
- LDD-IMPORT-003; baseline 58 claims / 368 тестов
This commit is contained in:
2026-10-29 19:20:16 +03:00
parent 238c689175
commit 1570196cc7
11 changed files with 142 additions and 30 deletions

View File

@@ -26,7 +26,7 @@
| Backup/deploy | partial | `deploy.sh` теперь проверяет последний backup; restore на staging не подтверждён; первый деплой без backup — документированное исключение |
| CI | partial | Конфигурация Woodpecker и локальные прогоны есть; первый реальный pipeline на VM не подтверждён |
| Производительность | partial | Keyset-аудит, пакетные лабы и группы курса есть; списки материалов/групп без пагинации; сдачи в ведомости по выбранной лабе |
| LDD | implemented | 57 claims (27 P0 / 30 P1), 57/57 proven после release; `check` доказывает P0/unit, runtime P1 — release |
| LDD | implemented | 58 claims (27 P0 / 31 P1), 58/58 proven после release; `check` доказывает P0/unit, runtime P1 — release |
| Legacy-активы | partial | Код и UI готовы; инвентаризация на production/staging не выполнена |
| «Контингент» | out of scope | Исключён решением 2026-10-28 |
@@ -83,8 +83,9 @@
### P1
- **Импорт: ошибки БД.** Ошибки lookup/конфликта всё ещё могут выйти одним
flash-сообщением без номера строки; нужен row-level отчёт и для них.
- **Импорт: ошибки БД.** Занятый логин и неактивная группа теперь дают
row-level `applied=false`; неожиданные DB-ошибки вне preflight всё ещё
откатывают транзакцию без построчного отчёта.
- **Догон повышения.** `ensureScheduledDryRun` до 31 августа возвращает `null`
и не создаёт план за предыдущий год; после долгого простоя в январе
пропущенный август не догоняется.
@@ -126,9 +127,9 @@
## 5. LDD
- Реестр: `docs/evidence/claims.json`, **57 claims** (27 P0 / 30 P1).
- Реестр: `docs/evidence/claims.json`, **58 claims** (27 P0 / 31 P1).
- `./gradlew test ktlintCheck detekt evidenceCheck` — зелёный; P0 gaps = 0.
- `./scripts/ldd-release.sh` — PASS: **57/57 claims**, 366 тестов, mutation
- `./scripts/ldd-release.sh` — PASS: **58/58 claims**, 368 тестов, mutation
`CourseAccessService` 75%, `PromotionPlanner` 69%, browser E2E 18/18,
runtime/load p95 < 1 с.