chore(tests): подключить тестовый Portal и подтвердить Telegram

This commit is contained in:
Denozordec committed 2026-10-13 15:14:45 +07:00
1 parent efdfc6f224
commit a15917d08b
10 files changed
+211 -14

No files matched your search

+18 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-13: завершены191–194. Runtime backend ux-peak194/frontend ux-peak191 healthy; общий E2E1286/217 files passed1936347ms, skipped0/flaky0/unexpected0; backend24 профиля passed321237ms, frontend59 test files accepted. Monthly SQL/IPv6 UDP-worker-SQL/Ping replay отдельно passed; изменения193/194 проверены профильным PostgreSQL/API/UI. Следующий195 — failure/recovery межпроцессного опроса; внешние Portal/Telegram/client OS/public IPv6/multi-WAN/scale открыты.12.5 открыта.
Актуальное продолжение 2026-10-13: завершены191–195. Backend ux-peak194/frontend ux-peak191; Portal1.3.1 установлен наlocalhost:5175, AUTH_REQUIRED=true, actual login/JWT/RBAC/browser SSO passed. Telegram test принят API и подтверждён пользователем. Найдены196: пароль CHR выдаётся reader JWT и ссылка AppsMenu использует build-time Portal URL — исправить до приёмки приватности/ссылок. Public IPv6 недоступен у пользователя; crash/lock-loss перенесены после интеграций.12.5 открыта.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,23 @@
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–194 и ограничения ниже. Runtime backend ux-peak194/frontend ux-peak191. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–195 и ограничения ниже. Runtime backend ux-peak194/frontend ux-peak191. |
## 12.5.195 — реальный Portal1.3.1 и доставка Telegram (2026-10-13)
По прямому поручению пользователя установлен предоставленный auth-portal1.3.1 на том же Debian-стенде. Исходник прочитан из git.shx.one/denozord/auth-portal, точный tagv1.3.1=2e947b5a31d7bd6c17aff8dba3917fabf6640b91; опубликованный образ закреплён digestsha256:2bdf42400a1b35caa43303b9d01078b054b2a9041eba7019c1fffde71b7e4489. Byte/compiled совпадение образа с исходником не заявлено. Отдельная SQLite/data и bootstrap admin, случайные собственные admin password/HS256 secret, JWT lifetime900s, issuer/portal http://localhost:5175, allowlist только localhost/127.0.0.1:3000. Portal доступен через loopback/SSH, не публичный порт. Исходный .env приложения не копировался и не переписывался: новая закрытая compose.override.yaml задаёт только Portal и AUTH_* overrides. Portal/backend/PG healthy, frontend running. Backend194/frontend191 сохранены, source build не требовался для настройки.
Настоящий login API выдал Portal JWT с appmm и ожидаемым issuer. Приложение работает с AUTH_REQUIRED=true: без JWT401, реальный admin200, читатель mm:servers:read GET200/валидный create POST403, пользователь без appmm GET/POST403, повреждённая подпись401. Настоящий browser без API mocks прошёл MM→Portal login→callback→dashboard→servers; токен записан в storage, fragment удалён, page errors0. Начальные UI-harness ожидания h1«Обзор/Серверы» не соответствовали существующему PageHeader с breadcrumbs; тест исправлен под реальные route/button, UI source не менялся. Два основных own пользователя и оставшиеся fixtures первых попыток удалены через Portal API; bootstrap admin сохранён для доступа к стенду.
Отзыв проверен с явной границей: revoke-all отменяет refresh sessions, disabled user не логинится/Portal me401. Уже выданный access JWT MikrotikManager продолжает принимать200 доexp, поскольку backend проверяет подпись/issuer/exp offline и не проверяет состояние пользователя в Portal. Это не мгновенное глобальное revoke. Реальное истечение900s, passkey/OIDC и физические client OS в этом блоке не приняты.
По предоставленным тестовым bot/chat_id сохранены параметры через штатный API под настоящим Portal JWT. До настройки groups/rules0/outbox0: старых сообщений для рассылки нет. Первая send попытка получила502/unknown: с Debian недоступен TCP443 на DNS endpoint149.154.166.110; getMe и curl подтвердили connection timeout. Проверенный TLS endpoint149.154.167.220 того же api.telegram.org доступен. Для backend добавлен временный lab-only extra_hosts; TLS verification не отключался, произвольный proxy/mirror не использовался. После getMe200 (botId совпал) одна контролируемая send через штатный API принята. Всего2 send requests: initial unknown и verified transport control; не утверждать, что неизвестная отправка доказанно не состоялась. Пользователь подтвердил получение текста «MikroTik Manager — тест оповещений (Telegram).». Токен находится в закрытой конфигурации/БД стенда, в Git/публичные отчёты не включён. Автоматические rule/recovery/outbox/retry delivery ещё отдельная приёмка.
Протоколы: [runtime](ux-ui/acceptance/portal195-runtime-2026-10-13.json), [actual JWT/RBAC/revoke](ux-ui/acceptance/portal-live-api-2026-10-13.json), [real browser SSO](ux-ui/acceptance/portal195-browser-admin-2026-10-13.json), [Telegram + human receipt](ux-ui/acceptance/telegram195-provider-2026-10-13.json). Данные входа bootstrap admin — локальный gitignored tmp/portal195-login.txt и закрытый файл стенда; секреты не публиковать в журнале.
Найден следующий196: настоящее reader JWT получает plaintext password CHR через GETservers. Подтверждён только boolean совпадения, секрет не выведен. Также authPortalBaseUrl для ссылки AppsMenu использует NEXT_PUBLIC_AUTH_PORTAL_URL сборки вместо текущего runtime Portal URL; hook switcher fetch уже использует runtime. Исправить оба API/UI недостатка, проверить reader/writer/admin и реальный Portal на ПК/телефоне, собрать/развернуть и создать локальный commit. Это ограничивает принятие приватности/навигации, но не отменяет доказанный базовый SSO/Telegram transport.
Пользователь подтвердил отсутствие public IPv6 на всех его стендах — внешняя IPv6 outer приёмка сейчас недоступна. Проверку crash/lock-connection loss из прежнего следующего195 перенести после Portal/Telegram.12.5 открыта.
## 12.5.194 — трафик: координация опроса разных backend-процессов (2026-10-13)