From 673e5ba444ced304ea099a99108964e1c471482f Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 7 Oct 2026 21:26:23 +0700 Subject: [PATCH] =?UTF-8?q?fix(api):=20=D0=BD=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B4=D0=B0?= =?UTF-8?q?=D1=82=D1=83=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D1=91=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BD=D0=B8=D0=BC=D0=BA=D0=B0?= =?UTF-8?q?=20Internet=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/routes/internet-path.ts | 9 +- .../services/internet-path-snapshot.test.ts | 11 +- .../src/services/internet-path-snapshot.ts | 6 + docs/ux-ui-progress.md | 12 + docs/ux-ui-stage-12.md | 12 + .../test-server-smoke-2026-10-07.json | 234 ++++++++++++++++++ .../test-server-speed-320-2026-10-07.png | Bin 0 -> 46251 bytes 7 files changed, 276 insertions(+), 8 deletions(-) create mode 100644 docs/ux-ui/acceptance/test-server-smoke-2026-10-07.json create mode 100644 docs/ux-ui/screens/test-server-speed-320-2026-10-07.png diff --git a/backend/src/routes/internet-path.ts b/backend/src/routes/internet-path.ts index 8fa1e19a..bed3ad2f 100644 --- a/backend/src/routes/internet-path.ts +++ b/backend/src/routes/internet-path.ts @@ -1,5 +1,5 @@ import type { FastifyPluginAsyncZod } from "@fastify/type-provider-zod" -import { readStoredInternetPathPayload } from "../services/internet-path-snapshot.js" +import { mapStoredInternetPathResponse } from "../services/internet-path-snapshot.js" import { refreshScheduler } from "../services/scheduler.js" import { getInternetPathSettings, @@ -48,16 +48,11 @@ const internetPathRoutes: FastifyPluginAsyncZod = async (app) => { app.get("/internet-path/latest", async (_req, reply) => { const row = await getLatestInternetPathSnapshot() if (!row) return reply.send({ snapshot: null }) - let payload: object try { - payload = readStoredInternetPathPayload(row.payloadJson) + return reply.send(mapStoredInternetPathResponse(row)) } catch { return reply.code(502).send({error: "Сохранённый снимок Internet path повреждён"}) } - return reply.send({ - snapshot: payload, - sampledAt: row.sampledAt, - }) }) } diff --git a/backend/src/services/internet-path-snapshot.test.ts b/backend/src/services/internet-path-snapshot.test.ts index ed10595b..4eaa8023 100644 --- a/backend/src/services/internet-path-snapshot.test.ts +++ b/backend/src/services/internet-path-snapshot.test.ts @@ -1,5 +1,5 @@ import assert from "node:assert/strict" -import {collectConfirmedInternetPath, readInternetPathRows, readStoredInternetPathPayload} from "./internet-path-snapshot.js" +import {collectConfirmedInternetPath, readInternetPathRows, readStoredInternetPathPayload, mapStoredInternetPathResponse} from "./internet-path-snapshot.js" const servers=[{id:1,type:"home-router",enabled:true},{id:2,type:"home-router",enabled:false},{id:3,type:"exit-node",enabled:true}] const sampledAt="2026-10-04T00:00:00Z" const defaults={servers:async()=>servers,gre:async()=>[],filters:async()=>[],speed:async()=>[],route:async(id:number)=>{assert.equal(id,1);return {gateway:null,routingMark:null}},wan:async(id:number)=>{assert.equal(id,1);return {defaultGateway:null,defaultInterface:null,uplinks:[]}}} @@ -26,3 +26,12 @@ for(const [fields,row] of [[ ["dst-address"],{"message":"denied"} ],[["interface assert.deepEqual(readInternetPathRows([],"routes",["dst-address"]),[]) assert.equal(readInternetPathRows([{ "dst-address":"0.0.0.0/0",active:"true" }],"routes",["dst-address"]).length,1) assert.equal(readInternetPathRows([{ ".id":"*1",name:"gre", "local-address":"0.0.0.0","remote-address":"192.0.2.2" }],"gre",[".id","name","local-address","remote-address"]).length,1) + +for (const stored of ["2026-10-04 07:00:00+07", "2026-10-04T00:00:00Z"]) { + const response=mapStoredInternetPathResponse({payloadJson:good,sampledAt:stored}) + assert.equal(response.sampledAt,"2026-10-04T00:00:00.000Z") + assert.deepEqual(response.snapshot,good) +} +for (const invalid of ["", "bad", null]) assert.throws(()=>mapStoredInternetPathResponse({payloadJson:good,sampledAt:invalid as string})) +assert.throws(()=>mapStoredInternetPathResponse({payloadJson:"bad",sampledAt})) +console.log("internet path HTTP timestamp: PostgreSQL/ISO instant preserved; invalid metadata rejected") diff --git a/backend/src/services/internet-path-snapshot.ts b/backend/src/services/internet-path-snapshot.ts index d7893323..82455e9d 100644 --- a/backend/src/services/internet-path-snapshot.ts +++ b/backend/src/services/internet-path-snapshot.ts @@ -30,3 +30,9 @@ export function readStoredInternetPathPayload(raw: unknown): object { if (!payload || typeof payload !== "object" || Array.isArray(payload)) throw new Error("Сохранённый снимок Internet path повреждён") return payload } + +/** PostgreSQL string-mode timestamps must be normalized at the HTTP boundary. */ +export function mapStoredInternetPathResponse(row: { payloadJson: unknown; sampledAt: string }) { + if (typeof row.sampledAt !== "string" || !row.sampledAt.trim()) throw new Error("Сохранённая дата Internet path повреждена") + return { snapshot: readStoredInternetPathPayload(row.payloadJson), sampledAt: new Date(row.sampledAt).toISOString() } +} diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index a09f58dc..c6ff696a 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -34,6 +34,18 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в описанных границах:12.3.83,main1186/1186,context221/221. Этап остаётся в работе: стенд12.5.1 подготовлен,bootstrap/сценарии12.5 не выполнены. | +## 12.5.3 — нормализация даты Internet path на границе API (2026-10-07) + +Выявленный live-smoke дефект исправлен в mapper/GET latest: внешний PostgreSQL sampledAt преобразуется вISO без смены instant;payload не изменяется. Неверная дата/payload отклоняются502. Строгийfrontend DTO не ослаблен. Pure collector/mapper tests прошли,включаяPostgreSQL+07/ISO/invalid/null/blank,contracts/backend build passed. На сервере пока работает прежний образ;блок в работе до пересборки и live проверки. + +## 12.5.2 — сборка Docker и запуск приложения на тестовом сервере (2026-10-07) + +Собраны backend/frontend из закреплённого коммита4d88b97d490b2342aa4de81d093a0b8d4902e8d4,через чистые build contexts по CI main. Архив8MiB не содержит локальных.env/лицензии/ключей/node_modules. Образы mmapp-test/backend:ux-4d88b97 и mmapp-test/frontend:ux-4d88b97 созданы на сервере без push;version1.0.0-test.4d88b97,revision label сохранён. Контейнеры запущены наloopback;backend/PostgreSQL healthy,health напрямую/черезfrontend status:ok. SSH-туннель3000/8000 открыт для проверки. + +Реальный PostgreSQL применил9миграций,включая0008/0009;CHECK разрешает5статусов outbox и resolution_version>=0. После restartbackend совпали контрольный uptime_settings(id1/retention14) и список миграций;health восстановился. Пустые servers/probes/history прочитаны через API. [Первый live browser smoke](ux-ui/acceptance/test-server-smoke-2026-10-07.json):3экрана200,безJSerrors/API>=400,320px fits,безHTTP-моков. [Снимок320px](ux-ui/screens/test-server-speed-320-2026-10-07.png) просмотрен. + +Smoke обнаружил ошибку Internet path приHTTP200: внешний sampledAt пришёл строкой PostgreSQL вместоISO;корректный snapshot отклонён строгимfrontend. Общий smoke не является полной приёмкой: UI-source error сохранён в отчёте. Следующий12.5.3 — нормализация producer timestamp,пересборка и повтор live-smoke. PG backup/restore/concurrency/native/integrations не проверены. Внешний PG-1 проверен bootstrap/restart/schema/control-row в указанной границе. + ## 12.5.1 — подготовка удалённого тестового Docker-стенда (2026-10-07) По прямому поручению пользователя подготовлен временный сервер161.104.46.222,root,Debian13.7 trixie/x86_64. До установки Docker отсутствовал;1CPU/1973MiB RAM,23GiB свободно. Установлены Docker Engine29.8.2,Compose5.6.0,Buildx0.37.1 из официального apt repository,git/python3 и4GiB swap. Docker systemd enabled/active,hello-world passed. SSH и сетевые настройки подключения сохранены. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 2669f98f..92a263b9 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -960,3 +960,15 @@ Main1186/1186 на9680a64 и эта context матрица теперь вклю Создан /opt/mmapp-test (0700),Compose по main с отдельными именами/project/data,ограничением logs,loopback3000/8000 и фиксированными тегами. Пароль SSH не сохранён в репозитории; PG/JWT secrets сгенерированы на сервере в.env0600 без вывода. Compose config --quiet passed; SHA256 совпал с локальным шаблоном. Реальный PostgreSQL18.6 запущен,healthy и SELECT version() passed; порт БД не опубликован. [Паспорт и дальнейшие команды](ux-ui-test-server.md), [Compose](../deploy/docker-compose.test.yml), [env-шаблон](../deploy/env.test.example). Это подготовка инфраструктуры, не приёмка PG-1/restore/native: backend/frontend ещё не собраны и не запущены, bootstrap не выполнен. Следующий12.5.2 — чистые CI build contexts,закреплённые образы без push,bootstrap/health и начало PG-протокола. Локально docker CLI отсутствует; серверный Docker готов. Публикация Gitea/CI не выполнялась; локальный коммит без push. Ресурсы стенда не представляют production performance. + +## 12.5.2 — сборка Docker и запуск приложения на тестовом сервере (2026-10-07) + +Собраны backend/frontend из закреплённого коммита4d88b97d490b2342aa4de81d093a0b8d4902e8d4,через чистые build contexts по CI main. Архив8MiB не содержит локальных.env/лицензии/ключей/node_modules. Образы mmapp-test/backend:ux-4d88b97 и mmapp-test/frontend:ux-4d88b97 созданы на сервере без push;version1.0.0-test.4d88b97,revision label сохранён. Контейнеры запущены наloopback;backend/PostgreSQL healthy,health напрямую/черезfrontend status:ok. SSH-туннель3000/8000 открыт для проверки. + +Реальный PostgreSQL применил9миграций,включая0008/0009;CHECK разрешает5статусов outbox и resolution_version>=0. После restartbackend совпали контрольный uptime_settings(id1/retention14) и список миграций;health восстановился. Пустые servers/probes/history прочитаны через API. [Первый live browser smoke](ux-ui/acceptance/test-server-smoke-2026-10-07.json):3экрана200,безJSerrors/API>=400,320px fits,безHTTP-моков. [Снимок320px](ux-ui/screens/test-server-speed-320-2026-10-07.png) просмотрен. + +Smoke обнаружил ошибку Internet path приHTTP200: внешний sampledAt пришёл строкой PostgreSQL вместоISO;корректный snapshot отклонён строгимfrontend. Общий smoke не является полной приёмкой: UI-source error сохранён в отчёте. Следующий12.5.3 — нормализация producer timestamp,пересборка и повтор live-smoke. PG backup/restore/concurrency/native/integrations не проверены. Внешний PG-1 проверен bootstrap/restart/schema/control-row в указанной границе. + +## 12.5.3 — нормализация даты Internet path на границе API (2026-10-07) + +Выявленный live-smoke дефект исправлен в mapper/GET latest: внешний PostgreSQL sampledAt преобразуется вISO без смены instant;payload не изменяется. Неверная дата/payload отклоняются502. Строгийfrontend DTO не ослаблен. Pure collector/mapper tests прошли,включаяPostgreSQL+07/ISO/invalid/null/blank,contracts/backend build passed. На сервере пока работает прежний образ;блок в работе до пересборки и live проверки. diff --git a/docs/ux-ui/acceptance/test-server-smoke-2026-10-07.json b/docs/ux-ui/acceptance/test-server-smoke-2026-10-07.json new file mode 100644 index 00000000..a141d5e5 --- /dev/null +++ b/docs/ux-ui/acceptance/test-server-smoke-2026-10-07.json @@ -0,0 +1,234 @@ +{ + "sourceHead": "4d88b97d490b2342aa4de81d093a0b8d4902e8d4", + "server": "161.104.46.222", + "url": "http://localhost:3000 via SSH tunnel", + "mockedResponses": false, + "results": [ + { + "route": "/dashboard", + "status": 200, + "mainVisible": true, + "text": "Боковое меню\nОбзор\nДашборд\nСистема\nAPI доступен\nНе обновлены источники: 1\nПоследние полученные данные сохранены. Если источник ещё не загрузился, его показатели неизвестны.\nИсточники и время получения\nСерверы: Получено 07.10.2026, 21:19:46\nПробы: Получено 07.10.2026, 21:19:46\nBGP: Получено 07.10.2026, 21:19:46\nGRE: Получено 07.10.2026, 21:19:46\nWir" + }, + { + "route": "/uptime?tab=speed", + "status": 200, + "mainVisible": true, + "text": "Боковое меню\nОбзор\nМониторинг\nПауза\nОбновить\nНовая speed-проба\nСистема\nAPI доступен\nLive (backend)\nПинг-пробы\n0\nРесурсы\n0\nСкорость\n0\n\nSpeed-пробы: получено 07.10.2026, 21:19:55\n\nИстория тестов: получено 07.10.2026, 21:19:55\n\nSpeed-пробы\n0 шт\nТестов выполнено\n0 run\nМакс TX\n—\nМакс RX\n—\n\nНет speed-проб\n\nСоздайте пробу через кнопку «Новая speed-проба» " + }, + { + "route": "/servers", + "status": 200, + "mainVisible": true, + "text": "Боковое меню\nУправление\nСерверы\nПроверить все\nДобавить сервер\nСистема\nAPI доступен\nВсего серверов\n0\nОнлайн\n0\nJH + Exit Node\n0\nHome Router\n0\nВсе\n0\nJumpHost\n0\nExit Node\n0\nHome Router\n0\nФильтры\n0 серверов\nНет серверов\nДобавьте первый MikroTik-сервер для мониторинга" + } + ], + "mobileFits": true, + "pageErrors": [], + "apiReads": [ + { + "path": "/api/auth/config", + "status": 200 + }, + { + "path": "/api/filters/gre-tunnels", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/events", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/servers", + "status": 200 + }, + { + "path": "/api/filters/rules", + "status": 200 + }, + { + "path": "/api/bgp/catalog", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/uptime/overview", + "status": 200 + }, + { + "path": "/api/internet-path/latest", + "status": 200 + }, + { + "path": "/api/filters/gre-tunnels", + "status": 200 + }, + { + "path": "/api/traffic/servers", + "status": 200 + }, + { + "path": "/api/vxlan", + "status": 200 + }, + { + "path": "/api/wireguard", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + }, + { + "path": "/api/auth/config", + "status": 200 + }, + { + "path": "/api/filters/gre-tunnels", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/servers", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/uptime/overview", + "status": 200 + }, + { + "path": "/api/uptime/speed-probes", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/uptime/speed-test/runs", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + }, + { + "path": "/api/auth/config", + "status": 200 + }, + { + "path": "/api/servers", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/filters/gre-tunnels", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + }, + { + "path": "/api/auth/config", + "status": 200 + }, + { + "path": "/api/filters/gre-tunnels", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/servers", + "status": 200 + }, + { + "path": "/api/uptime/overview", + "status": 200 + }, + { + "path": "/api/uptime/speed-probes", + "status": 200 + }, + { + "path": "/health", + "status": 200 + }, + { + "path": "/api/sidebar-counts", + "status": 200 + }, + { + "path": "/api/uptime/speed-test/runs", + "status": 200 + }, + { + "path": "/api/evobgp/settings", + "status": 200 + } + ] +} diff --git a/docs/ux-ui/screens/test-server-speed-320-2026-10-07.png b/docs/ux-ui/screens/test-server-speed-320-2026-10-07.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ffd20b629c5c1342bd848a6efc989f889ad82a GIT binary patch literal 46251 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�+(L~S1B3etfJ$;ag>eyQ_D&S=R>$QH{;$PQ+e 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