From d3f9a120e65645d50d156d661d1cb50c5137afaf Mon Sep 17 00:00:00 2001 From: Denozordec Date: Mon, 12 Oct 2026 15:47:16 +0700 Subject: [PATCH] =?UTF-8?q?fix(alerts):=20=D0=BE=D0=B1=D1=8A=D1=8F=D1=81?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D1=8C=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D1=91=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=B8=20=D0=BD=D0=B5=D0=BE?= =?UTF-8?q?=D0=B4=D0=BD=D0=BE=D0=B7=D0=BD=D0=B0=D1=87=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=86=D0=B5=D0=BB=D0=B8=20=D0=BE=D0=BF=D0=BE=D0=B2=D0=B5=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(main)/alerts/page.tsx | 3 + .../alert-engine/collector-source-sql.test.ts | 4 + .../services/alert-engine/target-issues.ts | 33 + backend/src/services/alerts-overview.test.ts | 20 + backend/src/services/alerts-overview.ts | 6 +- backend/src/services/alerts-service.ts | 13 +- components/alerts-target-issues.tsx | 41 + docs/ux-ui-external-acceptance.md | 26 +- docs/ux-ui-plan.md | 6 +- docs/ux-ui-progress.md | 24 +- docs/ux-ui-remaining-acceptance.md | 28 +- docs/ux-ui-stage-12.md | 24 +- docs/ux-ui-test-server.md | 26 +- ...ert-target-issues-compiled-2026-10-12.json | 1022 +++++++++++++++++ ...ert-target-issues-deployed-2026-10-12.json | 39 + ...lert-target-issues-interop-2026-10-12.json | 9 + ...lert-target-issues-runtime-2026-10-12.json | 30 + ...alert-target-issues-source-2026-10-12.json | 11 + .../alert-target-issues-sql-2026-10-12.json | 23 + .../alerts-target-issues-1440-2026-10-12.png | Bin 0 -> 197864 bytes .../alerts-target-issues-320-2026-10-12.png | Bin 0 -> 64386 bytes packages/contracts/src/alerts.ts | 5 + tests/e2e/alerts-target-issues.spec.ts | 52 + 23 files changed, 1429 insertions(+), 16 deletions(-) create mode 100644 backend/src/services/alert-engine/target-issues.ts create mode 100644 components/alerts-target-issues.tsx create mode 100644 docs/ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json create mode 100644 docs/ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json create mode 100644 docs/ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json create mode 100644 docs/ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json create mode 100644 docs/ux-ui/acceptance/alert-target-issues-source-2026-10-12.json create mode 100644 docs/ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json create mode 100644 docs/ux-ui/screens/alerts-target-issues-1440-2026-10-12.png create mode 100644 docs/ux-ui/screens/alerts-target-issues-320-2026-10-12.png create mode 100644 tests/e2e/alerts-target-issues.spec.ts diff --git a/app/(main)/alerts/page.tsx b/app/(main)/alerts/page.tsx index 4ae9b718..5bd992aa 100644 --- a/app/(main)/alerts/page.tsx +++ b/app/(main)/alerts/page.tsx @@ -10,6 +10,7 @@ import {useAlertsTargets} from "@/hooks/use-alerts-targets" import {AlertsOutboxPanel} from "@/components/alerts-outbox-panel" import {AlertsTelegramForm} from "@/components/alerts-telegram-form" import {AlertsTargetsStatus} from "@/components/alerts-targets-status" +import {AlertsTargetIssues} from "@/components/alerts-target-issues" import { useDataSource } from "@/lib/data-source" import { PageHeader } from "@/components/page-header" import { FormToggle } from "@/components/form-kit" @@ -157,6 +158,7 @@ interface AlertsGreTunnelRow { } interface AlertsMeta { + targetIssues?: AlertsResponse["meta"]["targetIssues"] servers: string[] greClients: string[] probeTargets: string[] @@ -2531,6 +2533,7 @@ function AlertsContent() { {config.busy?

Ожидаем подтверждение правил и групп…

:null} {config.unknown&&!config.busy?

Результат сохранения правил неизвестен. Запрос мог выполниться; проверьте правила и группы в БД перед повтором. Обновление списка не разрешает повтор автоматически.

:null} {known?<> + {isLive && } {/* ── summary chip bar ── */}
diff --git a/backend/src/services/alert-engine/collector-source-sql.test.ts b/backend/src/services/alert-engine/collector-source-sql.test.ts index ddf5dd41..5757e52b 100644 --- a/backend/src/services/alert-engine/collector-source-sql.test.ts +++ b/backend/src/services/alert-engine/collector-source-sql.test.ts @@ -3,6 +3,7 @@ import { pool, closePool } from "../../db/index.js" import { initDatabase } from "../../db/bootstrap.js" import { buildSignalSnapshotFromCollectors } from "./signals-from-collectors.js" import { evaluateRule } from "./evaluate-rule.js" +import { getAlertsMeta } from "../alerts-service.js" import type { ApiAlertRule } from "../alerts-service.js" const database = process.env.MMAPP_OWN_SQL_DB @@ -41,12 +42,14 @@ else { let signals = await build() assert.equal(signals.servers.length, 2); assert.equal(signals.servers[0].prevStatus, "online") assert.equal(signals.trafficByServer[0].rxMbps, 0); assert.equal(signals.probes.length, 2); cases++ + assert.deepEqual((await getAlertsMeta()).targetIssues, []) const offlineRule = { id: "owned", name: "owned", type: "server", targets: [server().name], conditions: ["offline"], enabled: true } as ApiAlertRule assert.ok(evaluateRule(offlineRule, signals)) await pool.query("UPDATE uptime_settings SET resources_enabled=false,ping_enabled=false WHERE id=1") await pool.query("UPDATE traffic_settings SET enabled=false WHERE id=1") signals = await build(); assert.deepEqual(signals.servers, []); assert.deepEqual(signals.probes, []); assert.deepEqual(signals.trafficByServer, []); cases++ + assert((await getAlertsMeta()).targetIssues?.every(issue => issue.reason === "disabled-source")) await pool.query("UPDATE uptime_settings SET resources_enabled=true,ping_enabled=true WHERE id=1") await pool.query("UPDATE traffic_settings SET enabled=true WHERE id=1") await pool.query("UPDATE servers SET enabled=false WHERE id=$1", [ids[0]]) @@ -54,6 +57,7 @@ else { await pool.query("UPDATE servers SET enabled=true WHERE id=$1", [ids[0]]) await pool.query("UPDATE servers SET name=$1 WHERE id=$2", [server().name, ids[1]]) signals = await build(); assert.deepEqual(signals.servers, []); assert.deepEqual(signals.trafficByServer, []); cases++ + assert.deepEqual((await getAlertsMeta()).targetIssues?.filter(issue => issue.reason === "ambiguous").map(issue => issue.kind), ["server", "traffic"]) await pool.query("UPDATE servers SET name=$1 WHERE id=$2", [server(1).name, ids[1]]) for (const broken of [null, "{", { ...snapshot("uptime_resources", []), servers: {} }, snapshot("uptime_resources", [])]) { diff --git a/backend/src/services/alert-engine/target-issues.ts b/backend/src/services/alert-engine/target-issues.ts new file mode 100644 index 00000000..393379b2 --- /dev/null +++ b/backend/src/services/alert-engine/target-issues.ts @@ -0,0 +1,33 @@ +import type { AlertTargetIssue } from "@mmapp/contracts/alerts" +import type { CollectorSourceConfig } from "./collector-source-signals.js" + +/** Configuration diagnostics only. This does not claim fresh samples or Telegram delivery. */ +export function collectAlertTargetIssues(config: CollectorSourceConfig): AlertTargetIssue[] { + const out: AlertTargetIssue[] = [] + const servers = new Map() + for (const server of config.servers) { + const key = (server.name || server.host).trim().toLowerCase() + if (key) servers.set(key, [...(servers.get(key) ?? []), server]) + } + const serverOn = (config.uptime?.resourcesEnabled ?? config.uptime?.enabled) === true || config.rest?.enabled === true + for (const group of servers.values()) { + const active = group.filter(s => s.enabled === true), target = (group[0].name || group[0].host).trim() + for (const [kind, sourceOn] of [["server", serverOn], ["traffic", config.traffic?.enabled === true]] as const) { + const reason = !active.length ? "disabled-object" : active.length > 1 ? "ambiguous" : !sourceOn ? "disabled-source" : null + if (reason) out.push({ kind, target, reason }) + } + } + const probes = new Map() + for (const probe of config.probes) { + if (!probe.name.trim() || !probe.target.trim()) continue + const key = `${probe.name.trim()} → ${probe.target.trim()}` + probes.set(key, [...(probes.get(key) ?? []), probe]) + } + for (const [target, group] of probes) { + const active = group.filter(p => p.enabled && config.servers.some(s => s.enabled === true && Number(s.id) === p.srcServerId)) + const sourceOn = (config.uptime?.pingEnabled ?? config.uptime?.enabled) === true + const reason = !active.length ? "disabled-object" : active.length > 1 ? "ambiguous" : !sourceOn ? "disabled-source" : null + if (reason) out.push({ kind: "probe", target, reason }) + } + return out +} diff --git a/backend/src/services/alerts-overview.test.ts b/backend/src/services/alerts-overview.test.ts index e5e5f9d3..f78cad03 100644 --- a/backend/src/services/alerts-overview.test.ts +++ b/backend/src/services/alerts-overview.test.ts @@ -3,6 +3,8 @@ import assert from "node:assert/strict" import {test} from "node:test" import type {AlertsResponse} from "@mmapp/contracts/alerts" import {readAlertsOverview,alertsOverviewTransaction,buildAlertsMeta} from "./alerts-overview.js" +import {collectAlertTargetIssues} from "./alert-engine/target-issues.js" +import type {CollectorSourceConfig} from "./alert-engine/collector-source-signals.js" const empty:AlertsResponse={revision:alertsConfigRevision({groups:[],rules:[]}),telegram:{chatId:"",tokenConfigured:false,connected:false,messageThreadId:null},groups:[],rules:[],history:[],meta:buildAlertsMeta([],[])} test("Alerts overview uses one context with repeatable read/read only and rejects partial snapshots",async()=>{ const context={snapshot:structuredClone(empty)},calls:string[]=[];let transactions=0 @@ -17,3 +19,21 @@ test("Alerts metadata exposes existing probe keys without synthesizing per-serve const withoutProbes=buildAlertsMeta(servers,[]);assert.deepEqual(withoutProbes.probeTargets,[]);assert.deepEqual(withoutProbes.rttLossTargets,[]);assert.equal(withoutProbes.serversDetail[0]?.type,"") const actual=buildAlertsMeta(servers,[{name:"probe-fixture",target:"1.1.1.1"}]);assert.deepEqual(actual.probeTargets,["probe-fixture → 1.1.1.1"]);assert.deepEqual(actual.rttLossTargets,actual.probeTargets);assert.equal(JSON.stringify(actual).includes("8.8.8.8"),false) }) +test("Target diagnostics explain ambiguous and disabled configuration without claiming live status",()=>{ + const config:CollectorSourceConfig={servers:[{id:1,name:"CHR",host:"one",enabled:true},{id:2,name:" chr ",host:"two",enabled:true}],probes:[],uptime:{enabled:true,resourcesEnabled:true,pingEnabled:true,intervalSec:15,probeIntervalSec:15},rest:{enabled:false,intervalSec:120},traffic:{enabled:true,intervalSec:30}} + assert.deepEqual(collectAlertTargetIssues(config),[{kind:"server",target:"CHR",reason:"ambiguous"},{kind:"traffic",target:"CHR",reason:"ambiguous"}]) + const unique={...config,servers:config.servers.map((s,index)=>({...s,name:"server"+index}))} + assert.deepEqual(collectAlertTargetIssues(unique),[]) + assert.deepEqual(collectAlertTargetIssues({...config,servers:[config.servers[0],{...config.servers[1],enabled:false}]}),[]) + const disabled=collectAlertTargetIssues({...unique,servers:unique.servers.map(s=>({...s,enabled:false}))});assert.equal(disabled.length,4);assert(disabled.every(i=>i.reason==="disabled-object")) + const sourceOff={...unique,uptime:{...unique.uptime!,resourcesEnabled:false},traffic:{...unique.traffic!,enabled:false}} + assert(collectAlertTargetIssues(sourceOff).every(i=>i.reason==="disabled-source")) + assert.deepEqual(collectAlertTargetIssues({...sourceOff,rest:{...sourceOff.rest!,enabled:true}}).map(i=>i.kind),["traffic","traffic"]) + const probe={id:"probe",name:"ping",target:"target",srcServerId:1,srcInterface:"",enabled:true,intervalSec:15} + const withProbe={...unique,probes:[probe,{...probe,id:"second"}]} + assert.deepEqual(collectAlertTargetIssues(withProbe),[{kind:"probe",target:"ping → target",reason:"ambiguous"}]) + assert.deepEqual(collectAlertTargetIssues({...withProbe,probes:[probe,{...probe,id:"second",enabled:false}]}),[]) + assert.equal(collectAlertTargetIssues({...unique,probes:[probe],uptime:{...unique.uptime!,pingEnabled:false}})[0].reason,"disabled-source") + const current=buildAlertsMeta(unique.servers.map(s=>({...s,site:null,country:null,type:null})),[probe],unique) + assert.deepEqual(current.targetIssues,[]);assert.equal("password" in current,false) +}) diff --git a/backend/src/services/alerts-overview.ts b/backend/src/services/alerts-overview.ts index fc154f88..23cc3344 100644 --- a/backend/src/services/alerts-overview.ts +++ b/backend/src/services/alerts-overview.ts @@ -1,5 +1,7 @@ import {alertsConfigRevision} from "./alerts-revision.js" import {alertsResponseSchema,type AlertsResponse} from "@mmapp/contracts/alerts" +import {collectAlertTargetIssues} from "./alert-engine/target-issues.js" +import type {CollectorSourceConfig} from "./alert-engine/collector-source-signals.js" export const alertsOverviewTransaction={isolationLevel:"repeatable read",accessMode:"read only"} as const interface Dependencies{transaction:(work:(context:C)=>Promise,options:typeof alertsOverviewTransaction)=>Promise;telegram:(context:C)=>Promise;groups:(context:C)=>Promise;rules:(context:C)=>Promise;history:(context:C)=>Promise;meta:(context:C)=>Promise} export async function readAlertsOverview(deps:Dependencies):Promise{ @@ -14,8 +16,8 @@ export async function readAlertsOverview(deps:Dependencies):Promiseserver.name?.trim()||server.host) const probeTargets=probes.map(probe=>probe.name+" → "+probe.target) - return {servers:labels,greClients:labels,probeTargets,rttLossTargets:probeTargets,trafficServers:labels,serversDetail:servers.map(server=>({name:server.name?.trim()||"",host:server.host.trim(),site:server.site?.trim()||"",country:server.country?.trim()||"",type:server.type??""}))} + return {servers:labels,greClients:labels,probeTargets,rttLossTargets:probeTargets,trafficServers:labels,serversDetail:servers.map(server=>({name:server.name?.trim()||"",host:server.host.trim(),site:server.site?.trim()||"",country:server.country?.trim()||"",type:server.type??""})),...(config?{targetIssues:collectAlertTargetIssues(config)}:{})} } diff --git a/backend/src/services/alerts-service.ts b/backend/src/services/alerts-service.ts index c223b69d..7179232a 100644 --- a/backend/src/services/alerts-service.ts +++ b/backend/src/services/alerts-service.ts @@ -15,6 +15,9 @@ import { alertTelegramSettings, servers, uptimeProbes, + uptimeSettings, + serversApiPingSettings, + trafficSettings, } from "../db/schema.js" export type ApiAlertGroup = { @@ -495,6 +498,8 @@ export async function listMergedHistory(persistLimit = 40, liveCap = 25,context: export async function getAlertsMeta(context:AlertsReadContext=db) { const srvRows = await context .select({ + id: servers.id, + enabled: servers.enabled, name: servers.name, host: servers.host, site: servers.site, @@ -502,8 +507,12 @@ export async function getAlertsMeta(context:AlertsReadContext=db) { type: servers.type, }) .from(servers) - const probes=await context.select({name:uptimeProbes.name,target:uptimeProbes.target}).from(uptimeProbes) - return buildAlertsMeta(srvRows,probes) + const probes=await context.select({id:uptimeProbes.id,name:uptimeProbes.name,target:uptimeProbes.target,enabled:uptimeProbes.enabled, + srcServerId:uptimeProbes.srcServerId,srcInterface:uptimeProbes.srcInterface,intervalSec:uptimeProbes.intervalSec}).from(uptimeProbes) + const uptime=(await context.select().from(uptimeSettings).where(eq(uptimeSettings.id,1)).limit(1))[0] + const rest=(await context.select().from(serversApiPingSettings).where(eq(serversApiPingSettings.id,1)).limit(1))[0] + const traffic=(await context.select().from(trafficSettings).where(eq(trafficSettings.id,1)).limit(1))[0] + return buildAlertsMeta(srvRows,probes,{servers:srvRows,probes,uptime,rest,traffic}) } export async function getAlertsOverview(){ diff --git a/components/alerts-target-issues.tsx b/components/alerts-target-issues.tsx new file mode 100644 index 00000000..422a4d75 --- /dev/null +++ b/components/alerts-target-issues.tsx @@ -0,0 +1,41 @@ +import Link from "next/link" +import { TriangleAlertIcon } from "lucide-react" +import type { AlertTargetIssue } from "@mmapp/contracts/alerts" +import { Alert, AlertTitle, AlertDescription } from "@/components/ui/alert" + +const kinds = { server: "Доступность сервера", traffic: "Трафик", probe: "Ping-проба" } +const reasons = { + ambiguous: "Несколько включённых объектов имеют эту подпись. События не подтверждаются.", + "disabled-object": "Объект или его сервер выключен. Опрос не выполняется.", + "disabled-source": "Сбор данных этого типа выключен.", +} +export function AlertsTargetIssues({ issues }: { issues: AlertTargetIssue[] | undefined }) { + if (!issues?.length) return null + const grouped = new Map() + for (const issue of issues) { + const key = `${issue.reason}\0${issue.target}` + const group = grouped.get(key) ?? { target: issue.target, reason: issue.reason, kinds: [] } + if (!group.kinds.includes(kinds[issue.kind])) group.kinds.push(kinds[issue.kind]) + grouped.set(key, group) + } + return + + Некоторые цели оповещений требуют проверки + +
+ Проверить цели: {grouped.size} +
    + {[...grouped].map(([key, group]) =>
  • + {group.target} · {group.kinds.join(" / ")} — {reasons[group.reason]} +
  • )} +
+
+ {issues.some(i => i.reason === "ambiguous") &&

Задайте разные имена объектов, затем обновите цели существующих правил.

} +

+ Проверить серверы + {issues.some(i => i.kind === "probe") && Проверить пробы} + {issues.some(i => i.reason === "disabled-source") && Проверить сбор данных} +

+
+
+} diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index bf5d59ab..9245e2cd 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-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md). @@ -696,7 +696,7 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). @@ -1908,3 +1908,25 @@ Readonly production PG builder подтвердил1 группу одинако Протоколы: [SQL16/cleanup](ux-ui/acceptance/collector-sources-sql-2026-10-12.json), [source433](ux-ui/acceptance/collector-sources-source-2026-10-12.json), [compiled1008](ux-ui/acceptance/collector-sources-compiled-2026-10-12.json), [readonly production](ux-ui/acceptance/collector-sources-production-2026-10-12.json), [runtime](ux-ui/acceptance/collector-sources-runtime-2026-10-12.json), [API/UI](ux-ui/acceptance/collector-sources-deployed-2026-10-12.json). Следующий171 — понятная диагностика неоднозначных/отключённых целей оповещений: silent suppression безопасен для engine, но пользователь должен понимать причину отсутствия события. Миграция name-based rules на stable ID, scale/multi-instance/physical WAN/внешние Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. + +## 12.5.171 — понятные причины недоступности целей оповещений (2026-10-12) + +При conservative suppression170 пользователь должен понимать, почему событие не подтверждается. Добавлен чистый collectAlertTargetIssues и optional public meta.targetIssues: kind server/traffic/probe, подпись и причина ambiguous/disabled-object/disabled-source. Диагностика строится из текущих настроек внутри того же repeatable read/read only transaction, что основной overview; getters defaults не создают. Учитываются dedicated source switches, enabled REST как разрешённый availability source по конфигурации, enabled устройства/пробы, duplicate labels и fallback имени на host. Это диагностика конфигурации; она не заявляет свежесть измерений, online устройств или фактическую доставку Telegram. Поля credentials не выбираются и не публикуются. Engine правила, target representation и права не изменены. + +На /alerts добавлен существующий ReUI/shadcn Alert warning в base-nova/Frame композиции без изменения vendor files/theme. Строки доступности и трафика одной цели объединены; причина и дальнейшее действие читаются вместе. Длинный список раскрывается native details/summary клавиатурой, большой список изначально свёрнут; длинные подписи переносятся на телефоне. Ссылки ведут к серверам, пробам и сбору данных. При устранении причины warning исчезает после подтверждённого обновления; legacy API без optional поля не подменяется догадкой. Имена двух CHR и targets действующих правил автоматически не переписывались. + +| Эталон | Доработка | Проверка | +| --- | --- | --- | +| Существующие Alert и Frame проекта | Подпись → причина → понятный переход → обновление | [ПК1440](ux-ui/screens/alerts-target-issues-1440-2026-10-12.png), [телефон320](ux-ui/screens/alerts-target-issues-320-2026-10-12.png) | + +Локально прошли12 скриптов test:alerts-telegram (unit/transaction/config/queue/HTTP/JWT), application-source TypeScript, backend build и ESLint. Полный root tsc сначала захватил ignored tmp с давними test/build artifacts и выдал их ошибки; source check с исключением tmp/backend/packages прошёл, contracts/backend проверены собственной сборкой. Root tsconfig не менялся.42 unique E2E:22 readers/targets/pickers/rules/new diagnostics за44.7s;19 history/outbox/Telegram за30.6s;1 новый keyboard/long-label mobile за6.2s. Реальная отправка Telegram отсутствовала: HTTP пути подменены тестовыми receipts. Последняя проверка хронологии старым check-progress168 ожидала прежний header168; сам сохранённый historical slice имел12 dated blocks/35 существующих evidence links. Это устаревшее ожидание helper, не удаление журнала; актуальная сверка обновлена отдельно. + +Owned Node22/PostgreSQL18.6 profile passed19540ms:16 source SQL cases плюс проверки actual getAlertsMeta (known empty, disabled-source reasons, ambiguous server/traffic kinds),8 GRE/BGP SQL rows и actual stability;PG unavailable skips0. Временная own DB/ограниченная роль mm_accept_166_1791794042576 и test container удалены. Main fixtures/RouterOS writes/messages0. Обе production сборки прошли; source434 backend+518 frontend inputs и1012 emitted backend/contracts files совпали SHA256 (text CRLF→LF, binary unchanged). Полную UI1260/context221/backend24 regression без новой причины не повторяли. + +Развёртывание staged: frontend ux-targets171/version1.0.0-test.targets171 сначала принял реальный прежний API ux-sources170 без targetIssues; затем обновлён backend ux-targets171. На старом cached frontend строгий прежний DTO не знает additive поле: после обновления backend следует перезагрузить страницу для получения совместимого frontend. Менялись только image tags в existing.env; rollback tags сохранены отдельно без копирования secret env. Backend/PG healthy; frontend running/HTTP/browser подтверждён, отдельного healthcheck нет. Запущенные imageIds совпадают с проверенными образами; после cleanup3 основных running containers. + +2 real UI1440/320 показали настоящий CHR warning:1 сгруппированная подпись,2 affected kinds, ссылка /servers, overflow/pageerrors/API writes0. Scoped axe нового блока WCAG2A/AA violations0, full WCAG certification не заявляется. Снимки просмотрены; исходные пользовательские GRE/VXLAN images сохранены без staging/revert. Настройки/имена/пароли CHR и исходные правила не менялись. + +Протоколы: [SQL/cleanup](ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json), [source](ux-ui/acceptance/alert-target-issues-source-2026-10-12.json), [compiled](ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json), [interop](ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json), [runtime](ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json), [live UI](ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json). + +Следующий172 — отдельная обнаруженная ветка: синтезированный monitoring history в alerts-service читает raw latest samples, пока не применяет enabled/freshness/current-error guards170 и требует проверки реального PG timestamp→public string на positive sample. Source finding не является уже выполненным исправлением или доказанной runtime ошибкой. Stable-ID target migration, отсутствующие цели удалённых правил, physical WAN/scale/multi-instance и реальные Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index b81357d6..af9cb8e6 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-12. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-12 -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. Этапы0–11 завершены в локальных границах журнала. История выполненных внешних блоков и доказательства сохранены в [журнале](ux-ui-stage-12.md) и [протоколе](ux-ui-external-acceptance.md). Реальная Telegram доставка, Portal SSO, multi-instance и оставшиеся профильные сетевые ограничения открыты. @@ -371,6 +371,6 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index cfa49b46..9232b83d 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -38,6 +38,28 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–168 и ограничения ниже. Runtime backend ux-month149/frontend ux-sessions150. | +## 12.5.171 — понятные причины недоступности целей оповещений (2026-10-12) + +При conservative suppression170 пользователь должен понимать, почему событие не подтверждается. Добавлен чистый collectAlertTargetIssues и optional public meta.targetIssues: kind server/traffic/probe, подпись и причина ambiguous/disabled-object/disabled-source. Диагностика строится из текущих настроек внутри того же repeatable read/read only transaction, что основной overview; getters defaults не создают. Учитываются dedicated source switches, enabled REST как разрешённый availability source по конфигурации, enabled устройства/пробы, duplicate labels и fallback имени на host. Это диагностика конфигурации; она не заявляет свежесть измерений, online устройств или фактическую доставку Telegram. Поля credentials не выбираются и не публикуются. Engine правила, target representation и права не изменены. + +На /alerts добавлен существующий ReUI/shadcn Alert warning в base-nova/Frame композиции без изменения vendor files/theme. Строки доступности и трафика одной цели объединены; причина и дальнейшее действие читаются вместе. Длинный список раскрывается native details/summary клавиатурой, большой список изначально свёрнут; длинные подписи переносятся на телефоне. Ссылки ведут к серверам, пробам и сбору данных. При устранении причины warning исчезает после подтверждённого обновления; legacy API без optional поля не подменяется догадкой. Имена двух CHR и targets действующих правил автоматически не переписывались. + +| Эталон | Доработка | Проверка | +| --- | --- | --- | +| Существующие Alert и Frame проекта | Подпись → причина → понятный переход → обновление | [ПК1440](ux-ui/screens/alerts-target-issues-1440-2026-10-12.png), [телефон320](ux-ui/screens/alerts-target-issues-320-2026-10-12.png) | + +Локально прошли12 скриптов test:alerts-telegram (unit/transaction/config/queue/HTTP/JWT), application-source TypeScript, backend build и ESLint. Полный root tsc сначала захватил ignored tmp с давними test/build artifacts и выдал их ошибки; source check с исключением tmp/backend/packages прошёл, contracts/backend проверены собственной сборкой. Root tsconfig не менялся.42 unique E2E:22 readers/targets/pickers/rules/new diagnostics за44.7s;19 history/outbox/Telegram за30.6s;1 новый keyboard/long-label mobile за6.2s. Реальная отправка Telegram отсутствовала: HTTP пути подменены тестовыми receipts. Последняя проверка хронологии старым check-progress168 ожидала прежний header168; сам сохранённый historical slice имел12 dated blocks/35 существующих evidence links. Это устаревшее ожидание helper, не удаление журнала; актуальная сверка обновлена отдельно. + +Owned Node22/PostgreSQL18.6 profile passed19540ms:16 source SQL cases плюс проверки actual getAlertsMeta (known empty, disabled-source reasons, ambiguous server/traffic kinds),8 GRE/BGP SQL rows и actual stability;PG unavailable skips0. Временная own DB/ограниченная роль mm_accept_166_1791794042576 и test container удалены. Main fixtures/RouterOS writes/messages0. Обе production сборки прошли; source434 backend+518 frontend inputs и1012 emitted backend/contracts files совпали SHA256 (text CRLF→LF, binary unchanged). Полную UI1260/context221/backend24 regression без новой причины не повторяли. + +Развёртывание staged: frontend ux-targets171/version1.0.0-test.targets171 сначала принял реальный прежний API ux-sources170 без targetIssues; затем обновлён backend ux-targets171. На старом cached frontend строгий прежний DTO не знает additive поле: после обновления backend следует перезагрузить страницу для получения совместимого frontend. Менялись только image tags в existing.env; rollback tags сохранены отдельно без копирования secret env. Backend/PG healthy; frontend running/HTTP/browser подтверждён, отдельного healthcheck нет. Запущенные imageIds совпадают с проверенными образами; после cleanup3 основных running containers. + +2 real UI1440/320 показали настоящий CHR warning:1 сгруппированная подпись,2 affected kinds, ссылка /servers, overflow/pageerrors/API writes0. Scoped axe нового блока WCAG2A/AA violations0, full WCAG certification не заявляется. Снимки просмотрены; исходные пользовательские GRE/VXLAN images сохранены без staging/revert. Настройки/имена/пароли CHR и исходные правила не менялись. + +Протоколы: [SQL/cleanup](ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json), [source](ux-ui/acceptance/alert-target-issues-source-2026-10-12.json), [compiled](ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json), [interop](ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json), [runtime](ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json), [live UI](ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json). + +Следующий172 — отдельная обнаруженная ветка: синтезированный monitoring history в alerts-service читает raw latest samples, пока не применяет enabled/freshness/current-error guards170 и требует проверки реального PG timestamp→public string на positive sample. Source finding не является уже выполненным исправлением или доказанной runtime ошибкой. Stable-ID target migration, отсутствующие цели удалённых правил, physical WAN/scale/multi-instance и реальные Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. + ## 12.5.170 — достоверность серверных, пробных и трафиковых сигналов (2026-10-12) Завершён оставшийся объём169 в одном coherent backend блоке. Новый collector-source-signals отделяет чтение от чистого построения фактов. Builder читает текущие настройки и identity без seeding getters и без credentials: resourcesEnabled/pingEnabled имеют тот же fallback на legacy enabled, что scheduler; REST/traffic используют собственные enabled. Выбираются последние завершённые ok/error runs, включая NULL/error JSON, вместо only-ok history. Текущие server/traffic keys берутся только из newest run: empty/error/malformed/unknown не восстанавливают старую цель. Частичная ошибочная коллекция сохраняет известные строки других устройств. ServerID/name/host/enabled/duplicate guards169 сохранены; пустое имя может использовать host, как collector. producer sample и completion проверяются по3 effective periods, future tolerance1 period; минимумы5s resources/traffic и10s REST повторяют scheduler. Resource неизвестное значение не становится offline; Traffic требует ok=true и конечные неотрицательные RX/TX, отсутствующее/ошибка не становится0. Подтверждённый нулевой трафик остаётся0. diff --git a/docs/ux-ui-remaining-acceptance.md b/docs/ux-ui-remaining-acceptance.md index 14aedbe9..15237564 100644 --- a/docs/ux-ui-remaining-acceptance.md +++ b/docs/ux-ui-remaining-acceptance.md @@ -1,8 +1,8 @@ # Оставшаяся внешняя приёмка — 2026-10-12 -Это актуальная матрица после 12.5.170. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. +Это актуальная матрица после 12.5.171. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. -Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-sources170`, frontend `ux-bfd158`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. +Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-targets171`, frontend `ux-targets171`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. | Раздел | Подтверждено | Осталось / условие завершения | | --- | --- | --- | @@ -18,7 +18,7 @@ | Recursive routes | Production PUT/change/own history restore88, disabled guards, partial/unknown/applied outcomes, live формы/контекст | Автоматический rollback/retry, durable receipts и несколько экземпляров отсутствуют; PUT не является idempotent noop. Полная произвольная legacy catalog миграция не принята | | Diagnostics/terminal | Allowlist/native reads, Ping/trace/route/MTU/DNS, actual avg-rtt, disabled guards, JWT/live PC/mobile89; real default memory tail/log limits/API/UI133 | DNS использует backend resolver; MTU — ограниченная оценка, не гарантированный максимум. Stop ожидания не доказывает остановку RouterOS команды; arbitrary CLI и physical disconnect не приняты | | Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; RIPE SDK two-IP/no-fetch passed140, native IPv6 ULA flow pipeline passed145 (IPv4 transport), public IPv6 WAN/local licensed MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения | -| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native CHR ULA/IPFIX/API/UI passed145; ICMPv6/IPv6 endpoint labels passed146; HTTP DTO validation passed147; scoped flow catalog/serverId guards passed148; strict monthly calendar passed149; Sessions labels passed150; application GRE static IPv6 lifecycle151 passed; WireGuard static IPv6 lifecycle152 и disabled SQL/API gates passed; OSPF/BFD boundary/warning153 passed; OSPFv3 routes154 accepted in recorded bounds; BGP IPv6 basic155 passed; bigint ID/SQL guards156 passed; общая UI1260/context221/backend24 regression157 passed; IPv6 BFD correlation158 profile/deployed passed; native OSPFv3/BFDv6 boundary/recovery159 passed; BGP IPv6/BFD withdrawal/recovery160 passed; selected BGP/alert unknown guards161 replay/profiles/deployed passed (SQL stability skipped); private4-byte ASN162 native/API/UI passed; duplicate BGP alert keys163 replay/profiles/deployed passed; nullable selected BGP164 replay/profiles/API/UI passed; collector165 parallel/current guards/read-only PG passed; positive partial/error SQL166/full24 with PG passed (optional network SQL not repeated); GRE/BGP freshness167/SQL8 passed; other source audit168 выявил identity/disabled/freshness gaps; локальный server/traffic identity guard169 passed без SQL/deploy, source/per-probe/freshness170/ownSQL16/compiled1008/deployed passed; source diagnostics171 pending; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию | +| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native CHR ULA/IPFIX/API/UI passed145; ICMPv6/IPv6 endpoint labels passed146; HTTP DTO validation passed147; scoped flow catalog/serverId guards passed148; strict monthly calendar passed149; Sessions labels passed150; application GRE static IPv6 lifecycle151 passed; WireGuard static IPv6 lifecycle152 и disabled SQL/API gates passed; OSPF/BFD boundary/warning153 passed; OSPFv3 routes154 accepted in recorded bounds; BGP IPv6 basic155 passed; bigint ID/SQL guards156 passed; общая UI1260/context221/backend24 regression157 passed; IPv6 BFD correlation158 profile/deployed passed; native OSPFv3/BFDv6 boundary/recovery159 passed; BGP IPv6/BFD withdrawal/recovery160 passed; selected BGP/alert unknown guards161 replay/profiles/deployed passed (SQL stability skipped); private4-byte ASN162 native/API/UI passed; duplicate BGP alert keys163 replay/profiles/deployed passed; nullable selected BGP164 replay/profiles/API/UI passed; collector165 parallel/current guards/read-only PG passed; positive partial/error SQL166/full24 with PG passed (optional network SQL not repeated); GRE/BGP freshness167/SQL8 passed; other source audit168 выявил identity/disabled/freshness gaps; локальный server/traffic identity guard169 passed без SQL/deploy, source/per-probe/freshness170/ownSQL16/compiled1008/deployed passed; source diagnostics171/42E2E/ownSQL metadata/live2 passed; synthesized monitoring history guards172 pending; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию | Доказательства и точные ограничения: [полная история этапа12](ux-ui-stage-12.md), [внешний протокол](ux-ui-external-acceptance.md), [BGP93](ux-ui/acceptance/bgp-failover-2026-10-10.json), [паспорт стенда](ux-ui-test-server.md). Невыполненные пункты не являются все блокерами данного лабораторного сценария: для выпуска необходимо явно определить требуемые конфигурации и принять их либо согласовать ограничение. @@ -823,3 +823,25 @@ Readonly production PG builder подтвердил1 группу одинако Протоколы: [SQL16/cleanup](ux-ui/acceptance/collector-sources-sql-2026-10-12.json), [source433](ux-ui/acceptance/collector-sources-source-2026-10-12.json), [compiled1008](ux-ui/acceptance/collector-sources-compiled-2026-10-12.json), [readonly production](ux-ui/acceptance/collector-sources-production-2026-10-12.json), [runtime](ux-ui/acceptance/collector-sources-runtime-2026-10-12.json), [API/UI](ux-ui/acceptance/collector-sources-deployed-2026-10-12.json). Следующий171 — понятная диагностика неоднозначных/отключённых целей оповещений: silent suppression безопасен для engine, но пользователь должен понимать причину отсутствия события. Миграция name-based rules на stable ID, scale/multi-instance/physical WAN/внешние Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. + +## 12.5.171 — понятные причины недоступности целей оповещений (2026-10-12) + +При conservative suppression170 пользователь должен понимать, почему событие не подтверждается. Добавлен чистый collectAlertTargetIssues и optional public meta.targetIssues: kind server/traffic/probe, подпись и причина ambiguous/disabled-object/disabled-source. Диагностика строится из текущих настроек внутри того же repeatable read/read only transaction, что основной overview; getters defaults не создают. Учитываются dedicated source switches, enabled REST как разрешённый availability source по конфигурации, enabled устройства/пробы, duplicate labels и fallback имени на host. Это диагностика конфигурации; она не заявляет свежесть измерений, online устройств или фактическую доставку Telegram. Поля credentials не выбираются и не публикуются. Engine правила, target representation и права не изменены. + +На /alerts добавлен существующий ReUI/shadcn Alert warning в base-nova/Frame композиции без изменения vendor files/theme. Строки доступности и трафика одной цели объединены; причина и дальнейшее действие читаются вместе. Длинный список раскрывается native details/summary клавиатурой, большой список изначально свёрнут; длинные подписи переносятся на телефоне. Ссылки ведут к серверам, пробам и сбору данных. При устранении причины warning исчезает после подтверждённого обновления; legacy API без optional поля не подменяется догадкой. Имена двух CHR и targets действующих правил автоматически не переписывались. + +| Эталон | Доработка | Проверка | +| --- | --- | --- | +| Существующие Alert и Frame проекта | Подпись → причина → понятный переход → обновление | [ПК1440](ux-ui/screens/alerts-target-issues-1440-2026-10-12.png), [телефон320](ux-ui/screens/alerts-target-issues-320-2026-10-12.png) | + +Локально прошли12 скриптов test:alerts-telegram (unit/transaction/config/queue/HTTP/JWT), application-source TypeScript, backend build и ESLint. Полный root tsc сначала захватил ignored tmp с давними test/build artifacts и выдал их ошибки; source check с исключением tmp/backend/packages прошёл, contracts/backend проверены собственной сборкой. Root tsconfig не менялся.42 unique E2E:22 readers/targets/pickers/rules/new diagnostics за44.7s;19 history/outbox/Telegram за30.6s;1 новый keyboard/long-label mobile за6.2s. Реальная отправка Telegram отсутствовала: HTTP пути подменены тестовыми receipts. Последняя проверка хронологии старым check-progress168 ожидала прежний header168; сам сохранённый historical slice имел12 dated blocks/35 существующих evidence links. Это устаревшее ожидание helper, не удаление журнала; актуальная сверка обновлена отдельно. + +Owned Node22/PostgreSQL18.6 profile passed19540ms:16 source SQL cases плюс проверки actual getAlertsMeta (known empty, disabled-source reasons, ambiguous server/traffic kinds),8 GRE/BGP SQL rows и actual stability;PG unavailable skips0. Временная own DB/ограниченная роль mm_accept_166_1791794042576 и test container удалены. Main fixtures/RouterOS writes/messages0. Обе production сборки прошли; source434 backend+518 frontend inputs и1012 emitted backend/contracts files совпали SHA256 (text CRLF→LF, binary unchanged). Полную UI1260/context221/backend24 regression без новой причины не повторяли. + +Развёртывание staged: frontend ux-targets171/version1.0.0-test.targets171 сначала принял реальный прежний API ux-sources170 без targetIssues; затем обновлён backend ux-targets171. На старом cached frontend строгий прежний DTO не знает additive поле: после обновления backend следует перезагрузить страницу для получения совместимого frontend. Менялись только image tags в existing.env; rollback tags сохранены отдельно без копирования secret env. Backend/PG healthy; frontend running/HTTP/browser подтверждён, отдельного healthcheck нет. Запущенные imageIds совпадают с проверенными образами; после cleanup3 основных running containers. + +2 real UI1440/320 показали настоящий CHR warning:1 сгруппированная подпись,2 affected kinds, ссылка /servers, overflow/pageerrors/API writes0. Scoped axe нового блока WCAG2A/AA violations0, full WCAG certification не заявляется. Снимки просмотрены; исходные пользовательские GRE/VXLAN images сохранены без staging/revert. Настройки/имена/пароли CHR и исходные правила не менялись. + +Протоколы: [SQL/cleanup](ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json), [source](ux-ui/acceptance/alert-target-issues-source-2026-10-12.json), [compiled](ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json), [interop](ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json), [runtime](ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json), [live UI](ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json). + +Следующий172 — отдельная обнаруженная ветка: синтезированный monitoring history в alerts-service читает raw latest samples, пока не применяет enabled/freshness/current-error guards170 и требует проверки реального PG timestamp→public string на positive sample. Source finding не является уже выполненным исправлением или доказанной runtime ошибкой. Stable-ID target migration, отсутствующие цели удалённых правил, physical WAN/scale/multi-instance и реальные Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index b0af1528..afc16d97 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-12: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Актуальное продолжение 2026-10-12: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -3213,3 +3213,25 @@ Readonly production PG builder подтвердил1 группу одинако Протоколы: [SQL16/cleanup](ux-ui/acceptance/collector-sources-sql-2026-10-12.json), [source433](ux-ui/acceptance/collector-sources-source-2026-10-12.json), [compiled1008](ux-ui/acceptance/collector-sources-compiled-2026-10-12.json), [readonly production](ux-ui/acceptance/collector-sources-production-2026-10-12.json), [runtime](ux-ui/acceptance/collector-sources-runtime-2026-10-12.json), [API/UI](ux-ui/acceptance/collector-sources-deployed-2026-10-12.json). Следующий171 — понятная диагностика неоднозначных/отключённых целей оповещений: silent suppression безопасен для engine, но пользователь должен понимать причину отсутствия события. Миграция name-based rules на stable ID, scale/multi-instance/physical WAN/внешние Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. + +## 12.5.171 — понятные причины недоступности целей оповещений (2026-10-12) + +При conservative suppression170 пользователь должен понимать, почему событие не подтверждается. Добавлен чистый collectAlertTargetIssues и optional public meta.targetIssues: kind server/traffic/probe, подпись и причина ambiguous/disabled-object/disabled-source. Диагностика строится из текущих настроек внутри того же repeatable read/read only transaction, что основной overview; getters defaults не создают. Учитываются dedicated source switches, enabled REST как разрешённый availability source по конфигурации, enabled устройства/пробы, duplicate labels и fallback имени на host. Это диагностика конфигурации; она не заявляет свежесть измерений, online устройств или фактическую доставку Telegram. Поля credentials не выбираются и не публикуются. Engine правила, target representation и права не изменены. + +На /alerts добавлен существующий ReUI/shadcn Alert warning в base-nova/Frame композиции без изменения vendor files/theme. Строки доступности и трафика одной цели объединены; причина и дальнейшее действие читаются вместе. Длинный список раскрывается native details/summary клавиатурой, большой список изначально свёрнут; длинные подписи переносятся на телефоне. Ссылки ведут к серверам, пробам и сбору данных. При устранении причины warning исчезает после подтверждённого обновления; legacy API без optional поля не подменяется догадкой. Имена двух CHR и targets действующих правил автоматически не переписывались. + +| Эталон | Доработка | Проверка | +| --- | --- | --- | +| Существующие Alert и Frame проекта | Подпись → причина → понятный переход → обновление | [ПК1440](ux-ui/screens/alerts-target-issues-1440-2026-10-12.png), [телефон320](ux-ui/screens/alerts-target-issues-320-2026-10-12.png) | + +Локально прошли12 скриптов test:alerts-telegram (unit/transaction/config/queue/HTTP/JWT), application-source TypeScript, backend build и ESLint. Полный root tsc сначала захватил ignored tmp с давними test/build artifacts и выдал их ошибки; source check с исключением tmp/backend/packages прошёл, contracts/backend проверены собственной сборкой. Root tsconfig не менялся.42 unique E2E:22 readers/targets/pickers/rules/new diagnostics за44.7s;19 history/outbox/Telegram за30.6s;1 новый keyboard/long-label mobile за6.2s. Реальная отправка Telegram отсутствовала: HTTP пути подменены тестовыми receipts. Последняя проверка хронологии старым check-progress168 ожидала прежний header168; сам сохранённый historical slice имел12 dated blocks/35 существующих evidence links. Это устаревшее ожидание helper, не удаление журнала; актуальная сверка обновлена отдельно. + +Owned Node22/PostgreSQL18.6 profile passed19540ms:16 source SQL cases плюс проверки actual getAlertsMeta (known empty, disabled-source reasons, ambiguous server/traffic kinds),8 GRE/BGP SQL rows и actual stability;PG unavailable skips0. Временная own DB/ограниченная роль mm_accept_166_1791794042576 и test container удалены. Main fixtures/RouterOS writes/messages0. Обе production сборки прошли; source434 backend+518 frontend inputs и1012 emitted backend/contracts files совпали SHA256 (text CRLF→LF, binary unchanged). Полную UI1260/context221/backend24 regression без новой причины не повторяли. + +Развёртывание staged: frontend ux-targets171/version1.0.0-test.targets171 сначала принял реальный прежний API ux-sources170 без targetIssues; затем обновлён backend ux-targets171. На старом cached frontend строгий прежний DTO не знает additive поле: после обновления backend следует перезагрузить страницу для получения совместимого frontend. Менялись только image tags в existing.env; rollback tags сохранены отдельно без копирования secret env. Backend/PG healthy; frontend running/HTTP/browser подтверждён, отдельного healthcheck нет. Запущенные imageIds совпадают с проверенными образами; после cleanup3 основных running containers. + +2 real UI1440/320 показали настоящий CHR warning:1 сгруппированная подпись,2 affected kinds, ссылка /servers, overflow/pageerrors/API writes0. Scoped axe нового блока WCAG2A/AA violations0, full WCAG certification не заявляется. Снимки просмотрены; исходные пользовательские GRE/VXLAN images сохранены без staging/revert. Настройки/имена/пароли CHR и исходные правила не менялись. + +Протоколы: [SQL/cleanup](ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json), [source](ux-ui/acceptance/alert-target-issues-source-2026-10-12.json), [compiled](ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json), [interop](ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json), [runtime](ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json), [live UI](ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json). + +Следующий172 — отдельная обнаруженная ветка: синтезированный monitoring history в alerts-service читает raw latest samples, пока не применяет enabled/freshness/current-error guards170 и требует проверки реального PG timestamp→public string на positive sample. Source finding не является уже выполненным исправлением или доказанной runtime ошибкой. Stable-ID target migration, отсутствующие цели удалённых правил, physical WAN/scale/multi-instance и реальные Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 91e0a4c2..7a7fac35 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-10 -Сервер161.104.46.222: завершён12.5.170 — source enabled/current/unknown/freshness/per-probe guards, включая169. Own PG16 source cases +GRE/BGP8/stability passed; temporary DB/role/container removed. Source433/compiled1008 parity; backend ux-sources170 healthy, frontend ux-bfd158 прежний;6 real UI/4 API reads passed, оба CHR доступны. Одноимённые server/traffic targets подавлены, имена/пароли не менялись. Следующий171 — показать неоднозначные/отключённые цели оповещений в UI и объяснить отсутствие подтверждённого сигнала;12.5 открыт. +Сервер161.104.46.222: завершён12.5.171 — объяснение неоднозначных/отключённых целей в оповещениях, ReUI Alert без vendor changes. Backend profile/42E2E/ownPG16+metadata/compiled1012/source434+518 passed;2 live warning screens/scoped axe passed. Frontend сначала проверен с old API, затем оба ux-targets171 развёрнуты;backend/PG healthy. DB/role/container удалены. Следующий172 — исправить синтезированный журнал monitoring: raw sample readers ещё игнорируют disabled/freshness и Date needs positive SQL verification;12.5 открыт. | Параметр | Проверенное состояние | | --- | --- | @@ -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-sources170 и mmapp-test/frontend:ux-bfd158; запущены | +| Образы приложения | mmapp-test/backend:ux-targets171 и mmapp-test/frontend:ux-targets171; запущены | Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example). @@ -1639,3 +1639,25 @@ Readonly production PG builder подтвердил1 группу одинако Протоколы: [SQL16/cleanup](ux-ui/acceptance/collector-sources-sql-2026-10-12.json), [source433](ux-ui/acceptance/collector-sources-source-2026-10-12.json), [compiled1008](ux-ui/acceptance/collector-sources-compiled-2026-10-12.json), [readonly production](ux-ui/acceptance/collector-sources-production-2026-10-12.json), [runtime](ux-ui/acceptance/collector-sources-runtime-2026-10-12.json), [API/UI](ux-ui/acceptance/collector-sources-deployed-2026-10-12.json). Следующий171 — понятная диагностика неоднозначных/отключённых целей оповещений: silent suppression безопасен для engine, но пользователь должен понимать причину отсутствия события. Миграция name-based rules на stable ID, scale/multi-instance/physical WAN/внешние Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. + +## 12.5.171 — понятные причины недоступности целей оповещений (2026-10-12) + +При conservative suppression170 пользователь должен понимать, почему событие не подтверждается. Добавлен чистый collectAlertTargetIssues и optional public meta.targetIssues: kind server/traffic/probe, подпись и причина ambiguous/disabled-object/disabled-source. Диагностика строится из текущих настроек внутри того же repeatable read/read only transaction, что основной overview; getters defaults не создают. Учитываются dedicated source switches, enabled REST как разрешённый availability source по конфигурации, enabled устройства/пробы, duplicate labels и fallback имени на host. Это диагностика конфигурации; она не заявляет свежесть измерений, online устройств или фактическую доставку Telegram. Поля credentials не выбираются и не публикуются. Engine правила, target representation и права не изменены. + +На /alerts добавлен существующий ReUI/shadcn Alert warning в base-nova/Frame композиции без изменения vendor files/theme. Строки доступности и трафика одной цели объединены; причина и дальнейшее действие читаются вместе. Длинный список раскрывается native details/summary клавиатурой, большой список изначально свёрнут; длинные подписи переносятся на телефоне. Ссылки ведут к серверам, пробам и сбору данных. При устранении причины warning исчезает после подтверждённого обновления; legacy API без optional поля не подменяется догадкой. Имена двух CHR и targets действующих правил автоматически не переписывались. + +| Эталон | Доработка | Проверка | +| --- | --- | --- | +| Существующие Alert и Frame проекта | Подпись → причина → понятный переход → обновление | [ПК1440](ux-ui/screens/alerts-target-issues-1440-2026-10-12.png), [телефон320](ux-ui/screens/alerts-target-issues-320-2026-10-12.png) | + +Локально прошли12 скриптов test:alerts-telegram (unit/transaction/config/queue/HTTP/JWT), application-source TypeScript, backend build и ESLint. Полный root tsc сначала захватил ignored tmp с давними test/build artifacts и выдал их ошибки; source check с исключением tmp/backend/packages прошёл, contracts/backend проверены собственной сборкой. Root tsconfig не менялся.42 unique E2E:22 readers/targets/pickers/rules/new diagnostics за44.7s;19 history/outbox/Telegram за30.6s;1 новый keyboard/long-label mobile за6.2s. Реальная отправка Telegram отсутствовала: HTTP пути подменены тестовыми receipts. Последняя проверка хронологии старым check-progress168 ожидала прежний header168; сам сохранённый historical slice имел12 dated blocks/35 существующих evidence links. Это устаревшее ожидание helper, не удаление журнала; актуальная сверка обновлена отдельно. + +Owned Node22/PostgreSQL18.6 profile passed19540ms:16 source SQL cases плюс проверки actual getAlertsMeta (known empty, disabled-source reasons, ambiguous server/traffic kinds),8 GRE/BGP SQL rows и actual stability;PG unavailable skips0. Временная own DB/ограниченная роль mm_accept_166_1791794042576 и test container удалены. Main fixtures/RouterOS writes/messages0. Обе production сборки прошли; source434 backend+518 frontend inputs и1012 emitted backend/contracts files совпали SHA256 (text CRLF→LF, binary unchanged). Полную UI1260/context221/backend24 regression без новой причины не повторяли. + +Развёртывание staged: frontend ux-targets171/version1.0.0-test.targets171 сначала принял реальный прежний API ux-sources170 без targetIssues; затем обновлён backend ux-targets171. На старом cached frontend строгий прежний DTO не знает additive поле: после обновления backend следует перезагрузить страницу для получения совместимого frontend. Менялись только image tags в existing.env; rollback tags сохранены отдельно без копирования secret env. Backend/PG healthy; frontend running/HTTP/browser подтверждён, отдельного healthcheck нет. Запущенные imageIds совпадают с проверенными образами; после cleanup3 основных running containers. + +2 real UI1440/320 показали настоящий CHR warning:1 сгруппированная подпись,2 affected kinds, ссылка /servers, overflow/pageerrors/API writes0. Scoped axe нового блока WCAG2A/AA violations0, full WCAG certification не заявляется. Снимки просмотрены; исходные пользовательские GRE/VXLAN images сохранены без staging/revert. Настройки/имена/пароли CHR и исходные правила не менялись. + +Протоколы: [SQL/cleanup](ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json), [source](ux-ui/acceptance/alert-target-issues-source-2026-10-12.json), [compiled](ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json), [interop](ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json), [runtime](ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json), [live UI](ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json). + +Следующий172 — отдельная обнаруженная ветка: синтезированный monitoring history в alerts-service читает raw latest samples, пока не применяет enabled/freshness/current-error guards170 и требует проверки реального PG timestamp→public string на positive sample. Source finding не является уже выполненным исправлением или доказанной runtime ошибкой. Stable-ID target migration, отсутствующие цели удалённых правил, physical WAN/scale/multi-instance и реальные Telegram/Portal/client OS остаются отдельными условиями12.5. Локальный коммит без push. diff --git a/docs/ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json new file mode 100644 index 00000000..cdac2838 --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-compiled-2026-10-12.json @@ -0,0 +1,1022 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "backendVersion": "1.0.0-test.targets171", + "normalization": "CRLF to LF", + "matched": [ + "backend/dist/config.js", + "backend/dist/config.js.map", + "backend/dist/config.d.ts", + "backend/dist/config.d.ts.map", + "backend/dist/constants/ping-probe.js", + "backend/dist/constants/ping-probe.js.map", + "backend/dist/constants/ping-probe.d.ts", + "backend/dist/constants/ping-probe.d.ts.map", + "backend/dist/db/bootstrap.js", + "backend/dist/db/bootstrap.js.map", + "backend/dist/db/bootstrap.d.ts", + "backend/dist/db/bootstrap.d.ts.map", + "backend/dist/db/index.js", + "backend/dist/db/index.js.map", + "backend/dist/db/index.d.ts", + "backend/dist/db/index.d.ts.map", + "backend/dist/db/json.js", + "backend/dist/db/json.js.map", + "backend/dist/db/json.d.ts", + "backend/dist/db/json.d.ts.map", + "backend/dist/db/migrate.js", + "backend/dist/db/migrate.js.map", + "backend/dist/db/migrate.d.ts", + "backend/dist/db/migrate.d.ts.map", + "backend/dist/db/operation-lock.js", + "backend/dist/db/operation-lock.js.map", + "backend/dist/db/operation-lock.d.ts", + "backend/dist/db/operation-lock.d.ts.map", + "backend/dist/db/partitions.js", + "backend/dist/db/partitions.js.map", + "backend/dist/db/partitions.d.ts", + "backend/dist/db/partitions.d.ts.map", + "backend/dist/db/schema.js", + "backend/dist/db/schema.js.map", + "backend/dist/db/schema.d.ts", + "backend/dist/db/schema.d.ts.map", + "backend/dist/db/sql-bind.js", + "backend/dist/db/sql-bind.js.map", + "backend/dist/db/sql-bind.d.ts", + "backend/dist/db/sql-bind.d.ts.map", + "backend/dist/db/sqlite-import.js", + "backend/dist/db/sqlite-import.js.map", + "backend/dist/db/sqlite-import.d.ts", + "backend/dist/db/sqlite-import.d.ts.map", + "backend/dist/db/traffic-flags.js", + "backend/dist/db/traffic-flags.js.map", + "backend/dist/db/traffic-flags.d.ts", + "backend/dist/db/traffic-flags.d.ts.map", + "backend/dist/index.js", + "backend/dist/index.js.map", + "backend/dist/index.d.ts", + "backend/dist/index.d.ts.map", + "backend/dist/lib/permissions.js", + "backend/dist/lib/permissions.js.map", + "backend/dist/lib/permissions.d.ts", + "backend/dist/lib/permissions.d.ts.map", + "backend/dist/managed-markers.js", + "backend/dist/managed-markers.js.map", + "backend/dist/managed-markers.d.ts", + "backend/dist/managed-markers.d.ts.map", + "backend/dist/modules/events/repository/events-repository.js", + "backend/dist/modules/events/repository/events-repository.js.map", + "backend/dist/modules/events/repository/events-repository.d.ts", + "backend/dist/modules/events/repository/events-repository.d.ts.map", + "backend/dist/modules/events/service/events-service.js", + "backend/dist/modules/events/service/events-service.js.map", + "backend/dist/modules/events/service/events-service.d.ts", + "backend/dist/modules/events/service/events-service.d.ts.map", + "backend/dist/modules/servers/mapper/servers-mapper.js", + "backend/dist/modules/servers/mapper/servers-mapper.js.map", + "backend/dist/modules/servers/mapper/servers-mapper.d.ts", + "backend/dist/modules/servers/mapper/servers-mapper.d.ts.map", + "backend/dist/modules/servers/repository/servers-repository.js", + "backend/dist/modules/servers/repository/servers-repository.js.map", + "backend/dist/modules/servers/repository/servers-repository.d.ts", + "backend/dist/modules/servers/repository/servers-repository.d.ts.map", + "backend/dist/modules/servers/service/servers-service.js", + "backend/dist/modules/servers/service/servers-service.js.map", + "backend/dist/modules/servers/service/servers-service.d.ts", + "backend/dist/modules/servers/service/servers-service.d.ts.map", + "backend/dist/modules/users/iface-type.js", + "backend/dist/modules/users/iface-type.js.map", + "backend/dist/modules/users/iface-type.d.ts", + "backend/dist/modules/users/iface-type.d.ts.map", + "backend/dist/modules/users/interface-inventory.js", + "backend/dist/modules/users/interface-inventory.js.map", + "backend/dist/modules/users/interface-inventory.d.ts", + "backend/dist/modules/users/interface-inventory.d.ts.map", + "backend/dist/modules/users/peer-bind.js", + "backend/dist/modules/users/peer-bind.js.map", + "backend/dist/modules/users/peer-bind.d.ts", + "backend/dist/modules/users/peer-bind.d.ts.map", + "backend/dist/modules/users/repository/users-repository.js", + "backend/dist/modules/users/repository/users-repository.js.map", + "backend/dist/modules/users/repository/users-repository.d.ts", + "backend/dist/modules/users/repository/users-repository.d.ts.map", + "backend/dist/modules/users/service/users-service.js", + "backend/dist/modules/users/service/users-service.js.map", + "backend/dist/modules/users/service/users-service.d.ts", + "backend/dist/modules/users/service/users-service.d.ts.map", + "backend/dist/plugins/auth.js", + "backend/dist/plugins/auth.js.map", + "backend/dist/plugins/auth.d.ts", + "backend/dist/plugins/auth.d.ts.map", + "backend/dist/plugins/database-request-gate.js", + "backend/dist/plugins/database-request-gate.js.map", + "backend/dist/plugins/database-request-gate.d.ts", + "backend/dist/plugins/database-request-gate.d.ts.map", + "backend/dist/routes/alerts.js", + "backend/dist/routes/alerts.js.map", + "backend/dist/routes/alerts.d.ts", + "backend/dist/routes/alerts.d.ts.map", + "backend/dist/routes/backups.js", + "backend/dist/routes/backups.js.map", + "backend/dist/routes/backups.d.ts", + "backend/dist/routes/backups.d.ts.map", + "backend/dist/routes/bgp.js", + "backend/dist/routes/bgp.js.map", + "backend/dist/routes/bgp.d.ts", + "backend/dist/routes/bgp.d.ts.map", + "backend/dist/routes/certificates.js", + "backend/dist/routes/certificates.js.map", + "backend/dist/routes/certificates.d.ts", + "backend/dist/routes/certificates.d.ts.map", + "backend/dist/routes/containers.js", + "backend/dist/routes/containers.js.map", + "backend/dist/routes/containers.d.ts", + "backend/dist/routes/containers.d.ts.map", + "backend/dist/routes/events.js", + "backend/dist/routes/events.js.map", + "backend/dist/routes/events.d.ts", + "backend/dist/routes/events.d.ts.map", + "backend/dist/routes/evobgp-catalog.js", + "backend/dist/routes/evobgp-catalog.js.map", + "backend/dist/routes/evobgp-catalog.d.ts", + "backend/dist/routes/evobgp-catalog.d.ts.map", + "backend/dist/routes/evobgp-settings.js", + "backend/dist/routes/evobgp-settings.js.map", + "backend/dist/routes/evobgp-settings.d.ts", + "backend/dist/routes/evobgp-settings.d.ts.map", + "backend/dist/routes/evobgp.js", + "backend/dist/routes/evobgp.js.map", + "backend/dist/routes/evobgp.d.ts", + "backend/dist/routes/evobgp.d.ts.map", + "backend/dist/routes/exec.js", + "backend/dist/routes/exec.js.map", + "backend/dist/routes/exec.d.ts", + "backend/dist/routes/exec.d.ts.map", + "backend/dist/routes/filters.js", + "backend/dist/routes/filters.js.map", + "backend/dist/routes/filters.d.ts", + "backend/dist/routes/filters.d.ts.map", + "backend/dist/routes/firewall.js", + "backend/dist/routes/firewall.js.map", + "backend/dist/routes/firewall.d.ts", + "backend/dist/routes/firewall.d.ts.map", + "backend/dist/routes/geoip.js", + "backend/dist/routes/geoip.js.map", + "backend/dist/routes/geoip.d.ts", + "backend/dist/routes/geoip.d.ts.map", + "backend/dist/routes/gre.js", + "backend/dist/routes/gre.js.map", + "backend/dist/routes/gre.d.ts", + "backend/dist/routes/gre.d.ts.map", + "backend/dist/routes/internet-path.js", + "backend/dist/routes/internet-path.js.map", + "backend/dist/routes/internet-path.d.ts", + "backend/dist/routes/internet-path.d.ts.map", + "backend/dist/routes/ipsec.js", + "backend/dist/routes/ipsec.js.map", + "backend/dist/routes/ipsec.d.ts", + "backend/dist/routes/ipsec.d.ts.map", + "backend/dist/routes/network.js", + "backend/dist/routes/network.js.map", + "backend/dist/routes/network.d.ts", + "backend/dist/routes/network.d.ts.map", + "backend/dist/routes/ospf.js", + "backend/dist/routes/ospf.js.map", + "backend/dist/routes/ospf.d.ts", + "backend/dist/routes/ospf.d.ts.map", + "backend/dist/routes/ping-probes-write.js", + "backend/dist/routes/ping-probes-write.js.map", + "backend/dist/routes/ping-probes-write.d.ts", + "backend/dist/routes/ping-probes-write.d.ts.map", + "backend/dist/routes/probes.js", + "backend/dist/routes/probes.js.map", + "backend/dist/routes/probes.d.ts", + "backend/dist/routes/probes.d.ts.map", + "backend/dist/routes/recursive-routes.js", + "backend/dist/routes/recursive-routes.js.map", + "backend/dist/routes/recursive-routes.d.ts", + "backend/dist/routes/recursive-routes.d.ts.map", + "backend/dist/routes/scheduler.js", + "backend/dist/routes/scheduler.js.map", + "backend/dist/routes/scheduler.d.ts", + "backend/dist/routes/scheduler.d.ts.map", + "backend/dist/routes/servers-api-ping.js", + "backend/dist/routes/servers-api-ping.js.map", + "backend/dist/routes/servers-api-ping.d.ts", + "backend/dist/routes/servers-api-ping.d.ts.map", + "backend/dist/routes/servers.js", + "backend/dist/routes/servers.js.map", + "backend/dist/routes/servers.d.ts", + "backend/dist/routes/servers.d.ts.map", + "backend/dist/routes/sidebar-counts.js", + "backend/dist/routes/sidebar-counts.js.map", + "backend/dist/routes/sidebar-counts.d.ts", + "backend/dist/routes/sidebar-counts.d.ts.map", + "backend/dist/routes/speed-probes-write.js", + "backend/dist/routes/speed-probes-write.js.map", + "backend/dist/routes/speed-probes-write.d.ts", + "backend/dist/routes/speed-probes-write.d.ts.map", + "backend/dist/routes/speed-test.js", + "backend/dist/routes/speed-test.js.map", + "backend/dist/routes/speed-test.d.ts", + "backend/dist/routes/speed-test.d.ts.map", + "backend/dist/routes/statistics.js", + "backend/dist/routes/statistics.js.map", + "backend/dist/routes/statistics.d.ts", + "backend/dist/routes/statistics.d.ts.map", + "backend/dist/routes/system-database.js", + "backend/dist/routes/system-database.js.map", + "backend/dist/routes/system-database.d.ts", + "backend/dist/routes/system-database.d.ts.map", + "backend/dist/routes/traffic-flow-purge.js", + "backend/dist/routes/traffic-flow-purge.js.map", + "backend/dist/routes/traffic-flow-purge.d.ts", + "backend/dist/routes/traffic-flow-purge.d.ts.map", + "backend/dist/routes/traffic-flow-settings.js", + "backend/dist/routes/traffic-flow-settings.js.map", + "backend/dist/routes/traffic-flow-settings.d.ts", + "backend/dist/routes/traffic-flow-settings.d.ts.map", + "backend/dist/routes/traffic-flow.js", + "backend/dist/routes/traffic-flow.js.map", + "backend/dist/routes/traffic-flow.d.ts", + "backend/dist/routes/traffic-flow.d.ts.map", + "backend/dist/routes/traffic.js", + "backend/dist/routes/traffic.js.map", + "backend/dist/routes/traffic.d.ts", + "backend/dist/routes/traffic.d.ts.map", + "backend/dist/routes/uptime.js", + "backend/dist/routes/uptime.js.map", + "backend/dist/routes/uptime.d.ts", + "backend/dist/routes/uptime.d.ts.map", + "backend/dist/routes/users.js", + "backend/dist/routes/users.js.map", + "backend/dist/routes/users.d.ts", + "backend/dist/routes/users.d.ts.map", + "backend/dist/routes/vxlan.js", + "backend/dist/routes/vxlan.js.map", + "backend/dist/routes/vxlan.d.ts", + "backend/dist/routes/vxlan.d.ts.map", + "backend/dist/routes/wireguard.js", + "backend/dist/routes/wireguard.js.map", + "backend/dist/routes/wireguard.d.ts", + "backend/dist/routes/wireguard.d.ts.map", + "backend/dist/scripts/migrate-sqlite-to-pg.js", + "backend/dist/scripts/migrate-sqlite-to-pg.js.map", + "backend/dist/scripts/migrate-sqlite-to-pg.d.ts", + "backend/dist/scripts/migrate-sqlite-to-pg.d.ts.map", + "backend/dist/scripts/rebuild-flow-facts.js", + "backend/dist/scripts/rebuild-flow-facts.js.map", + "backend/dist/scripts/rebuild-flow-facts.d.ts", + "backend/dist/scripts/rebuild-flow-facts.d.ts.map", + "backend/dist/services/acme-cloudflare.js", + "backend/dist/services/acme-cloudflare.js.map", + "backend/dist/services/acme-cloudflare.d.ts", + "backend/dist/services/acme-cloudflare.d.ts.map", + "backend/dist/services/alert-collector-hooks.js", + "backend/dist/services/alert-collector-hooks.js.map", + "backend/dist/services/alert-collector-hooks.d.ts", + "backend/dist/services/alert-collector-hooks.d.ts.map", + "backend/dist/services/alert-engine/bgp-signals.js", + "backend/dist/services/alert-engine/bgp-signals.js.map", + "backend/dist/services/alert-engine/bgp-signals.d.ts", + "backend/dist/services/alert-engine/bgp-signals.d.ts.map", + "backend/dist/services/alert-engine/collector-source-signals.js", + "backend/dist/services/alert-engine/collector-source-signals.js.map", + "backend/dist/services/alert-engine/collector-source-signals.d.ts", + "backend/dist/services/alert-engine/collector-source-signals.d.ts.map", + "backend/dist/services/alert-engine/confirm-stability.js", + "backend/dist/services/alert-engine/confirm-stability.js.map", + "backend/dist/services/alert-engine/confirm-stability.d.ts", + "backend/dist/services/alert-engine/confirm-stability.d.ts.map", + "backend/dist/services/alert-engine/cooldown.js", + "backend/dist/services/alert-engine/cooldown.js.map", + "backend/dist/services/alert-engine/cooldown.d.ts", + "backend/dist/services/alert-engine/cooldown.d.ts.map", + "backend/dist/services/alert-engine/decision-engine.js", + "backend/dist/services/alert-engine/decision-engine.js.map", + "backend/dist/services/alert-engine/decision-engine.d.ts", + "backend/dist/services/alert-engine/decision-engine.d.ts.map", + "backend/dist/services/alert-engine/evaluate-rule.js", + "backend/dist/services/alert-engine/evaluate-rule.js.map", + "backend/dist/services/alert-engine/evaluate-rule.d.ts", + "backend/dist/services/alert-engine/evaluate-rule.d.ts.map", + "backend/dist/services/alert-engine/gre-signals.js", + "backend/dist/services/alert-engine/gre-signals.js.map", + "backend/dist/services/alert-engine/gre-signals.d.ts", + "backend/dist/services/alert-engine/gre-signals.d.ts.map", + "backend/dist/services/alert-engine/groups.js", + "backend/dist/services/alert-engine/groups.js.map", + "backend/dist/services/alert-engine/groups.d.ts", + "backend/dist/services/alert-engine/groups.d.ts.map", + "backend/dist/services/alert-engine/outbox-execution.js", + "backend/dist/services/alert-engine/outbox-execution.js.map", + "backend/dist/services/alert-engine/outbox-execution.d.ts", + "backend/dist/services/alert-engine/outbox-execution.d.ts.map", + "backend/dist/services/alert-engine/outbox.js", + "backend/dist/services/alert-engine/outbox.js.map", + "backend/dist/services/alert-engine/outbox.d.ts", + "backend/dist/services/alert-engine/outbox.d.ts.map", + "backend/dist/services/alert-engine/prev-live-store.js", + "backend/dist/services/alert-engine/prev-live-store.js.map", + "backend/dist/services/alert-engine/prev-live-store.d.ts", + "backend/dist/services/alert-engine/prev-live-store.d.ts.map", + "backend/dist/services/alert-engine/rule-matcher.js", + "backend/dist/services/alert-engine/rule-matcher.js.map", + "backend/dist/services/alert-engine/rule-matcher.d.ts", + "backend/dist/services/alert-engine/rule-matcher.d.ts.map", + "backend/dist/services/alert-engine/run-once.js", + "backend/dist/services/alert-engine/run-once.js.map", + "backend/dist/services/alert-engine/run-once.d.ts", + "backend/dist/services/alert-engine/run-once.d.ts.map", + "backend/dist/services/alert-engine/server-signal-identity.js", + "backend/dist/services/alert-engine/server-signal-identity.js.map", + "backend/dist/services/alert-engine/server-signal-identity.d.ts", + "backend/dist/services/alert-engine/server-signal-identity.d.ts.map", + "backend/dist/services/alert-engine/signal-ingestor.js", + "backend/dist/services/alert-engine/signal-ingestor.js.map", + "backend/dist/services/alert-engine/signal-ingestor.d.ts", + "backend/dist/services/alert-engine/signal-ingestor.d.ts.map", + "backend/dist/services/alert-engine/signals-from-collectors.js", + "backend/dist/services/alert-engine/signals-from-collectors.js.map", + "backend/dist/services/alert-engine/signals-from-collectors.d.ts", + "backend/dist/services/alert-engine/signals-from-collectors.d.ts.map", + "backend/dist/services/alert-engine/snapshot.js", + "backend/dist/services/alert-engine/snapshot.js.map", + "backend/dist/services/alert-engine/snapshot.d.ts", + "backend/dist/services/alert-engine/snapshot.d.ts.map", + "backend/dist/services/alert-engine/source-watermark.js", + "backend/dist/services/alert-engine/source-watermark.js.map", + "backend/dist/services/alert-engine/source-watermark.d.ts", + "backend/dist/services/alert-engine/source-watermark.d.ts.map", + "backend/dist/services/alert-engine/state-machine.js", + "backend/dist/services/alert-engine/state-machine.js.map", + "backend/dist/services/alert-engine/state-machine.d.ts", + "backend/dist/services/alert-engine/state-machine.d.ts.map", + "backend/dist/services/alert-engine/telegram-emoji.js", + "backend/dist/services/alert-engine/telegram-emoji.js.map", + "backend/dist/services/alert-engine/telegram-emoji.d.ts", + "backend/dist/services/alert-engine/telegram-emoji.d.ts.map", + "backend/dist/services/alert-engine/types.js", + "backend/dist/services/alert-engine/types.js.map", + "backend/dist/services/alert-engine/types.d.ts", + "backend/dist/services/alert-engine/types.d.ts.map", + "backend/dist/services/alerts-config-execution.js", + "backend/dist/services/alerts-config-execution.js.map", + "backend/dist/services/alerts-config-execution.d.ts", + "backend/dist/services/alerts-config-execution.d.ts.map", + "backend/dist/services/alerts-outbox-overview.js", + "backend/dist/services/alerts-outbox-overview.js.map", + "backend/dist/services/alerts-outbox-overview.d.ts", + "backend/dist/services/alerts-outbox-overview.d.ts.map", + "backend/dist/services/alerts-outbox-retry.js", + "backend/dist/services/alerts-outbox-retry.js.map", + "backend/dist/services/alerts-outbox-retry.d.ts", + "backend/dist/services/alerts-outbox-retry.d.ts.map", + "backend/dist/services/alerts-overview.js", + "backend/dist/services/alerts-overview.js.map", + "backend/dist/services/alerts-overview.d.ts", + "backend/dist/services/alerts-overview.d.ts.map", + "backend/dist/services/alerts-revision.js", + "backend/dist/services/alerts-revision.js.map", + "backend/dist/services/alerts-revision.d.ts", + "backend/dist/services/alerts-revision.d.ts.map", + "backend/dist/services/alerts-service.js", + "backend/dist/services/alerts-service.js.map", + "backend/dist/services/alerts-service.d.ts", + "backend/dist/services/alerts-service.d.ts.map", + "backend/dist/services/alerts-telegram-delivery.js", + "backend/dist/services/alerts-telegram-delivery.js.map", + "backend/dist/services/alerts-telegram-delivery.d.ts", + "backend/dist/services/alerts-telegram-delivery.d.ts.map", + "backend/dist/services/alerts-telegram-send.js", + "backend/dist/services/alerts-telegram-send.js.map", + "backend/dist/services/alerts-telegram-send.d.ts", + "backend/dist/services/alerts-telegram-send.d.ts.map", + "backend/dist/services/alerts-telegram-settings.js", + "backend/dist/services/alerts-telegram-settings.js.map", + "backend/dist/services/alerts-telegram-settings.d.ts", + "backend/dist/services/alerts-telegram-settings.d.ts.map", + "backend/dist/services/backup-deletion.js", + "backend/dist/services/backup-deletion.js.map", + "backend/dist/services/backup-deletion.d.ts", + "backend/dist/services/backup-deletion.d.ts.map", + "backend/dist/services/backup-dto.js", + "backend/dist/services/backup-dto.js.map", + "backend/dist/services/backup-dto.d.ts", + "backend/dist/services/backup-dto.d.ts.map", + "backend/dist/services/backup-job-execution.js", + "backend/dist/services/backup-job-execution.js.map", + "backend/dist/services/backup-job-execution.d.ts", + "backend/dist/services/backup-job-execution.d.ts.map", + "backend/dist/services/backup-prune.js", + "backend/dist/services/backup-prune.js.map", + "backend/dist/services/backup-prune.d.ts", + "backend/dist/services/backup-prune.d.ts.map", + "backend/dist/services/backup-restore.js", + "backend/dist/services/backup-restore.js.map", + "backend/dist/services/backup-restore.d.ts", + "backend/dist/services/backup-restore.d.ts.map", + "backend/dist/services/backup-scheduler-collector.js", + "backend/dist/services/backup-scheduler-collector.js.map", + "backend/dist/services/backup-scheduler-collector.d.ts", + "backend/dist/services/backup-scheduler-collector.d.ts.map", + "backend/dist/services/backup-scheduler-run.js", + "backend/dist/services/backup-scheduler-run.js.map", + "backend/dist/services/backup-scheduler-run.d.ts", + "backend/dist/services/backup-scheduler-run.d.ts.map", + "backend/dist/services/backup-service.js", + "backend/dist/services/backup-service.js.map", + "backend/dist/services/backup-service.d.ts", + "backend/dist/services/backup-service.d.ts.map", + "backend/dist/services/backup-storage-update.js", + "backend/dist/services/backup-storage-update.js.map", + "backend/dist/services/backup-storage-update.d.ts", + "backend/dist/services/backup-storage-update.d.ts.map", + "backend/dist/services/bandwidth-test-rates.js", + "backend/dist/services/bandwidth-test-rates.js.map", + "backend/dist/services/bandwidth-test-rates.d.ts", + "backend/dist/services/bandwidth-test-rates.d.ts.map", + "backend/dist/services/bandwidth-test-status.js", + "backend/dist/services/bandwidth-test-status.js.map", + "backend/dist/services/bandwidth-test-status.d.ts", + "backend/dist/services/bandwidth-test-status.d.ts.map", + "backend/dist/services/bgp-catalog-poll.js", + "backend/dist/services/bgp-catalog-poll.js.map", + "backend/dist/services/bgp-catalog-poll.d.ts", + "backend/dist/services/bgp-catalog-poll.d.ts.map", + "backend/dist/services/bgp-parse-sessions.js", + "backend/dist/services/bgp-parse-sessions.js.map", + "backend/dist/services/bgp-parse-sessions.d.ts", + "backend/dist/services/bgp-parse-sessions.d.ts.map", + "backend/dist/services/bgp-peers-live.js", + "backend/dist/services/bgp-peers-live.js.map", + "backend/dist/services/bgp-peers-live.d.ts", + "backend/dist/services/bgp-peers-live.d.ts.map", + "backend/dist/services/btest-node-locks.js", + "backend/dist/services/btest-node-locks.js.map", + "backend/dist/services/btest-node-locks.d.ts", + "backend/dist/services/btest-node-locks.d.ts.map", + "backend/dist/services/certificate-issue-dto.js", + "backend/dist/services/certificate-issue-dto.js.map", + "backend/dist/services/certificate-issue-dto.d.ts", + "backend/dist/services/certificate-issue-dto.d.ts.map", + "backend/dist/services/certificate-issue-execution.js", + "backend/dist/services/certificate-issue-execution.js.map", + "backend/dist/services/certificate-issue-execution.d.ts", + "backend/dist/services/certificate-issue-execution.d.ts.map", + "backend/dist/services/certificate-issue-request.js", + "backend/dist/services/certificate-issue-request.js.map", + "backend/dist/services/certificate-issue-request.d.ts", + "backend/dist/services/certificate-issue-request.d.ts.map", + "backend/dist/services/certificate-issue-runner.js", + "backend/dist/services/certificate-issue-runner.js.map", + "backend/dist/services/certificate-issue-runner.d.ts", + "backend/dist/services/certificate-issue-runner.d.ts.map", + "backend/dist/services/certificate-parse.js", + "backend/dist/services/certificate-parse.js.map", + "backend/dist/services/certificate-parse.d.ts", + "backend/dist/services/certificate-parse.d.ts.map", + "backend/dist/services/certificate-renew-collector.js", + "backend/dist/services/certificate-renew-collector.js.map", + "backend/dist/services/certificate-renew-collector.d.ts", + "backend/dist/services/certificate-renew-collector.d.ts.map", + "backend/dist/services/certificates-service.js", + "backend/dist/services/certificates-service.js.map", + "backend/dist/services/certificates-service.d.ts", + "backend/dist/services/certificates-service.d.ts.map", + "backend/dist/services/certificates-state.js", + "backend/dist/services/certificates-state.js.map", + "backend/dist/services/certificates-state.d.ts", + "backend/dist/services/certificates-state.d.ts.map", + "backend/dist/services/complete-count.js", + "backend/dist/services/complete-count.js.map", + "backend/dist/services/complete-count.d.ts", + "backend/dist/services/complete-count.d.ts.map", + "backend/dist/services/config-apply-plan.js", + "backend/dist/services/config-apply-plan.js.map", + "backend/dist/services/config-apply-plan.d.ts", + "backend/dist/services/config-apply-plan.d.ts.map", + "backend/dist/services/config-revisions.js", + "backend/dist/services/config-revisions.js.map", + "backend/dist/services/config-revisions.d.ts", + "backend/dist/services/config-revisions.d.ts.map", + "backend/dist/services/containers-live.js", + "backend/dist/services/containers-live.js.map", + "backend/dist/services/containers-live.d.ts", + "backend/dist/services/containers-live.d.ts.map", + "backend/dist/services/containers-state.js", + "backend/dist/services/containers-state.js.map", + "backend/dist/services/containers-state.d.ts", + "backend/dist/services/containers-state.d.ts.map", + "backend/dist/services/database-background-work.js", + "backend/dist/services/database-background-work.js.map", + "backend/dist/services/database-background-work.d.ts", + "backend/dist/services/database-background-work.d.ts.map", + "backend/dist/services/database-request-gate.js", + "backend/dist/services/database-request-gate.js.map", + "backend/dist/services/database-request-gate.d.ts", + "backend/dist/services/database-request-gate.d.ts.map", + "backend/dist/services/entity-snapshots.js", + "backend/dist/services/entity-snapshots.js.map", + "backend/dist/services/entity-snapshots.d.ts", + "backend/dist/services/entity-snapshots.d.ts.map", + "backend/dist/services/evobgp-catalog.js", + "backend/dist/services/evobgp-catalog.js.map", + "backend/dist/services/evobgp-catalog.d.ts", + "backend/dist/services/evobgp-catalog.d.ts.map", + "backend/dist/services/firewall-live.js", + "backend/dist/services/firewall-live.js.map", + "backend/dist/services/firewall-live.d.ts", + "backend/dist/services/firewall-live.d.ts.map", + "backend/dist/services/firewall-poll.js", + "backend/dist/services/firewall-poll.js.map", + "backend/dist/services/firewall-poll.d.ts", + "backend/dist/services/firewall-poll.d.ts.map", + "backend/dist/services/geoip-settings.js", + "backend/dist/services/geoip-settings.js.map", + "backend/dist/services/geoip-settings.d.ts", + "backend/dist/services/geoip-settings.d.ts.map", + "backend/dist/services/geoip-update-collector.js", + "backend/dist/services/geoip-update-collector.js.map", + "backend/dist/services/geoip-update-collector.d.ts", + "backend/dist/services/geoip-update-collector.d.ts.map", + "backend/dist/services/gre-bgp-snapshot-collector.js", + "backend/dist/services/gre-bgp-snapshot-collector.js.map", + "backend/dist/services/gre-bgp-snapshot-collector.d.ts", + "backend/dist/services/gre-bgp-snapshot-collector.d.ts.map", + "backend/dist/services/gre-bgp-snapshot-history.js", + "backend/dist/services/gre-bgp-snapshot-history.js.map", + "backend/dist/services/gre-bgp-snapshot-history.d.ts", + "backend/dist/services/gre-bgp-snapshot-history.d.ts.map", + "backend/dist/services/gre-bgp-timing.js", + "backend/dist/services/gre-bgp-timing.js.map", + "backend/dist/services/gre-bgp-timing.d.ts", + "backend/dist/services/gre-bgp-timing.d.ts.map", + "backend/dist/services/gre-catalog-poll.js", + "backend/dist/services/gre-catalog-poll.js.map", + "backend/dist/services/gre-catalog-poll.d.ts", + "backend/dist/services/gre-catalog-poll.d.ts.map", + "backend/dist/services/gre-comment.js", + "backend/dist/services/gre-comment.js.map", + "backend/dist/services/gre-comment.d.ts", + "backend/dist/services/gre-comment.d.ts.map", + "backend/dist/services/gre-live.js", + "backend/dist/services/gre-live.js.map", + "backend/dist/services/gre-live.d.ts", + "backend/dist/services/gre-live.d.ts.map", + "backend/dist/services/gre-tunnels-live.js", + "backend/dist/services/gre-tunnels-live.js.map", + "backend/dist/services/gre-tunnels-live.d.ts", + "backend/dist/services/gre-tunnels-live.d.ts.map", + "backend/dist/services/internet-path-collector.js", + "backend/dist/services/internet-path-collector.js.map", + "backend/dist/services/internet-path-collector.d.ts", + "backend/dist/services/internet-path-collector.d.ts.map", + "backend/dist/services/internet-path-snapshot.js", + "backend/dist/services/internet-path-snapshot.js.map", + "backend/dist/services/internet-path-snapshot.d.ts", + "backend/dist/services/internet-path-snapshot.d.ts.map", + "backend/dist/services/ipsec-ca.js", + "backend/dist/services/ipsec-ca.js.map", + "backend/dist/services/ipsec-ca.d.ts", + "backend/dist/services/ipsec-ca.d.ts.map", + "backend/dist/services/ipsec-certificate-dn.js", + "backend/dist/services/ipsec-certificate-dn.js.map", + "backend/dist/services/ipsec-certificate-dn.d.ts", + "backend/dist/services/ipsec-certificate-dn.d.ts.map", + "backend/dist/services/ipsec-cleanup.js", + "backend/dist/services/ipsec-cleanup.js.map", + "backend/dist/services/ipsec-cleanup.d.ts", + "backend/dist/services/ipsec-cleanup.d.ts.map", + "backend/dist/services/ipsec-config.js", + "backend/dist/services/ipsec-config.js.map", + "backend/dist/services/ipsec-config.d.ts", + "backend/dist/services/ipsec-config.d.ts.map", + "backend/dist/services/ipsec-live.js", + "backend/dist/services/ipsec-live.js.map", + "backend/dist/services/ipsec-live.d.ts", + "backend/dist/services/ipsec-live.d.ts.map", + "backend/dist/services/ipsec-operation.js", + "backend/dist/services/ipsec-operation.js.map", + "backend/dist/services/ipsec-operation.d.ts", + "backend/dist/services/ipsec-operation.d.ts.map", + "backend/dist/services/ipsec-ros.js", + "backend/dist/services/ipsec-ros.js.map", + "backend/dist/services/ipsec-ros.d.ts", + "backend/dist/services/ipsec-ros.d.ts.map", + "backend/dist/services/mikrotik.js", + "backend/dist/services/mikrotik.js.map", + "backend/dist/services/mikrotik.d.ts", + "backend/dist/services/mikrotik.d.ts.map", + "backend/dist/services/monitoring-server-catalog.js", + "backend/dist/services/monitoring-server-catalog.js.map", + "backend/dist/services/monitoring-server-catalog.d.ts", + "backend/dist/services/monitoring-server-catalog.d.ts.map", + "backend/dist/services/ospf-catalog-poll.js", + "backend/dist/services/ospf-catalog-poll.js.map", + "backend/dist/services/ospf-catalog-poll.d.ts", + "backend/dist/services/ospf-catalog-poll.d.ts.map", + "backend/dist/services/ospf-effective-disabled.js", + "backend/dist/services/ospf-effective-disabled.js.map", + "backend/dist/services/ospf-effective-disabled.d.ts", + "backend/dist/services/ospf-effective-disabled.d.ts.map", + "backend/dist/services/ospf-observed-values.js", + "backend/dist/services/ospf-observed-values.js.map", + "backend/dist/services/ospf-observed-values.d.ts", + "backend/dist/services/ospf-observed-values.d.ts.map", + "backend/dist/services/ospf-optimizer-identity.js", + "backend/dist/services/ospf-optimizer-identity.js.map", + "backend/dist/services/ospf-optimizer-identity.d.ts", + "backend/dist/services/ospf-optimizer-identity.d.ts.map", + "backend/dist/services/ospf-optimizer-metrics.js", + "backend/dist/services/ospf-optimizer-metrics.js.map", + "backend/dist/services/ospf-optimizer-metrics.d.ts", + "backend/dist/services/ospf-optimizer-metrics.d.ts.map", + "backend/dist/services/ospf-optimizer-plan.js", + "backend/dist/services/ospf-optimizer-plan.js.map", + "backend/dist/services/ospf-optimizer-plan.d.ts", + "backend/dist/services/ospf-optimizer-plan.d.ts.map", + "backend/dist/services/ospf-route-parse.js", + "backend/dist/services/ospf-route-parse.js.map", + "backend/dist/services/ospf-route-parse.d.ts", + "backend/dist/services/ospf-route-parse.d.ts.map", + "backend/dist/services/ping-probe-replacement.js", + "backend/dist/services/ping-probe-replacement.js.map", + "backend/dist/services/ping-probe-replacement.d.ts", + "backend/dist/services/ping-probe-replacement.d.ts.map", + "backend/dist/services/poller.js", + "backend/dist/services/poller.js.map", + "backend/dist/services/poller.d.ts", + "backend/dist/services/poller.d.ts.map", + "backend/dist/services/recursive-apply.js", + "backend/dist/services/recursive-apply.js.map", + "backend/dist/services/recursive-apply.d.ts", + "backend/dist/services/recursive-apply.d.ts.map", + "backend/dist/services/recursive-route-catalog.js", + "backend/dist/services/recursive-route-catalog.js.map", + "backend/dist/services/recursive-route-catalog.d.ts", + "backend/dist/services/recursive-route-catalog.d.ts.map", + "backend/dist/services/recursive-route-validation.js", + "backend/dist/services/recursive-route-validation.js.map", + "backend/dist/services/recursive-route-validation.d.ts", + "backend/dist/services/recursive-route-validation.d.ts.map", + "backend/dist/services/ros-metric-parse.js", + "backend/dist/services/ros-metric-parse.js.map", + "backend/dist/services/ros-metric-parse.d.ts", + "backend/dist/services/ros-metric-parse.d.ts.map", + "backend/dist/services/ros-ops.js", + "backend/dist/services/ros-ops.js.map", + "backend/dist/services/ros-ops.d.ts", + "backend/dist/services/ros-ops.d.ts.map", + "backend/dist/services/s3-backup-client.js", + "backend/dist/services/s3-backup-client.js.map", + "backend/dist/services/s3-backup-client.d.ts", + "backend/dist/services/s3-backup-client.d.ts.map", + "backend/dist/services/scheduler-recorded-run.js", + "backend/dist/services/scheduler-recorded-run.js.map", + "backend/dist/services/scheduler-recorded-run.d.ts", + "backend/dist/services/scheduler-recorded-run.d.ts.map", + "backend/dist/services/scheduler-running.js", + "backend/dist/services/scheduler-running.js.map", + "backend/dist/services/scheduler-running.d.ts", + "backend/dist/services/scheduler-running.d.ts.map", + "backend/dist/services/scheduler.js", + "backend/dist/services/scheduler.js.map", + "backend/dist/services/scheduler.d.ts", + "backend/dist/services/scheduler.d.ts.map", + "backend/dist/services/serial-operation.js", + "backend/dist/services/serial-operation.js.map", + "backend/dist/services/serial-operation.d.ts", + "backend/dist/services/serial-operation.d.ts.map", + "backend/dist/services/servers-rest-ping-collector.js", + "backend/dist/services/servers-rest-ping-collector.js.map", + "backend/dist/services/servers-rest-ping-collector.d.ts", + "backend/dist/services/servers-rest-ping-collector.d.ts.map", + "backend/dist/services/speed-history-dto.js", + "backend/dist/services/speed-history-dto.js.map", + "backend/dist/services/speed-history-dto.d.ts", + "backend/dist/services/speed-history-dto.d.ts.map", + "backend/dist/services/speed-probe-dto.js", + "backend/dist/services/speed-probe-dto.js.map", + "backend/dist/services/speed-probe-dto.d.ts", + "backend/dist/services/speed-probe-dto.d.ts.map", + "backend/dist/services/speed-probe-replacement.js", + "backend/dist/services/speed-probe-replacement.js.map", + "backend/dist/services/speed-probe-replacement.d.ts", + "backend/dist/services/speed-probe-replacement.d.ts.map", + "backend/dist/services/speed-run-error-message.js", + "backend/dist/services/speed-run-error-message.js.map", + "backend/dist/services/speed-run-error-message.d.ts", + "backend/dist/services/speed-run-error-message.d.ts.map", + "backend/dist/services/speed-run-persistence.js", + "backend/dist/services/speed-run-persistence.js.map", + "backend/dist/services/speed-run-persistence.d.ts", + "backend/dist/services/speed-run-persistence.d.ts.map", + "backend/dist/services/statistics-aggregate.js", + "backend/dist/services/statistics-aggregate.js.map", + "backend/dist/services/statistics-aggregate.d.ts", + "backend/dist/services/statistics-aggregate.d.ts.map", + "backend/dist/services/system-database-backup.js", + "backend/dist/services/system-database-backup.js.map", + "backend/dist/services/system-database-backup.d.ts", + "backend/dist/services/system-database-backup.d.ts.map", + "backend/dist/services/system-database-cache.js", + "backend/dist/services/system-database-cache.js.map", + "backend/dist/services/system-database-cache.d.ts", + "backend/dist/services/system-database-cache.d.ts.map", + "backend/dist/services/system-database-operation.js", + "backend/dist/services/system-database-operation.js.map", + "backend/dist/services/system-database-operation.d.ts", + "backend/dist/services/system-database-operation.d.ts.map", + "backend/dist/services/system-database-partition-restore.js", + "backend/dist/services/system-database-partition-restore.js.map", + "backend/dist/services/system-database-partition-restore.d.ts", + "backend/dist/services/system-database-partition-restore.d.ts.map", + "backend/dist/services/system-database-restore-execution.js", + "backend/dist/services/system-database-restore-execution.js.map", + "backend/dist/services/system-database-restore-execution.d.ts", + "backend/dist/services/system-database-restore-execution.d.ts.map", + "backend/dist/services/traffic-collector.js", + "backend/dist/services/traffic-collector.js.map", + "backend/dist/services/traffic-collector.d.ts", + "backend/dist/services/traffic-collector.d.ts.map", + "backend/dist/services/traffic-flow-analytics.js", + "backend/dist/services/traffic-flow-analytics.js.map", + "backend/dist/services/traffic-flow-analytics.d.ts", + "backend/dist/services/traffic-flow-analytics.d.ts.map", + "backend/dist/services/traffic-flow-apps.js", + "backend/dist/services/traffic-flow-apps.js.map", + "backend/dist/services/traffic-flow-apps.d.ts", + "backend/dist/services/traffic-flow-apps.d.ts.map", + "backend/dist/services/traffic-flow-brands.js", + "backend/dist/services/traffic-flow-brands.js.map", + "backend/dist/services/traffic-flow-brands.d.ts", + "backend/dist/services/traffic-flow-brands.d.ts.map", + "backend/dist/services/traffic-flow-classify.js", + "backend/dist/services/traffic-flow-classify.js.map", + "backend/dist/services/traffic-flow-classify.d.ts", + "backend/dist/services/traffic-flow-classify.d.ts.map", + "backend/dist/services/traffic-flow-collector-ipc.js", + "backend/dist/services/traffic-flow-collector-ipc.js.map", + "backend/dist/services/traffic-flow-collector-ipc.d.ts", + "backend/dist/services/traffic-flow-collector-ipc.d.ts.map", + "backend/dist/services/traffic-flow-collector-worker.js", + "backend/dist/services/traffic-flow-collector-worker.js.map", + "backend/dist/services/traffic-flow-collector-worker.d.ts", + "backend/dist/services/traffic-flow-collector-worker.d.ts.map", + "backend/dist/services/traffic-flow-dedup.js", + "backend/dist/services/traffic-flow-dedup.js.map", + "backend/dist/services/traffic-flow-dedup.d.ts", + "backend/dist/services/traffic-flow-dedup.d.ts.map", + "backend/dist/services/traffic-flow-dest.js", + "backend/dist/services/traffic-flow-dest.js.map", + "backend/dist/services/traffic-flow-dest.d.ts", + "backend/dist/services/traffic-flow-dest.d.ts.map", + "backend/dist/services/traffic-flow-engine.js", + "backend/dist/services/traffic-flow-engine.js.map", + "backend/dist/services/traffic-flow-engine.d.ts", + "backend/dist/services/traffic-flow-engine.d.ts.map", + "backend/dist/services/traffic-flow-facts-filter.js", + "backend/dist/services/traffic-flow-facts-filter.js.map", + "backend/dist/services/traffic-flow-facts-filter.d.ts", + "backend/dist/services/traffic-flow-facts-filter.d.ts.map", + "backend/dist/services/traffic-flow-facts-rebuild.js", + "backend/dist/services/traffic-flow-facts-rebuild.js.map", + "backend/dist/services/traffic-flow-facts-rebuild.d.ts", + "backend/dist/services/traffic-flow-facts-rebuild.d.ts.map", + "backend/dist/services/traffic-flow-facts.js", + "backend/dist/services/traffic-flow-facts.js.map", + "backend/dist/services/traffic-flow-facts.d.ts", + "backend/dist/services/traffic-flow-facts.d.ts.map", + "backend/dist/services/traffic-flow-geoip.js", + "backend/dist/services/traffic-flow-geoip.js.map", + "backend/dist/services/traffic-flow-geoip.d.ts", + "backend/dist/services/traffic-flow-geoip.d.ts.map", + "backend/dist/services/traffic-flow-host-file-builders.js", + "backend/dist/services/traffic-flow-host-file-builders.js.map", + "backend/dist/services/traffic-flow-host-file-builders.d.ts", + "backend/dist/services/traffic-flow-host-file-builders.d.ts.map", + "backend/dist/services/traffic-flow-host-files.js", + "backend/dist/services/traffic-flow-host-files.js.map", + "backend/dist/services/traffic-flow-host-files.d.ts", + "backend/dist/services/traffic-flow-host-files.d.ts.map", + "backend/dist/services/traffic-flow-ifaces.js", + "backend/dist/services/traffic-flow-ifaces.js.map", + "backend/dist/services/traffic-flow-ifaces.d.ts", + "backend/dist/services/traffic-flow-ifaces.d.ts.map", + "backend/dist/services/traffic-flow-ifindex.js", + "backend/dist/services/traffic-flow-ifindex.js.map", + "backend/dist/services/traffic-flow-ifindex.d.ts", + "backend/dist/services/traffic-flow-ifindex.d.ts.map", + "backend/dist/services/traffic-flow-ingest.js", + "backend/dist/services/traffic-flow-ingest.js.map", + "backend/dist/services/traffic-flow-ingest.d.ts", + "backend/dist/services/traffic-flow-ingest.d.ts.map", + "backend/dist/services/traffic-flow-ip.js", + "backend/dist/services/traffic-flow-ip.js.map", + "backend/dist/services/traffic-flow-ip.d.ts", + "backend/dist/services/traffic-flow-ip.d.ts.map", + "backend/dist/services/traffic-flow-key-execution.js", + "backend/dist/services/traffic-flow-key-execution.js.map", + "backend/dist/services/traffic-flow-key-execution.d.ts", + "backend/dist/services/traffic-flow-key-execution.d.ts.map", + "backend/dist/services/traffic-flow-map-exporter.js", + "backend/dist/services/traffic-flow-map-exporter.js.map", + "backend/dist/services/traffic-flow-map-exporter.d.ts", + "backend/dist/services/traffic-flow-map-exporter.d.ts.map", + "backend/dist/services/traffic-flow-map-hops.js", + "backend/dist/services/traffic-flow-map-hops.js.map", + "backend/dist/services/traffic-flow-map-hops.d.ts", + "backend/dist/services/traffic-flow-map-hops.d.ts.map", + "backend/dist/services/traffic-flow-overlay.js", + "backend/dist/services/traffic-flow-overlay.js.map", + "backend/dist/services/traffic-flow-overlay.d.ts", + "backend/dist/services/traffic-flow-overlay.d.ts.map", + "backend/dist/services/traffic-flow-parse.js", + "backend/dist/services/traffic-flow-parse.js.map", + "backend/dist/services/traffic-flow-parse.d.ts", + "backend/dist/services/traffic-flow-parse.d.ts.map", + "backend/dist/services/traffic-flow-planes.js", + "backend/dist/services/traffic-flow-planes.js.map", + "backend/dist/services/traffic-flow-planes.d.ts", + "backend/dist/services/traffic-flow-planes.d.ts.map", + "backend/dist/services/traffic-flow-purge-execution.js", + "backend/dist/services/traffic-flow-purge-execution.js.map", + "backend/dist/services/traffic-flow-purge-execution.d.ts", + "backend/dist/services/traffic-flow-purge-execution.d.ts.map", + "backend/dist/services/traffic-flow-ripe.js", + "backend/dist/services/traffic-flow-ripe.js.map", + "backend/dist/services/traffic-flow-ripe.d.ts", + "backend/dist/services/traffic-flow-ripe.d.ts.map", + "backend/dist/services/traffic-flow-settings.js", + "backend/dist/services/traffic-flow-settings.js.map", + "backend/dist/services/traffic-flow-settings.d.ts", + "backend/dist/services/traffic-flow-settings.d.ts.map", + "backend/dist/services/traffic-flow-topology.js", + "backend/dist/services/traffic-flow-topology.js.map", + "backend/dist/services/traffic-flow-topology.d.ts", + "backend/dist/services/traffic-flow-topology.d.ts.map", + "backend/dist/services/traffic-flow-worker-shutdown.js", + "backend/dist/services/traffic-flow-worker-shutdown.js.map", + "backend/dist/services/traffic-flow-worker-shutdown.d.ts", + "backend/dist/services/traffic-flow-worker-shutdown.d.ts.map", + "backend/dist/services/traffic-rate.js", + "backend/dist/services/traffic-rate.js.map", + "backend/dist/services/traffic-rate.d.ts", + "backend/dist/services/traffic-rate.d.ts.map", + "backend/dist/services/traffic-users.js", + "backend/dist/services/traffic-users.js.map", + "backend/dist/services/traffic-users.d.ts", + "backend/dist/services/traffic-users.d.ts.map", + "backend/dist/services/uptime-collector.js", + "backend/dist/services/uptime-collector.js.map", + "backend/dist/services/uptime-collector.d.ts", + "backend/dist/services/uptime-collector.d.ts.map", + "backend/dist/services/uptime-probe-observations.js", + "backend/dist/services/uptime-probe-observations.js.map", + "backend/dist/services/uptime-probe-observations.d.ts", + "backend/dist/services/uptime-probe-observations.d.ts.map", + "backend/dist/services/uptime-speed-service.js", + "backend/dist/services/uptime-speed-service.js.map", + "backend/dist/services/uptime-speed-service.d.ts", + "backend/dist/services/uptime-speed-service.d.ts.map", + "backend/dist/services/vxlan-live.js", + "backend/dist/services/vxlan-live.js.map", + "backend/dist/services/vxlan-live.d.ts", + "backend/dist/services/vxlan-live.d.ts.map", + "backend/dist/services/wg-keys.js", + "backend/dist/services/wg-keys.js.map", + "backend/dist/services/wg-keys.d.ts", + "backend/dist/services/wg-keys.d.ts.map", + "backend/dist/services/wireguard-config.js", + "backend/dist/services/wireguard-config.js.map", + "backend/dist/services/wireguard-config.d.ts", + "backend/dist/services/wireguard-config.d.ts.map", + "backend/dist/services/wireguard-delete.js", + "backend/dist/services/wireguard-delete.js.map", + "backend/dist/services/wireguard-delete.d.ts", + "backend/dist/services/wireguard-delete.d.ts.map", + "backend/dist/services/wireguard-import-apply.js", + "backend/dist/services/wireguard-import-apply.js.map", + "backend/dist/services/wireguard-import-apply.d.ts", + "backend/dist/services/wireguard-import-apply.d.ts.map", + "backend/dist/services/wireguard-import-revision.js", + "backend/dist/services/wireguard-import-revision.js.map", + "backend/dist/services/wireguard-import-revision.d.ts", + "backend/dist/services/wireguard-import-revision.d.ts.map", + "backend/dist/services/wireguard-import.js", + "backend/dist/services/wireguard-import.js.map", + "backend/dist/services/wireguard-import.d.ts", + "backend/dist/services/wireguard-import.d.ts.map", + "backend/dist/services/wireguard-live.js", + "backend/dist/services/wireguard-live.js.map", + "backend/dist/services/wireguard-live.d.ts", + "backend/dist/services/wireguard-live.d.ts.map", + "backend/dist/services/wireguard-observed-values.js", + "backend/dist/services/wireguard-observed-values.js.map", + "backend/dist/services/wireguard-observed-values.d.ts", + "backend/dist/services/wireguard-observed-values.d.ts.map", + "backend/dist/services/wireguard-ros.js", + "backend/dist/services/wireguard-ros.js.map", + "backend/dist/services/wireguard-ros.d.ts", + "backend/dist/services/wireguard-ros.d.ts.map", + "backend/dist/test/pg.js", + "backend/dist/test/pg.js.map", + "backend/dist/test/pg.d.ts", + "backend/dist/test/pg.d.ts.map", + "backend/dist/types/scheduler-run-snapshot.js", + "backend/dist/types/scheduler-run-snapshot.js.map", + "backend/dist/types/scheduler-run-snapshot.d.ts", + "backend/dist/types/scheduler-run-snapshot.d.ts.map", + "backend/dist/types/server.js", + "backend/dist/types/server.js.map", + "backend/dist/types/server.d.ts", + "backend/dist/types/server.d.ts.map", + "backend/dist/utils/abort-signals.js", + "backend/dist/utils/abort-signals.js.map", + "backend/dist/utils/abort-signals.d.ts", + "backend/dist/utils/abort-signals.d.ts.map", + "backend/dist/utils/ros-src-address.js", + "backend/dist/utils/ros-src-address.js.map", + "backend/dist/utils/ros-src-address.d.ts", + "backend/dist/utils/ros-src-address.d.ts.map", + "backend/dist/utils/server-id.js", + "backend/dist/utils/server-id.js.map", + "backend/dist/utils/server-id.d.ts", + "backend/dist/utils/server-id.d.ts.map", + "packages/contracts/dist/alerts.js", + "packages/contracts/dist/alerts.js.map", + "packages/contracts/dist/alerts.d.ts", + "packages/contracts/dist/alerts.d.ts.map", + "packages/contracts/dist/backups.js", + "packages/contracts/dist/backups.js.map", + "packages/contracts/dist/backups.d.ts", + "packages/contracts/dist/backups.d.ts.map", + "packages/contracts/dist/certificates.js", + "packages/contracts/dist/certificates.js.map", + "packages/contracts/dist/certificates.d.ts", + "packages/contracts/dist/certificates.d.ts.map", + "packages/contracts/dist/containers.js", + "packages/contracts/dist/containers.js.map", + "packages/contracts/dist/containers.d.ts", + "packages/contracts/dist/containers.d.ts.map", + "packages/contracts/dist/events.js", + "packages/contracts/dist/events.js.map", + "packages/contracts/dist/events.d.ts", + "packages/contracts/dist/events.d.ts.map", + "packages/contracts/dist/evobgp.js", + "packages/contracts/dist/evobgp.js.map", + "packages/contracts/dist/evobgp.d.ts", + "packages/contracts/dist/evobgp.d.ts.map", + "packages/contracts/dist/geoip.js", + "packages/contracts/dist/geoip.js.map", + "packages/contracts/dist/geoip.d.ts", + "packages/contracts/dist/geoip.d.ts.map", + "packages/contracts/dist/index.js", + "packages/contracts/dist/index.js.map", + "packages/contracts/dist/index.d.ts", + "packages/contracts/dist/index.d.ts.map", + "packages/contracts/dist/ipsec.js", + "packages/contracts/dist/ipsec.js.map", + "packages/contracts/dist/ipsec.d.ts", + "packages/contracts/dist/ipsec.d.ts.map", + "packages/contracts/dist/ospf-optimizer.js", + "packages/contracts/dist/ospf-optimizer.js.map", + "packages/contracts/dist/ospf-optimizer.d.ts", + "packages/contracts/dist/ospf-optimizer.d.ts.map", + "packages/contracts/dist/servers.js", + "packages/contracts/dist/servers.js.map", + "packages/contracts/dist/servers.d.ts", + "packages/contracts/dist/servers.d.ts.map", + "packages/contracts/dist/statistics.js", + "packages/contracts/dist/statistics.js.map", + "packages/contracts/dist/statistics.d.ts", + "packages/contracts/dist/statistics.d.ts.map", + "packages/contracts/dist/traffic-flow.js", + "packages/contracts/dist/traffic-flow.js.map", + "packages/contracts/dist/traffic-flow.d.ts", + "packages/contracts/dist/traffic-flow.d.ts.map", + "packages/contracts/dist/uptime-probes.js", + "packages/contracts/dist/uptime-probes.js.map", + "packages/contracts/dist/uptime-probes.d.ts", + "packages/contracts/dist/uptime-probes.d.ts.map", + "packages/contracts/dist/uptime-speed.js", + "packages/contracts/dist/uptime-speed.js.map", + "packages/contracts/dist/uptime-speed.d.ts", + "packages/contracts/dist/uptime-speed.d.ts.map", + "packages/contracts/dist/users.js", + "packages/contracts/dist/users.js.map", + "packages/contracts/dist/users.d.ts", + "packages/contracts/dist/users.d.ts.map", + "packages/contracts/dist/wireguard.js", + "packages/contracts/dist/wireguard.js.map", + "packages/contracts/dist/wireguard.d.ts", + "packages/contracts/dist/wireguard.d.ts.map", + "backend/dist/services/alert-engine/target-issues.js", + "backend/dist/services/alert-engine/target-issues.js.map", + "backend/dist/services/alert-engine/target-issues.d.ts", + "backend/dist/services/alert-engine/target-issues.d.ts.map" + ], + "missing": [], + "different": [] +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json new file mode 100644 index 00000000..398859f6 --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-deployed-2026-10-12.json @@ -0,0 +1,39 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "runtime": { + "backend": "ux-targets171", + "frontend": "ux-targets171" + }, + "api200": true, + "ambiguousKindCount": 2, + "cases": [ + { + "width": 1440, + "warningVisible": true, + "duplicateGrouped": true, + "serverLink": true, + "noOverflow": true, + "scopedAxeViolations": [], + "pageErrors": [], + "apiWrites": [], + "screenshot": "docs/ux-ui/screens/alerts-target-issues-1440-2026-10-12.png" + }, + { + "width": 320, + "warningVisible": true, + "duplicateGrouped": true, + "serverLink": true, + "noOverflow": true, + "scopedAxeViolations": [], + "pageErrors": [], + "apiWrites": [], + "screenshot": "docs/ux-ui/screens/alerts-target-issues-320-2026-10-12.png" + } + ], + "bounds": [ + "Read-only real duplicate CHR metadata; no rename/native mutation/password change/message", + "Scoped axe of new warning is not full WCAG certification", + "Disabled configuration covered by owned SQL and API-path UI fixtures; live configuration preserved" + ] +} diff --git a/docs/ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json new file mode 100644 index 00000000..4e700296 --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-interop-2026-10-12.json @@ -0,0 +1,9 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "newFrontend": "ux-targets171", + "oldBackend": "ux-sources170", + "optionalDiagnosticMissing": true, + "readerAccepted": true, + "unknownDiagnosticNotInvented": true +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json new file mode 100644 index 00000000..8dbceed4 --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-runtime-2026-10-12.json @@ -0,0 +1,30 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "services": { + "backend": { + "image": "mmapp-test/backend:ux-targets171", + "imageId": "sha256:754b7420ca35657fb566cec97cf37322320787363e1787bb4ce89aa0bfb256ed", + "matchedVerifiedImage": true, + "state": "running", + "health": "healthy" + }, + "frontend": { + "image": "mmapp-test/frontend:ux-targets171", + "imageId": "sha256:050987e82c1ab5571f4c3dc8692a22f8ba703881f699c802f0168d90ab74652e", + "matchedVerifiedImage": true, + "state": "running", + "health": null + } + }, + "rollbackTags": { + "MMAPP_IMAGE_TAG": "ux-bfd158", + "BACKEND_IMAGE_TAG": "ux-sources170" + }, + "secretEnvCopied": false, + "runningContainers": [ + "mmapp-test-backend", + "mmapp-test-frontend", + "mmapp-test-postgres" + ] +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/alert-target-issues-source-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-source-2026-10-12.json new file mode 100644 index 00000000..5f163e0d --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-source-2026-10-12.json @@ -0,0 +1,11 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "matched": { + "backend": 434, + "frontend": 518 + }, + "different": [], + "missing": [], + "sourceBase": "db7105119d0c9a3b1dee254d8e3d6ac45c97bba0" +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json b/docs/ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json new file mode 100644 index 00000000..09b5a607 --- /dev/null +++ b/docs/ux-ui/acceptance/alert-target-issues-sql-2026-10-12.json @@ -0,0 +1,23 @@ +{ + "date": "2026-10-12", + "block": "12.5.171", + "database": "mm_accept_166_1791794042576", + "scope": "ephemeral role and precreated owned database; no copied production credentials", + "tests": [ + { + "command": "npm --prefix backend run test:alert-engine", + "passed": true, + "durationMs": 19540, + "ownedHistorySqlRows": 8, + "ownedSourceSqlCases": 16, + "sqlConfirmStabilityPassed": true, + "postgresUnavailableSkip": false + } + ], + "scopedRoleVerified": true, + "passed": true, + "databaseRemoved": true, + "roleRemoved": true, + "testContainerRemoved": true, + "metadataSqlAssertionsPassed": true +} \ No newline at end of file diff --git a/docs/ux-ui/screens/alerts-target-issues-1440-2026-10-12.png b/docs/ux-ui/screens/alerts-target-issues-1440-2026-10-12.png new file mode 100644 index 0000000000000000000000000000000000000000..782bfbeb7b276bbc73f6ccca7ad760265ad32340 GIT binary patch literal 197864 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%0DjbN>t;iSn?PV!;gpJ2r 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 b?J(6gG^LvVQbN2M76+8O1SbarFR7ZfVzF8(D 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 literal 0 HcmV?d00001 diff --git a/docs/ux-ui/screens/alerts-target-issues-320-2026-10-12.png b/docs/ux-ui/screens/alerts-target-issues-320-2026-10-12.png new file mode 100644 index 0000000000000000000000000000000000000000..aeebc3f497eb8d58724f5c0fb081b94dc5b2797b GIT binary patch literal 64386 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 export const alertsMetaResponseSchema = z.object({ servers:z.array(z.string()),greClients:z.array(z.string()),probeTargets:z.array(z.string()),rttLossTargets:z.array(z.string()),trafficServers:z.array(z.string()), serversDetail:z.array(z.object({name:z.string(),host:z.string(),site:z.string(),country:z.string(),type:z.string()}).strict()), + targetIssues:z.array(alertTargetIssueSchema).optional(), }).strict() const alertsConfigResponseShape = {groups:z.array(alertGroupSchema.strict()),rules:z.array(alertRuleResponseSchema)} function validConfig(value:{groups:{id:string}[];rules:{id:string;groupId:string|null}[]}):boolean { diff --git a/tests/e2e/alerts-target-issues.spec.ts b/tests/e2e/alerts-target-issues.spec.ts new file mode 100644 index 00000000..53f09556 --- /dev/null +++ b/tests/e2e/alerts-target-issues.spec.ts @@ -0,0 +1,52 @@ +import {test,expect,type Page} from "@playwright/test" +import {emptyAlerts,emptyOutbox} from "./fixtures/alerts" +import type {AlertTargetIssue} from "@mmapp/contracts/alerts" +async function setup(page:Page,reply:()=>unknown){ + await page.route("**/health",r=>r.fulfill({json:{status:"ok"}})) + await page.route("**/api/**",r=>{const path=new URL(r.request().url()).pathname + if(path==="/api/auth/config")return r.fulfill({json:{required:false}}) + if(path==="/api/alerts")return r.fulfill({json:reply()}) + if(path==="/api/alerts/outbox")return r.fulfill({json:emptyOutbox}) + if(path==="/api/servers"||path==="/api/bgp/sessions")return r.fulfill({json:[]}) + if(path==="/api/filters/gre-tunnels")return r.fulfill({json:{tunnels:[]}}) + return r.fulfill({status:503,json:{error:"outside diagnostic fixture"}}) + }) + await page.goto("/alerts") +} +for(const width of[1440,320])test(`Alerts targets: ambiguity is explained and grouped at ${width}`,async({page})=>{ + await page.setViewportSize({width,height:1000}) + const issues:AlertTargetIssue[]=[{kind:"server",target:"CHR",reason:"ambiguous"},{kind:"traffic",target:"CHR",reason:"ambiguous"}] + let current=issues + await setup(page,()=>({...emptyAlerts,meta:{...emptyAlerts.meta,targetIssues:current}})) + const warning=page.getByRole("status",{name:"Проблемы целей оповещений"}) + await expect(warning).toBeVisible();await expect(warning.getByText("CHR",{exact:true})).toHaveCount(1) + await expect(warning).toContainText("Несколько включённых объектов") + await expect(warning).toContainText("обновите цели существующих правил") + await expect(warning.getByRole("link",{name:"Проверить серверы"})).toHaveAttribute("href","/servers") + expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth)).toBe(true) + current=[];await page.getByRole("button",{name:"Обновить",exact:true}).click();await expect(warning).toHaveCount(0) +}) +test("Alerts targets: disabled source and probe explain the next action",async({page})=>{ + await setup(page,()=>({...emptyAlerts,meta:{...emptyAlerts.meta,targetIssues:[{kind:"traffic",target:"router",reason:"disabled-source"},{kind:"probe",target:"probe → target",reason:"disabled-object"}]}})) + const warning=page.getByRole("status",{name:"Проблемы целей оповещений"}) + await expect(warning).toContainText("Сбор данных этого типа выключен") + await expect(warning).toContainText("Объект или его сервер выключен") + await expect(warning.getByRole("link",{name:"Проверить сбор данных"})).toHaveAttribute("href","/data-collection") + await expect(warning.getByRole("link",{name:"Проверить пробы"})).toHaveAttribute("href","/uptime") +}) +test("Alerts targets: older valid API does not invent diagnostics",async({page})=>{ + await setup(page,()=>emptyAlerts) + await expect(page.getByText("Всего: 0",{exact:true})).toBeVisible() + await expect(page.getByRole("status",{name:"Проблемы целей оповещений"})).toHaveCount(0) +}) +test("Alerts targets: many long labels remain compact and keyboard accessible on phone",async({page})=>{ + await page.setViewportSize({width:320,height:1000}) + const targets=Array.from({length:6},(_,index)=>`target-${index}-${"x".repeat(180)}`) + await setup(page,()=>({...emptyAlerts,meta:{...emptyAlerts.meta,targetIssues:targets.map(target=>({kind:"server",target,reason:"ambiguous"}))}})) + const warning=page.getByRole("status",{name:"Проблемы целей оповещений"}) + await expect(warning.getByText(targets[0],{exact:true})).toBeHidden() + const summary=warning.locator("summary");await summary.focus();await page.keyboard.press("Enter") + await expect(warning.getByText(targets[0],{exact:true})).toBeVisible() + expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth)).toBe(true) + await page.keyboard.press("Enter");await expect(warning.getByText(targets[0],{exact:true})).toBeHidden() +})