From 057281c24637eaf4b273b606fcc9b150d34fb558 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sun, 4 Oct 2026 00:56:57 +0700 Subject: [PATCH] =?UTF-8?q?fix(test):=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D1=8C=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B1=20=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-performance.md | 2 ++ docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 6 ++++++ docs/ux-ui-stage-12.md | 6 ++++++ tests/e2e/collector-probes-tables.spec.ts | 12 ++++++++---- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/ux-ui-performance.md b/docs/ux-ui-performance.md index b4ac9a2e..e78d87e2 100644 --- a/docs/ux-ui-performance.md +++ b/docs/ux-ui-performance.md @@ -46,3 +46,5 @@ | [wireguard-peers-grid.tsx](../components/data-grids/wireguard-peers-grid.tsx) | Потребитель API, контекст/детали и fixture1000 | Всего27 специализированных grids; ни один из этого перечня не принят этим документом на больших данных. CompactDataGrid дополнительно проверен на повторном получении100 active probes: страница сохраняется; сокращение100→1 ограничивает индекс. Следующая группа12.3.6 — uptime-resources/probes-speed/probes-schedule, затем сетевые/admin grids по профилям. Общий журнал: [ux-ui-progress.md](ux-ui-progress.md). + +12.3.6:1000 speed probes baseline —1000 rendered rows/23590 DOM nodes/3741ms dev ready; профиль collector-probes4 cases и ESLint прошли. Далее12.3.7 ограничение DOM speed grid; этот baseline не означает принятую производительность. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 6ebfef6c..ab690dd3 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -4,7 +4,7 @@ ## Актуальная точка продолжения — 2026-10-04 -Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. Следующий блок12.3.6:1000 uptime resources/speed probes/schedule entries, затем остальные grids;12.4/12.5 ещё не завершены. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. +Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. 12.3.6 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). Следующий блок12.3.7: probes-speed-probes-data-grid pagination/контекст, затем1000 uptime resources/schedule entries, затем остальные grids;12.4/12.5 ещё не завершены. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 5e742e8a..5edc093e 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -36,6 +36,12 @@ +## 12.3.6 — исходный замер1000 speed probes (2026-10-04) + +Штатная fixture collector-probes обновлена под numeric device IDs и каталог имён; старая использовала названия вместо ID, строгий reader правильно отклонял её. Новый large-case измерил1000 строк/23590 DOM nodes,3741ms ready в одном dev прогоне.4 browser профиля (12 speed/sort,11 scheduler jobs/run, demo schedule,1000 speed baseline) и ESLint прошли. Это исходный замер, ограничение DOM speed grid ещё НЕ реализовано; production UI этим блоком не изменён. + +Следующий шаг12.3.7: probes-speed-probes-data-grid client pagination/сохранение страницы и URL/операции на1000 пробах; затем1000 uptime resources и расписаний, остальные27 grids из ux-ui-performance.md.12.3/12.4/12.5 не завершены. Последние production frontend/contracts и backend builds прошли в12.3.5/12.2.10. Локальные коммиты, без push. + ## 12.3.5 — сохранение страницы CompactDataGrid при опросе (2026-10-04) На100 активных пробах воспроизведено: после получения нового DTO страница2 сбрасывалась на1. Общий CompactDataGrid теперь отключает autoResetPageIndex и ограничивает индекс последней существующей страницей только при сокращении набора. Одинаковый каталог с новыми измерениями сохраняет контекст;100→1 не оставляет пустую страницу. Штатные pagination/filter/sort компоненты сохранены. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 9aa79bcc..e3f3cbc0 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -169,3 +169,9 @@ Pure/DI профиль дополнен malformed entity/error record/valid empt Проверки:89 browser dashboard/permissions/large-statistics/statistics/migrated/snapshot прошли, включая воспроизведённый regression и сокращение100→1. Typecheck/ESLint прошли. Повторный frontend production/contracts build после изменения общей основы прошёл:34 страницы; backend/contracts build также прошёл после12.2.10. ReUI validate_usage ok для DataGrid table/recordCount/isLoading/tableLayout/i18n и Frame dense; checklist применён. Предыдущая123 browser приёмка остаётся профильным checkpoint до этого изменения, не общей12.4. Далее12.3.6: фиксированные1000 ресурсов uptime/1000 speed probes/1000 schedule entries; измерить DOM, проверить URL/детали, pagination/polling/уменьшение набора и права. Использовать [карту производительности](ux-ui-performance.md) для остальных27 specialized grids; Firewall порядок/drag и traffic server page требуют отдельной проверки. Затем12.4 полный browser/context прогон и итоговая матрица,12.5 реальные PG/RouterOS/интеграции. Этап12 пока не завершён. Все изменения сохраняются локально, push не выполнялся. + +## 12.3.6 — исходный замер1000 speed probes (2026-10-04) + +Штатная fixture collector-probes обновлена под numeric device IDs и каталог имён; старая использовала названия вместо ID, строгий reader правильно отклонял её. Новый large-case измерил1000 строк/23590 DOM nodes,3741ms ready в одном dev прогоне.4 browser профиля (12 speed/sort,11 scheduler jobs/run, demo schedule,1000 speed baseline) и ESLint прошли. Это исходный замер, ограничение DOM speed grid ещё НЕ реализовано; production UI этим блоком не изменён. + +Следующий шаг12.3.7: probes-speed-probes-data-grid client pagination/сохранение страницы и URL/операции на1000 пробах; затем1000 uptime resources и расписаний, остальные27 grids из ux-ui-performance.md.12.3/12.4/12.5 не завершены. Последние production frontend/contracts и backend builds прошли в12.3.5/12.2.10. Локальные коммиты, без push. diff --git a/tests/e2e/collector-probes-tables.spec.ts b/tests/e2e/collector-probes-tables.spec.ts index 4a15e598..a982a9b8 100644 --- a/tests/e2e/collector-probes-tables.spec.ts +++ b/tests/e2e/collector-probes-tables.spec.ts @@ -2,9 +2,9 @@ import { SCHEDULER_JOB_KEYS } from "../../lib/scheduler-settings" import { test, expect, type Page } from "@playwright/test" import type { SpeedProbeApiRow } from "../../components/data-grids/probes-speed-probes-data-grid" -async function setup(page: Page, path: string) { - const probes: SpeedProbeApiRow[] = Array.from({ length: 12 }, (_, i) => ({ - id: String(i + 1), srcServerId: `Источник ${i + 1}`, dstServerId: "Цель", srcInterface: "ether1", +async function setup(page: Page, path: string, count = 12) { + const probes: SpeedProbeApiRow[] = Array.from({ length: count }, (_, i) => ({ + id: String(i + 1), srcServerId: String(i + 1), dstServerId: String(count + 1), srcInterface: "ether1", dstInterface: "ether1", protocol: "tcp", direction: "both", durationSec: "10", enabled: true, lastRunAt: null, lastTxAvgMbps: null, lastRxAvgMbps: null, lastStatus: null, lastError: null, })) @@ -17,7 +17,7 @@ async function setup(page: Page, path: string) { if (path === "/api/scheduler/status") return route.fulfill({ json: { jobs } }) if (path === "/api/scheduler/jobs/alert_engine/run-now") return route.fulfill({ json: { ok: true, result: { status: "ok", error: null, result: { v: 1, job: "alert_engine", sampledAt: "2026-10-03T00:00:00Z", rulesChecked: 0, standaloneFires: 0, groupFires: 0, skippedNoTelegram: false } }, status: { jobs } } }) return route.fulfill({ json: path === "/api/uptime/speed-probes" ? { probes } - : path === "/api/auth/config" ? { required: false } : path === "/api/servers" ? [] + : path === "/api/auth/config" ? { required: false } : path === "/api/servers" ? Array.from({length:count+1},(_,i)=>({id:i+1,name:i{ + test.setTimeout(90000);const start=Date.now();await setup(page,"/probes",1000);await page.getByRole("button",{name:"Расписание",exact:true}).click();await expect(page.locator("tr[data-row-id]")).toHaveCount(1000);const sample={fixtureRows:1000,renderedRows:await page.locator("tr[data-row-id]").count(),domNodes:await page.locator("*").count(),readyMs:Date.now()-start};console.log(JSON.stringify(sample));await info.attach("large-speed-probes-baseline",{body:JSON.stringify(sample),contentType:"application/json"}) +})