chore(test): подтвердить права очереди на настоящих JWT

This commit is contained in:
Denozordec committed 2026-10-08 14:22:03 +07:00
1 parent 22a4e2f36e
commit ca8eafa1ff
6 files changed
+215 -4

No files matched your search

+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-08: 12.5.41 подтвердил очередь в браузере через реальные HTTP/PG: unknown/processing, подтверждение риска, сохранение снимка при HTTP500, восстановление, reload и 320px. Ошибок JavaScript, retry POST и внешних отправок нет. Временные контейнеры, Docker-сеть, SSH-туннель и fixture удалены. Следующий блок 12.5.42 — реальные JWT/RBAC для чтения и повтора очереди. Runtime backend8782054/frontendf194e72 прежний; 12.5 открыт.
Актуальное продолжение 2026-10-08: 12.5.42 подтвердил production JWT/RBAC очереди на PostgreSQL: 401 для недействительных токенов, 403 без нужных прав; отказанные POST не вызывают retry и не меняют БД. Write/admin получают pending/version1, старый повтор —409. Fixture удалены, реальных сообщений нет. Следующий блок 12.5.43 — успешный UI retry и сохранение checkpoint при потере подтверждения HTTP. Runtime backend8782054/frontendf194e72 прежний; 12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -34,6 +34,16 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в описанных границах:12.3.83,main1186/1186,context221/221. Этап остаётся в работе: стенд12.5.1–3 развёрнут,bootstrap/smoke проверены;остальные сценарии12.5 не выполнены. |
## 12.5.42 — настоящие JWT/RBAC очереди на PostgreSQL (2026-10-08)
[Отчёт JWT/RBAC](ux-ui/acceptance/outbox-rbac-2026-10-08.json): production buildApp/handlers/auth из backend8782054, AUTH_REQUIRED=true только внутри изолированного процесса, отдельная БД mmapp_acceptance_20261007. JWT HS256 подписаны серверным ключом в памяти; подпись, issuer и exp проверяет штатный middleware. Fastify inject проходит настоящий путь приложения и SQL, но не является браузерным запросом или удалённым сокетом.
GET outbox: anonymous, неверные issuer/signature, expired и malformed дают401; отсутствие разрешений, settings:admin без alerts и отсутствие доступа к приложению дают403; alerts:read/write/admin дают200 и реальные counts. Все GET сохраняют строки. Девять отказанных POST дают401/403, не меняют snapshot БД и не вызывают production retry boundary. Неподтверждённый риск даёт400 до boundary; неверная ожидаемая версия даёт409 без изменения. Разрешённые write и admin получают200, две fixture-строки становятся pending/retry_count=0/resolution_version=1. Дублирующий POST со старой версией даёт409 и сохраняет SQL snapshot. Ответы проверены на отсутствие JWT и ключа.
Первый запуск harness остановился до создания fixture: jose отсутствует в production-образе как тестовая зависимость. Для генерации стандартной HS256 подписи использован встроенный node:crypto, production middleware и настройки не менялись. Dispatcher не запускался, scheduler admission закрыт, сообщений не отправлено. App/pool/container завершены; fixture удалены, отдельный SQL подтвердил ноль тестовых строк; остались только три основные Compose-службы.
Границы: реальный Portal login/issuer endpoint не вызывался, браузерный RBAC и доставка не заявлены этим тестом. Q-7 подтверждён для API отказа до действия в этих границах. Следующий блок 12.5.43 — успешный UI retry и сохранение checkpoint при потере подтверждения HTTP в отдельной БД, с запретом внешней отправки. Локальный коммит без push.
## 12.5.41 — браузерная очередь через реальные HTTP и PostgreSQL (2026-10-08)
[Отчёт браузера](ux-ui/acceptance/browser-outbox-2026-10-08.json): production backend8782054/frontendf194e72, отдельная БД mmapp_acceptance_20261007. Пять синтетических SQL-состояний pending/processing/unknown/sent/failed, по одной строке; настоящий GET overview возвращает согласованные counts/items. HTTP-ответы в браузере не подменялись. Dispatcher не запускался, scheduler admission закрыт; внешний Telegram fetch дополнительно запрещён.