From 47f747586cd2593f4b657cc0e79935ff6c79e8a6 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Thu, 8 Oct 2026 09:46:25 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B4=D0=B8=D1=82=D1=8C=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20proxy=20timeout=20?= =?UTF-8?q?=D0=BD=D0=B0=20production-=D1=81=D1=82=D0=B5=D0=BD=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-external-acceptance.md | 6 +- docs/ux-ui-plan.md | 4 +- docs/ux-ui-progress.md | 14 +++- docs/ux-ui-stage-12.md | 14 +++- docs/ux-ui-test-server.md | 8 ++- .../deploy-browser-aa7dbdf-2026-10-08.json | 35 ++++++++++ .../deployed-frontend-aa7dbdf-2026-10-08.json | 38 +++++++++++ .../speed-unreachable-error-2026-10-08.json | 62 ++++++++++++++++++ .../speed-unreachable-error-real-320.png | Bin 0 -> 54611 bytes 9 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 docs/ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json create mode 100644 docs/ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json create mode 100644 docs/ux-ui/acceptance/speed-unreachable-error-2026-10-08.json create mode 100644 docs/ux-ui/screens/speed-unreachable-error-real-320.png diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index f27668ca..a1076740 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Статус на2026-10-08: backend/frontend8782054, backend healthy. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). +Статус на2026-10-08: backend8782054/frontendaa7dbdf, backend healthy. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). ## Паспорт стенда @@ -145,3 +145,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove ## Исправление Next proxy timeout — 2026-10-08 12.5.26 [real frontend500/backend error-history](ux-ui/acceptance/speed-unreachable-proxy-before-2026-10-08.json) выявил30s proxy timeout. Локально proxyTimeout180s; реальная Next proxy regression31s/TypeScript/ESLint passed. Backend сохраняет предыдущий TX42; native can not connect не подтверждён. Runtime8782054 прежний; destination восстановлен/testprobe удалена/temporarycontainers-network-3018 закрыты. Следующий12.5.27 — build/real browser retry/deployment исправленного frontend. + +## Новый frontend proxy timeout — 2026-10-08 + +12.5.27 [real browser timeout502](ux-ui/acceptance/speed-unreachable-error-2026-10-08.json), [frontend deployment](ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json), [пять экранов](ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json) passed. Frontendaa7dbdf/proxy180s, backend8782054healthy прежний; MMAPP_IMAGE_TAG=ux-aa7dbdf/BACKEND_IMAGE_TAG=ux-8782054. Основной DBcontrol совпал. Isolatedhost/probe восстановлены/удалены, temporarycontainers/network/3018 закрыты. Это transport timeout, не native can not connect; техническая подпись timeout остаётся ограничением UX. Следующий12.5.28 — ROS-3 interface/address/after-ping. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index b6395e55..6035c602 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-08: 12.5.26 обнаружил proxy-дефект: при недоступном назначении Next обрывал запрос через30s/HTTP500, backend сохранил error/history и прежний TX42. Локально proxyTimeout180s исправлен, regression31s/typecheck/ESLint прошли. Runtime8782054 прежний. Следующий12.5.27 — frontend build, повторная real browser timeout-проверка и deployment. Native can not connect ещё не подтверждён. +Актуальное продолжение 2026-10-08: 12.5.27 завершён — frontendaa7dbdf/proxy180s собран, real browser timeout получил502 вместо500, previousTX42/historyerror сохранены, native1/без автоповтора/JS0/320fits. Frontend развёрнут, backend8782054healthy, пять основных экранов/контрольБД passed. Следующий12.5.28 — ROS-3: выбор интерфейса, фактический адрес bandwidth-test и after-ping. Native can not connect/busy/disconnect/abort и полный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. Следующий12.5.27 — новый frontend build/real browser timeout/deployment. [Протокол](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 прежний. Следующий12.5.28 — ROS-3: интерфейсы, адрес bandwidth-test и after-ping. [Протокол](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 ab1260ec..e5531d6c 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-08: 12.5.26 обнаружил proxy-дефект: при недоступном назначении Next обрывал запрос через30s/HTTP500, backend сохранил error/history и прежний TX42. Локально proxyTimeout180s исправлен, regression31s/typecheck/ESLint прошли. Runtime8782054 прежний. Следующий12.5.27 — frontend build, повторная real browser timeout-проверка и deployment. Native can not connect ещё не подтверждён. +Актуальное продолжение 2026-10-08: 12.5.27 завершён — frontendaa7dbdf/proxy180s собран, real browser timeout получил502 вместо500, previousTX42/historyerror сохранены, native1/без автоповтора/JS0/320fits. Frontend развёрнут, backend8782054healthy, пять основных экранов/контрольБД passed. Следующий12.5.28 — ROS-3: выбор интерфейса, фактический адрес bandwidth-test и after-ping. Native can not connect/busy/disconnect/abort и полный12.5 открыты. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -34,6 +34,18 @@ | 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.27 — приёмка и deployment исправленного Next proxy (2026-10-08) + +Frontend production-образ sourceaa7dbdf608ca4da4986826fca956543f40922841 собран из чистого предыдущего context8782054 с зафиксированным next.config.ts; git diff подтвердил, что это единственное изменение runtime source frontend. Build/встроенный TypeScript passed; proxyTimeout180000 отражён в build config. Backend image8782054 не менялся. + +[Real browser/native timeout](ux-ui/acceptance/speed-unreachable-error-2026-10-08.json): новый frontend/старый backend в выделенной БД и Docker network. Длительный bandwidth REST запрос к назначению192.0.2.250 завершился транспортным timeout без native rows. Теперь UI получил структурированныйHTTP502 backend вместо proxy500/ECONNRESET. Probe lastStatuserror, previousTX42 сохранён; одна history error/TXRXnull, понятное обработанное предупреждение в UI. Refresh/reload/error state/320px passed, nativeCalls1/POST[502]/JS0, без автоповтора и HTTP/RouterOS-моков. [Снимок](ux-ui/screens/speed-unreachable-error-real-320.png). Это REST timeout; RouterOS can not connect не подтверждён, успешного native completion не заявляем. Техническая смешанная подпись timeout пока сохраняется как ограничение UX. + +[Deployment](ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json): MMAPP_IMAGE_TAG=ux-aa7dbdf, BACKEND_IMAGE_TAG=ux-8782054. Frontend imageSHAcd63b03b… и full revision label проверены. Backend8782054healthy/version1.0.0-test.8782054 не перезапускался. Контроль основной БД совпал: два enabled CHR,retention14,speedHistory5; restore не выполнялся. Приватная предыдущая env сохранена только на сервере, старый frontend image оставлен для отката. Новый frontend доступен через основной SSH localhost3000. + +[Пять основных экранов](ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json): dashboard/servers/uptime-speed/settings/filters200, ПК/320px fits,0JSerrors/0API>=400, HTTP-моков нет. Temporaryfrontend/backend/network/3018 закрыты, destinationhost восстановлен и проверен, testprobes0; основной стенд/туннель сохранены. + +Локальная regression31s/TypeScript/ESLint12.5.26 и real production browser proof подтверждают исправление proxy. ROS-2 transport timeout принят в этих границах; native can not connect/busy/disconnect/abort и Portal/multi-instance остаются открытыми. Следующий12.5.28 — ROS-3: фактический адрес native bandwidth-test и интерфейс after-ping. План/паспорт/протокол обновлены; локальный коммит без push. + ## 12.5.26 — тайм-аут недоступного назначения и исправление Next proxy (2026-10-08) [Real failure evidence](ux-ui/acceptance/speed-unreachable-proxy-before-2026-10-08.json): source8782054, выделенная БД, назначение2 временно заменено в app DB на192.0.2.250. Реальный bandwidth POST от CHR1 не вернул native rows до30s. Backend записал history error/TXRXnull и сохранил предыдущий probeTX42; frontend rewrite оборвал запрос с socket hang up/ECONNRESET и вернулHTTP500 раньше структурированного ответа backend. Целевая UI-проверка отклонила500; она не объявлена passed. Это транспортный timeout, не подтверждённый native can not connect. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 519beee1..f3e52875 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.26 обнаружил proxy-дефект: при недоступном назначении Next обрывал запрос через30s/HTTP500, backend сохранил error/history и прежний TX42. Локально proxyTimeout180s исправлен, regression31s/typecheck/ESLint прошли. Runtime8782054 прежний. Следующий12.5.27 — frontend build, повторная real browser timeout-проверка и deployment. Native can not connect ещё не подтверждён. +Актуальное продолжение 2026-10-08: 12.5.27 завершён — frontendaa7dbdf/proxy180s собран, real browser timeout получил502 вместо500, previousTX42/historyerror сохранены, native1/без автоповтора/JS0/320fits. Frontend развёрнут, backend8782054healthy, пять основных экранов/контрольБД passed. Следующий12.5.28 — ROS-3: выбор интерфейса, фактический адрес bandwidth-test и after-ping. Native can not connect/busy/disconnect/abort и полный12.5 открыты. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1226,3 +1226,15 @@ Temporaryfrontend/backend/network удалены,3018туннель закрыт В установленном Next16.2.4 найден default proxyTimeout30000. В next.config.ts задан experimental.proxyTimeout180000, дольше120s ожидания speed-команды в UI. Добавлен tests/integration/next-proxy-timeout.mjs: загрузка реальной конфигурации проекта, настоящие loopback sockets и установленный Next proxy; delayed backend502JSON после31s доходит до caller. Регрессия, scoped frontend TypeScript и ESLint прошли. Сценарий использует fixture backend response для проверки proxy, не выдаётся за RouterOS proof. Backend/общие UI-компоненты не менялись. Temporarycontainers/network/3018 закрыты; destinationhost восстановлен и проверен, testprobe удалена. Основной runtime8782054 прежний. Исправление требует нового frontend build: следующий12.5.27 — real browser timeout-проверка на новом образе и deployment после успеха. ROS-2 native can not connect/busy/disconnect/abort остаются открытыми. План и журнал обновлены, локальный коммит без push. + +## 12.5.27 — приёмка и deployment исправленного Next proxy (2026-10-08) + +Frontend production-образ sourceaa7dbdf608ca4da4986826fca956543f40922841 собран из чистого предыдущего context8782054 с зафиксированным next.config.ts; git diff подтвердил, что это единственное изменение runtime source frontend. Build/встроенный TypeScript passed; proxyTimeout180000 отражён в build config. Backend image8782054 не менялся. + +[Real browser/native timeout](ux-ui/acceptance/speed-unreachable-error-2026-10-08.json): новый frontend/старый backend в выделенной БД и Docker network. Длительный bandwidth REST запрос к назначению192.0.2.250 завершился транспортным timeout без native rows. Теперь UI получил структурированныйHTTP502 backend вместо proxy500/ECONNRESET. Probe lastStatuserror, previousTX42 сохранён; одна history error/TXRXnull, понятное обработанное предупреждение в UI. Refresh/reload/error state/320px passed, nativeCalls1/POST[502]/JS0, без автоповтора и HTTP/RouterOS-моков. [Снимок](ux-ui/screens/speed-unreachable-error-real-320.png). Это REST timeout; RouterOS can not connect не подтверждён, успешного native completion не заявляем. Техническая смешанная подпись timeout пока сохраняется как ограничение UX. + +[Deployment](ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json): MMAPP_IMAGE_TAG=ux-aa7dbdf, BACKEND_IMAGE_TAG=ux-8782054. Frontend imageSHAcd63b03b… и full revision label проверены. Backend8782054healthy/version1.0.0-test.8782054 не перезапускался. Контроль основной БД совпал: два enabled CHR,retention14,speedHistory5; restore не выполнялся. Приватная предыдущая env сохранена только на сервере, старый frontend image оставлен для отката. Новый frontend доступен через основной SSH localhost3000. + +[Пять основных экранов](ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json): dashboard/servers/uptime-speed/settings/filters200, ПК/320px fits,0JSerrors/0API>=400, HTTP-моков нет. Temporaryfrontend/backend/network/3018 закрыты, destinationhost восстановлен и проверен, testprobes0; основной стенд/туннель сохранены. + +Локальная regression31s/TypeScript/ESLint12.5.26 и real production browser proof подтверждают исправление proxy. ROS-2 transport timeout принят в этих границах; native can not connect/busy/disconnect/abort и Portal/multi-instance остаются открытыми. Следующий12.5.28 — ROS-3: фактический адрес native bandwidth-test и интерфейс after-ping. План/паспорт/протокол обновлены; локальный коммит без push. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 7959fc03..81f427f1 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-08 -Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активные backend/frontend source8782054078304f36cc611876af2d17f87b857f60/version1.0.0-test.8782054. Backend healthy; оба образа обновлены в12.5.22. +Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный backend source8782054078304f36cc611876af2d17f87b857f60/version1.0.0-test.8782054 healthy. Frontend sourceaa7dbdf608ca4da4986826fca956543f40922841/version1.0.0-test.aa7dbdf обновлён в12.5.27. | Параметр | Проверенное состояние | | --- | --- | @@ -14,7 +14,7 @@ | PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed | | Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data | | Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска | -| Образы приложения | mmapp-test/backend:ux-8782054 и mmapp-test/frontend:ux-8782054;запущены | +| Образы приложения | mmapp-test/backend:ux-8782054 и mmapp-test/frontend:ux-aa7dbdf;запущены | Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example). @@ -153,3 +153,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222 ## Исправление Next proxy timeout — 2026-10-08 12.5.26 [real frontend500/backend error-history](ux-ui/acceptance/speed-unreachable-proxy-before-2026-10-08.json) выявил30s proxy timeout. Локально proxyTimeout180s; реальная Next proxy regression31s/TypeScript/ESLint passed. Backend сохраняет предыдущий TX42; native can not connect не подтверждён. Runtime8782054 прежний; destination восстановлен/testprobe удалена/temporarycontainers-network-3018 закрыты. Следующий12.5.27 — build/real browser retry/deployment исправленного frontend. + +## Новый frontend proxy timeout — 2026-10-08 + +12.5.27 [real browser timeout502](ux-ui/acceptance/speed-unreachable-error-2026-10-08.json), [frontend deployment](ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json), [пять экранов](ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json) passed. Frontendaa7dbdf/proxy180s, backend8782054healthy прежний; MMAPP_IMAGE_TAG=ux-aa7dbdf/BACKEND_IMAGE_TAG=ux-8782054. Основной DBcontrol совпал. Isolatedhost/probe восстановлены/удалены, temporarycontainers/network/3018 закрыты. Это transport timeout, не native can not connect; техническая подпись timeout остаётся ограничением UX. Следующий12.5.28 — ROS-3 interface/address/after-ping. diff --git a/docs/ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json b/docs/ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json new file mode 100644 index 00000000..a33aa698 --- /dev/null +++ b/docs/ux-ui/acceptance/deploy-browser-aa7dbdf-2026-10-08.json @@ -0,0 +1,35 @@ +{ + "date": "2026-10-08", + "backendSource": "8782054078304f36cc611876af2d17f87b857f60", + "frontendSource": "aa7dbdf608ca4da4986826fca956543f40922841", + "httpMocks": false, + "pages": [ + { + "path": "/dashboard", + "status": 200, + "mobileFits": true + }, + { + "path": "/servers", + "status": 200, + "mobileFits": true + }, + { + "path": "/uptime?tab=speed", + "status": 200, + "mobileFits": true + }, + { + "path": "/settings", + "status": 200, + "mobileFits": true + }, + { + "path": "/filters", + "status": 200, + "mobileFits": true + } + ], + "pageErrors": [], + "badApiResponses": [] +} diff --git a/docs/ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json b/docs/ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json new file mode 100644 index 00000000..f71ce2f3 --- /dev/null +++ b/docs/ux-ui/acceptance/deployed-frontend-aa7dbdf-2026-10-08.json @@ -0,0 +1,38 @@ +{ + "date": "2026-10-08", + "frontendSource": "aa7dbdf608ca4da4986826fca956543f40922841", + "backendSource": "8782054078304f36cc611876af2d17f87b857f60", + "frontendImageId": "sha256:cd63b03b0f540baa0f6528f4fafc422c60a91785438dcb68eba0d3837cb0598f", + "backendHealth": "healthy", + "health": { + "status": "ok", + "timestamp": "2026-10-08T02:44:41.578Z", + "version": "1.0.0-test.8782054", + "eventLoopDelayMs": 20, + "flowWorker": { + "alive": false, + "bound": false, + "pendingSize": 0, + "dropped": 0, + "packetsReceived": 0 + } + }, + "controlsMatch": true, + "controls": { + "servers": [ + { + "id": 1, + "host": "194.226.121.150", + "enabled": true + }, + { + "id": 2, + "host": "104.165.244.7", + "enabled": true + } + ], + "retentionDays": 14, + "speedHistoryCount": 5 + }, + "mainRestorePerformed": false +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/speed-unreachable-error-2026-10-08.json b/docs/ux-ui/acceptance/speed-unreachable-error-2026-10-08.json new file mode 100644 index 00000000..a84f2584 --- /dev/null +++ b/docs/ux-ui/acceptance/speed-unreachable-error-2026-10-08.json @@ -0,0 +1,62 @@ +{ + "date": "2026-10-08", + "backendSource": "8782054078304f36cc611876af2d17f87b857f60", + "frontendSource": "aa7dbdf608ca4da4986826fca956543f40922841", + "database": "mmapp_acceptance_20261007", + "httpMocks": false, + "routerOsMocks": false, + "nativeStatuses": [], + "httpStatus": 502, + "errorMessage": "BTTest timeout/socket hang up: проверь доступность destination, /tool bandwidth-server, firewall и корректность интерфейсов", + "runId": "speed-1791427383920", + "snapshot": { + "lastStatus": "error", + "previousTxPreserved": true, + "rx": null + }, + "history": { + "id": "speed-1791427383920", + "probeId": "acceptance-browser-unreachable", + "srcServerId": "1", + "dstServerId": "2", + "srcInterface": "", + "dstInterface": "", + "protocol": "tcp", + "direction": "transmit", + "durationSec": 3, + "txAvgMbps": null, + "rxAvgMbps": null, + "status": "error", + "error": "BTTest timeout/socket hang up: проверь доступность destination, /tool bandwidth-server, firewall и корректность интерфейсов", + "createdAt": "2026-10-08T02:43:32.523Z", + "srcAddress": null, + "dstAddress": null, + "srcInterfaceAddress": null, + "dstInterfaceAddress": null, + "afterBtPing": { + "rttMs": null, + "lossPct": null, + "error": null + } + }, + "uiErrorVisible": true, + "reloadPreserved": true, + "mobileFits": true, + "nativeCalls": 1, + "postStatuses": [ + 502 + ], + "pageErrors": [], + "limits": [ + "Destination host changed to reserved documentation address only in isolated application database, RouterOS configuration untouched", + "Previous TX42 seeded as DB fixture", + "Auth false on SSH-only test stand, Portal SSO not covered", + "Reserved destination caused REST transport timeout; native can not connect not confirmed, busy/disconnect/abort pending" + ], + "cleanup": { + "destinationHostRestored": true, + "testProbeRemoved": true, + "temporaryContainersNetworkAndTunnelRemoved": true, + "mainHistoryCountUnchanged": 5 + } +} diff --git a/docs/ux-ui/screens/speed-unreachable-error-real-320.png b/docs/ux-ui/screens/speed-unreachable-error-real-320.png new file mode 100644 index 0000000000000000000000000000000000000000..17cfddf60b9658e169e839d3d82c2e39acfdb56c GIT binary patch literal 54611 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 literal 0 HcmV?d00001