Полная регрессия всех сценариев + 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>
92 lines
4.1 KiB
Markdown
92 lines
4.1 KiB
Markdown
# E2E report: roles
|
||
|
||
Запущен: 2026-05-26T07:03:26.970Z
|
||
Длительность: 1.6с
|
||
|
||
**Итог:** 8 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 8)
|
||
|
||
## ✓ Step step01_bootstrap: Орг A + логин админа
|
||
|
||
Длительность: 1201мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Орг A + админ готовы | ✓ |
|
||
|
||
## ✓ Step step02_system_roles_exist: Системные роли (IsSystem=true) созданы — минимум 4
|
||
|
||
Длительность: 15мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Системные роли (ядро Администратор/Кладовщик/Кассир) присутствуют, не удаляемы | ✓ system=[Администратор, Кладовщик, Кассир] |
|
||
|
||
## ✓ Step step03_create_custom_role: Создание кастомной роли с правами → права сохранены
|
||
|
||
Длительность: 94мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Создание кастомной роли → 200/201 | ✓ status=201 |
|
||
| api | Права сохранены (productsView=true, productsEdit=false) | ✓ {"productsView":true,"productsEdit":false,"productsDelete":false,"productGroupsManage":false,"priceTypesManage":false,"unitsManage":false,"suppliesView":true,"suppliesEdit":false,"suppliesPost":false, |
|
||
|
||
## ✓ Step step04_update_permissions: Изменение прав роли применяется (PUT)
|
||
|
||
Длительность: 143мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | PUT прав роли → 200/204 | ✓ status=204 |
|
||
| api | Новое право productsEdit=true применилось | ✓ {"productsView":true,"productsEdit":true,"productsDelete":false,"productGroupsManage":false,"priceTypesManage":false,"unitsManage":false,"suppliesView":true,"suppliesEdit":false,"suppliesPost":false," |
|
||
|
||
## ✓ Step step05_delete_system_role_409: Удаление системной роли → 409
|
||
|
||
Длительность: 41мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Системная роль найдена | ✓ Администратор |
|
||
| api | DELETE системной роли → 409 | ✓ status=409 |
|
||
|
||
## ✓ Step step06_delete_role_in_use_409: Удаление роли, занятой сотрудником → 409
|
||
|
||
Длительность: 51мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Сотрудник с кастомной ролью создан | ✓ status=200 |
|
||
| api | DELETE занятой роли → 409 | ✓ status=409 |
|
||
|
||
## ✓ Step step07_delete_unused_role_ok: Удаление неиспользуемой роли → 204/200
|
||
|
||
Длительность: 42мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Неиспользуемая роль создана | ✓ |
|
||
| api | DELETE неиспользуемой роли → 200/204 | ✓ status=204 |
|
||
|
||
## ✓ Step step08_permission_authz_gap: Permission-based authz не enforced на API — gap
|
||
|
||
Длительность: 1мс
|
||
|
||
| Тип | Проверка | Результат |
|
||
|---|---|---|
|
||
| api | Permission-based authz — задокументированный gap (см. Logic gaps) | ✓ |
|
||
|
||
## Summary
|
||
|
||
- Passed: 8
|
||
- Failed: 0
|
||
- Warnings: 0
|
||
- Skipped: 0
|
||
|
||
## Critical bugs
|
||
|
||
Нет.
|
||
|
||
## Logic gaps
|
||
|
||
- ТЗ 2.7.2 ожидает 4-6 системных ролей, реально 3 (Phase4b_RolesSimplify): Администратор, Кладовщик, Кассир. Это намеренное упрощение, не баг — ТЗ устарело.
|
||
- ТЗ 2.7.2: permission-based авторизация не enforced — эндпоинты используют только [Authorize(Roles=...)], флаги RolePermissions носят справочный характер для UI. Кастомная роль с ограниченными правами НЕ даёт 403 на запрещённых операциях (помечено «после P0-5»).
|