diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 5c0093a1..72451815 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -223,3 +223,13 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove Fixture outbox/history удалены, исходные настройки Telegram восстановлены из памяти с точным updated_at, fetch восстановлен, pool и контейнер завершены. Основной стенд не затрагивался. Это приёмка реального SQL и production-кода с перехваченным отказом; реальный Telegram отказ, нагрузка и многопроцессная работа не заявлены. Следующий блок 12.5.41 — браузерная проверка unknown/processing через реальные HTTP и PostgreSQL, без отправки сообщений. Документы синхронизированы; локальный коммит без 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 дополнительно запрещён. + +UI показывает понятные подписи и предупреждение об отсутствии автоматического повтора. Для unknown кнопка доступна, для processing отсутствует. Подтверждение риска требуется до постановки в очередь; отмена и Escape не отправляют POST и возвращают фокус. Управляемое исключение backend overview дало настоящий HTTP500: последний снимок сохранился, после восстановления ошибка исчезла. Reload сохранил SQL-состояния. Панель и диалог помещаются в 320px; итоговые снимки сделаны после завершения обновления и просмотрены: [ПК](ux-ui/screens/outbox-real-1280-2026-10-08.png), [телефон](ux-ui/screens/outbox-real-320-2026-10-08.png), [подтверждение](ux-ui/screens/outbox-confirm-real-320-2026-10-08.png). Queue HTTP statuses: 200/500/200/200; JS errors=0, retry POST=0, external sender calls=0. + +Первый запуск остановлен проверкой маркера БД: Next rewrites закреплены во время сборки, runtime BACKEND_INTERNAL_URL не изменяет их. Для корректной изоляции frontend подключён только к отдельной Docker-сети с alias backend, разрешающим исключительно тестовый backend. Основной backend/БД не менялись. Временные контейнеры и сеть удалены; backend завершился с exitCode=0, журнал очистки подтвердил senderCalls=0/retryPosts=0, независимый SQL подтвердил ноль fixture-строк. Дополнительный SSH-туннель3018 закрыт; основной3000 сохранён. + +Границы: AUTH_REQUIRED=false на изолированном loopback стенде; реальные Portal SSO, доставка Telegram, физический отказ PG и успешный UI retry не проверены этим блоком. Следующий 12.5.42 — настоящие JWT/RBAC чтения и повтора очереди на PostgreSQL. Локальный коммит без push. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 2c54fe8d..dfd2b830 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-08: 12.5.40 проверил явный отказ отправителя: pending/retry_count=1 с задержкой 15 секунд, ранний dispatcher не отправляет; после второй отклонённой попытки failed/retry_count=2 и одна история sent_ok=false. Токен скрыт в ошибках. Реальных сообщений нет. Следующий блок 12.5.41 — браузерная проверка удержанных состояний через реальные HTTP/PG. Runtime backend8782054/frontendf194e72 прежний; 12.5 открыт. +Актуальное продолжение 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 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-08 -Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. ROS-8/9 API/SQL/native приняты в описанных границах. Browser-смена пары/длительности и удаление во время native-теста приняты в12.5.24. Реальный отказ bandwidth-аутентификации принят в12.5.25. 12.5.26 обнаружил и локально исправил30s timeout Next proxy. Исправленный frontendaa7dbdf развёрнут и проверен в12.5.27; backend8782054 прежний. ROS-3 reverse2→1/native-afterping принят в12.5.28; forward timeout открыт. Форма frontendf194e72 проверена без моков и развёрнута в12.5.29. Read-only диагностика12.5.30 не установила причину. 12.5.31 выявил текущий отказ авторизацииCHR2 вCLI/REST/SSH. В12.5.32 пользователь восстановил доступCHR2; dashboard/native1→2 passed, блокировка снята. TCP receive/both подтверждены после восстановлениядоступа в12.5.33; UDP transmit3s/API/history/UI подтверждены в12.5.34; Q-6productionenqueue/PG race принят в12.5.35; Q-4 realHTTP/PG race принят в12.5.36; Q-1productionclaim/PG/interceptedsender принят в12.5.37; 12.5.38 подтвердил SQL settlement rollback и сохранение sent после ошибки подтверждения COMMIT; 12.5.39 подтвердил unknown/processing без автоматического повтора при неопределённом ответе; 12.5.40 подтвердил задержку повтора и failed после исчерпания попыток при явном отказе; следующий 12.5.41 — браузерная проверка удержанных состояний через реальные HTTP/PG. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения. +Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. ROS-8/9 API/SQL/native приняты в описанных границах. Browser-смена пары/длительности и удаление во время native-теста приняты в12.5.24. Реальный отказ bandwidth-аутентификации принят в12.5.25. 12.5.26 обнаружил и локально исправил30s timeout Next proxy. Исправленный frontendaa7dbdf развёрнут и проверен в12.5.27; backend8782054 прежний. ROS-3 reverse2→1/native-afterping принят в12.5.28; forward timeout открыт. Форма frontendf194e72 проверена без моков и развёрнута в12.5.29. Read-only диагностика12.5.30 не установила причину. 12.5.31 выявил текущий отказ авторизацииCHR2 вCLI/REST/SSH. В12.5.32 пользователь восстановил доступCHR2; dashboard/native1→2 passed, блокировка снята. TCP receive/both подтверждены после восстановлениядоступа в12.5.33; UDP transmit3s/API/history/UI подтверждены в12.5.34; Q-6productionenqueue/PG race принят в12.5.35; Q-4 realHTTP/PG race принят в12.5.36; Q-1productionclaim/PG/interceptedsender принят в12.5.37; 12.5.38 подтвердил SQL settlement rollback и сохранение sent после ошибки подтверждения COMMIT; 12.5.39 подтвердил unknown/processing без автоматического повтора при неопределённом ответе; 12.5.40 подтвердил задержку повтора и failed после исчерпания попыток при явном отказе; 12.5.41 подтвердил браузерные состояния очереди на HTTP/PG; следующий 12.5.42 — реальные JWT/RBAC очереди. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения. Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index e5856e2b..5b56fda7 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-08: 12.5.40 проверил явный отказ отправителя: pending/retry_count=1 с задержкой 15 секунд, ранний dispatcher не отправляет; после второй отклонённой попытки failed/retry_count=2 и одна история sent_ok=false. Токен скрыт в ошибках. Реальных сообщений нет. Следующий блок 12.5.41 — браузерная проверка удержанных состояний через реальные HTTP/PG. Runtime backend8782054/frontendf194e72 прежний; 12.5 открыт. +Актуальное продолжение 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 открыт. Общий план: [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.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 дополнительно запрещён. + +UI показывает понятные подписи и предупреждение об отсутствии автоматического повтора. Для unknown кнопка доступна, для processing отсутствует. Подтверждение риска требуется до постановки в очередь; отмена и Escape не отправляют POST и возвращают фокус. Управляемое исключение backend overview дало настоящий HTTP500: последний снимок сохранился, после восстановления ошибка исчезла. Reload сохранил SQL-состояния. Панель и диалог помещаются в 320px; итоговые снимки сделаны после завершения обновления и просмотрены: [ПК](ux-ui/screens/outbox-real-1280-2026-10-08.png), [телефон](ux-ui/screens/outbox-real-320-2026-10-08.png), [подтверждение](ux-ui/screens/outbox-confirm-real-320-2026-10-08.png). Queue HTTP statuses: 200/500/200/200; JS errors=0, retry POST=0, external sender calls=0. + +Первый запуск остановлен проверкой маркера БД: Next rewrites закреплены во время сборки, runtime BACKEND_INTERNAL_URL не изменяет их. Для корректной изоляции frontend подключён только к отдельной Docker-сети с alias backend, разрешающим исключительно тестовый backend. Основной backend/БД не менялись. Временные контейнеры и сеть удалены; backend завершился с exitCode=0, журнал очистки подтвердил senderCalls=0/retryPosts=0, независимый SQL подтвердил ноль fixture-строк. Дополнительный SSH-туннель3018 закрыт; основной3000 сохранён. + +Границы: AUTH_REQUIRED=false на изолированном loopback стенде; реальные Portal SSO, доставка Telegram, физический отказ PG и успешный UI retry не проверены этим блоком. Следующий 12.5.42 — настоящие JWT/RBAC чтения и повтора очереди на PostgreSQL. Локальный коммит без push. + ## 12.5.40 — подтверждённый отказ и исчерпание попыток отправки (2026-10-08) [Отчёт PostgreSQL](ux-ui/acceptance/outbox-rejection-2026-10-08.json): production dispatchPendingOutbox из backend8782054, отдельная БД mmapp_acceptance_20261007. Внешний fetch возвращал явный Telegram отказ ok=false/error_code=400; реального запроса и сообщений не было. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 9157af85..66cff420 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-08: 12.5.40 проверил явный отказ отправителя: pending/retry_count=1 с задержкой 15 секунд, ранний dispatcher не отправляет; после второй отклонённой попытки failed/retry_count=2 и одна история sent_ok=false. Токен скрыт в ошибках. Реальных сообщений нет. Следующий блок 12.5.41 — браузерная проверка удержанных состояний через реальные HTTP/PG. Runtime backend8782054/frontendf194e72 прежний; 12.5 открыт. +Актуальное продолжение 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 открыт. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1388,3 +1388,13 @@ Fixtureoutbox/historyудалены, countoutbox восстановленкbasel Fixture outbox/history удалены, исходные настройки Telegram восстановлены из памяти с точным updated_at, fetch восстановлен, pool и контейнер завершены. Основной стенд не затрагивался. Это приёмка реального SQL и production-кода с перехваченным отказом; реальный Telegram отказ, нагрузка и многопроцессная работа не заявлены. Следующий блок 12.5.41 — браузерная проверка unknown/processing через реальные HTTP и PostgreSQL, без отправки сообщений. Документы синхронизированы; локальный коммит без 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 дополнительно запрещён. + +UI показывает понятные подписи и предупреждение об отсутствии автоматического повтора. Для unknown кнопка доступна, для processing отсутствует. Подтверждение риска требуется до постановки в очередь; отмена и Escape не отправляют POST и возвращают фокус. Управляемое исключение backend overview дало настоящий HTTP500: последний снимок сохранился, после восстановления ошибка исчезла. Reload сохранил SQL-состояния. Панель и диалог помещаются в 320px; итоговые снимки сделаны после завершения обновления и просмотрены: [ПК](ux-ui/screens/outbox-real-1280-2026-10-08.png), [телефон](ux-ui/screens/outbox-real-320-2026-10-08.png), [подтверждение](ux-ui/screens/outbox-confirm-real-320-2026-10-08.png). Queue HTTP statuses: 200/500/200/200; JS errors=0, retry POST=0, external sender calls=0. + +Первый запуск остановлен проверкой маркера БД: Next rewrites закреплены во время сборки, runtime BACKEND_INTERNAL_URL не изменяет их. Для корректной изоляции frontend подключён только к отдельной Docker-сети с alias backend, разрешающим исключительно тестовый backend. Основной backend/БД не менялись. Временные контейнеры и сеть удалены; backend завершился с exitCode=0, журнал очистки подтвердил senderCalls=0/retryPosts=0, независимый SQL подтвердил ноль fixture-строк. Дополнительный SSH-туннель3018 закрыт; основной3000 сохранён. + +Границы: AUTH_REQUIRED=false на изолированном loopback стенде; реальные Portal SSO, доставка Telegram, физический отказ PG и успешный UI retry не проверены этим блоком. Следующий 12.5.42 — настоящие JWT/RBAC чтения и повтора очереди на PostgreSQL. Локальный коммит без push. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 09618fba..85f2bfe7 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -231,3 +231,13 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222 Fixture outbox/history удалены, исходные настройки Telegram восстановлены из памяти с точным updated_at, fetch восстановлен, pool и контейнер завершены. Основной стенд не затрагивался. Это приёмка реального SQL и production-кода с перехваченным отказом; реальный Telegram отказ, нагрузка и многопроцессная работа не заявлены. Следующий блок 12.5.41 — браузерная проверка unknown/processing через реальные HTTP и PostgreSQL, без отправки сообщений. Документы синхронизированы; локальный коммит без 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 дополнительно запрещён. + +UI показывает понятные подписи и предупреждение об отсутствии автоматического повтора. Для unknown кнопка доступна, для processing отсутствует. Подтверждение риска требуется до постановки в очередь; отмена и Escape не отправляют POST и возвращают фокус. Управляемое исключение backend overview дало настоящий HTTP500: последний снимок сохранился, после восстановления ошибка исчезла. Reload сохранил SQL-состояния. Панель и диалог помещаются в 320px; итоговые снимки сделаны после завершения обновления и просмотрены: [ПК](ux-ui/screens/outbox-real-1280-2026-10-08.png), [телефон](ux-ui/screens/outbox-real-320-2026-10-08.png), [подтверждение](ux-ui/screens/outbox-confirm-real-320-2026-10-08.png). Queue HTTP statuses: 200/500/200/200; JS errors=0, retry POST=0, external sender calls=0. + +Первый запуск остановлен проверкой маркера БД: Next rewrites закреплены во время сборки, runtime BACKEND_INTERNAL_URL не изменяет их. Для корректной изоляции frontend подключён только к отдельной Docker-сети с alias backend, разрешающим исключительно тестовый backend. Основной backend/БД не менялись. Временные контейнеры и сеть удалены; backend завершился с exitCode=0, журнал очистки подтвердил senderCalls=0/retryPosts=0, независимый SQL подтвердил ноль fixture-строк. Дополнительный SSH-туннель3018 закрыт; основной3000 сохранён. + +Границы: AUTH_REQUIRED=false на изолированном loopback стенде; реальные Portal SSO, доставка Telegram, физический отказ PG и успешный UI retry не проверены этим блоком. Следующий 12.5.42 — настоящие JWT/RBAC чтения и повтора очереди на PostgreSQL. Локальный коммит без push. diff --git a/docs/ux-ui/acceptance/browser-outbox-2026-10-08.json b/docs/ux-ui/acceptance/browser-outbox-2026-10-08.json new file mode 100644 index 00000000..6be8156a --- /dev/null +++ b/docs/ux-ui/acceptance/browser-outbox-2026-10-08.json @@ -0,0 +1,61 @@ +{ + "date": "2026-10-08", + "backendSource": "8782054", + "frontendSource": "f194e72", + "database": "mmapp_acceptance_20261007", + "browserHttpMocks": false, + "sqlFixture": true, + "overview": { + "counts": { + "total": 5, + "pending": 1, + "processing": 1, + "unknown": 1, + "sent": 1, + "failed": 1, + "unrecognized": 0 + }, + "items": [ + { + "id": "acceptance-browser-outbox-1791443807517-unknown", + "resolutionVersion": 0, + "status": "unknown", + "ruleName": "Acceptance unknown", + "createdAt": "2026-10-08 07:16:47.527253+00", + "attemptedAt": "2026-10-08 07:16:56.448281+00" + }, + { + "id": "acceptance-browser-outbox-1791443807517-processing", + "resolutionVersion": 0, + "status": "processing", + "ruleName": "Acceptance processing", + "createdAt": "2026-10-08 07:16:47.533566+00", + "attemptedAt": "2026-10-08 07:16:56.448281+00" + } + ], + "itemsLimit": 20 + }, + "queueStatuses": [ + 200, + 500, + 200, + 200 + ], + "heldUnknownRetryAvailable": true, + "processingRetryAbsent": true, + "riskConfirmationRequired": true, + "cancelRestoresFocus": true, + "failedReadRetainsSnapshot": true, + "recoveryClearsError": true, + "reloadPreservesDatabaseStates": true, + "mobileFits": true, + "mobileDialogFits": true, + "retryPostCount": 0, + "externalSenderCalls": 0, + "pageErrors": [], + "limits": [ + "Synthetic rows in dedicated PostgreSQL; no actual Telegram delivery", + "Controlled backend overview exception produces real HTTP500; not a physical database outage", + "Auth false and read/cancel only; JWT permissions and successful manual retry tested separately" + ] +} diff --git a/docs/ux-ui/screens/outbox-confirm-real-320-2026-10-08.png b/docs/ux-ui/screens/outbox-confirm-real-320-2026-10-08.png new file mode 100644 index 00000000..87b51436 Binary files /dev/null and b/docs/ux-ui/screens/outbox-confirm-real-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/outbox-real-1280-2026-10-08.png b/docs/ux-ui/screens/outbox-real-1280-2026-10-08.png new file mode 100644 index 00000000..058021aa Binary files /dev/null and b/docs/ux-ui/screens/outbox-real-1280-2026-10-08.png differ diff --git a/docs/ux-ui/screens/outbox-real-320-2026-10-08.png b/docs/ux-ui/screens/outbox-real-320-2026-10-08.png new file mode 100644 index 00000000..c6c7999d Binary files /dev/null and b/docs/ux-ui/screens/outbox-real-320-2026-10-08.png differ