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 00000000..17cfddf6 Binary files /dev/null and b/docs/ux-ui/screens/speed-unreachable-error-real-320.png differ