Полная регрессия всех сценариев + 6 новых областей этой сессии (employees, roles, superadmin-console, platform-smtp, auth-password, security-edge). За день исправлено 4 бага: уволенный сотрудник логинится (P0), конкурентное проведение приёмки ломает инвариант (critical), refresh не гасится после ротации (high), change-owner принимал короткий reason (medium). Нереализованный по ТЗ функционал (отчёты/склад-документы/POS/permission-authz/login-ratelimit) зафиксирован как Logic gaps. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
86 lines
3.9 KiB
Markdown
86 lines
3.9 KiB
Markdown
# E2E report: superadmin-console
|
||
|
||
Запущен: 2026-05-26T07:03:32.749Z
|
||
Длительность: 4.0с
|
||
|
||
**Итог:** 6 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 6)
|
||
|
||
## ✓ Step step01_create_org_audited: Создание орг1 → 200 + запись CreateOrg в audit-log
|
||
|
||
Длительность: 1064мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Создание орг1 → 200 | ✓ status=200 |
|
||
| api | audit-log содержит CreateOrg | ✓ actions=CreateOrg |
|
||
|
||
## ✓ Step step02_archive: Архив: неверное имя → 400, верное → 204, IsArchived=true + ArchiveOrg
|
||
|
||
Длительность: 268мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Архив с неверным именем → 400 | ✓ status=400 |
|
||
| api | Архив с верным именем → 204 | ✓ status=204 |
|
||
| db | IsArchived=true, ArchivedAt задан | ✓ IsArchived=t |
|
||
| api | audit-log содержит ArchiveOrg | ✓ |
|
||
|
||
## ✓ Step step03_restore: Восстановление → 204, IsArchived=false + RestoreOrg
|
||
|
||
Длительность: 260мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Восстановление → 204 | ✓ status=204 |
|
||
| db | IsArchived=false | ✓ IsArchived=f |
|
||
| api | audit-log содержит RestoreOrg | ✓ |
|
||
|
||
## ✓ Step step04_change_owner: Смена владельца: без reason → 400, reason<10 → 400, валидно → 204 + ChangeOwner
|
||
|
||
Длительность: 1064мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Второй пользователь орг1 создан (кандидат во владельцы) | ✓ |
|
||
| api | change-owner без reason → 400 | ✓ status=400 |
|
||
| api | change-owner reason<10 → 400 | ✓ status=400 |
|
||
| api | change-owner валидный reason → 204 | ✓ status=204 |
|
||
| db | AccountOwnerUserId обновлён на нового владельца | ✓ owner=72dc5c01-7e75-4fac-bb50-ae39bd958a6a |
|
||
| api | audit-log содержит ChangeOwner | ✓ actions=ChangeOwner,RestoreOrg,ArchiveOrg,CreateOrg |
|
||
|
||
## ✓ Step step05_hard_delete: Hard-delete: не-архив → 409, до retention → 409, retention=0 + верное имя → 204, юзеры деактивированы
|
||
|
||
Длительность: 1269мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Орг2 создана | ✓ |
|
||
| api | Удаление неархивной орг → 409 | ✓ status=409 |
|
||
| api | Удаление до retention → 409 | ✓ status=409 {"error":"Доступно через 30 дней архива."} |
|
||
| api | Удаление с неверным именем → 400 | ✓ status=400 |
|
||
| api | Удаление архивной (retention=0, верное имя) → 204 | ✓ status=204 |
|
||
| db | Организация физически удалена | ✓ rows=0 |
|
||
| db | Юзеры отвязаны/деактивированы (нет привязки к удалённой орг) | ✓ before=1 stillLinked=0 |
|
||
|
||
## ✓ Step step06_audit_log_filters: audit-log: фильтр по org и actionType, ChangeOwner хранит reason
|
||
|
||
Длительность: 55мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | audit орг1 содержит CreateOrg/ArchiveOrg/RestoreOrg/ChangeOwner | ✓ actions=ChangeOwner,RestoreOrg,ArchiveOrg,CreateOrg |
|
||
| api | Фильтр actionType=DeleteOrg для орг2 возвращает запись | ✓ count=1 |
|
||
| api | Фильтр actionType отсекает прочее (все строки DeleteOrg) | ✓ types=DeleteOrg |
|
||
| api | ChangeOwner в журнале хранит reason | ✓ reason=Передача владения по тикету поддержки #4242 |
|
||
|
||
## Summary
|
||
|
||
- Passed: 6
|
||
- Failed: 0
|
||
- Warnings: 0
|
||
- Skipped: 0
|
||
|
||
## Critical bugs
|
||
|
||
Нет.
|