From 9d4d9f308f7f558fcb89a943e9d975ea631c37c7 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sun, 4 Oct 2026 13:16:17 +0700 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=D0=BF=D0=BE=D1=8F=D1=81=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20?= =?UTF-8?q?=D1=81=D0=B5=D1=81=D1=81=D0=B8=D0=B9=20=D0=B8=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D1=81=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/traffic/flow-analytics-panel.tsx | 8 +++++-- docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 8 +++++++ docs/ux-ui-stage-12.md | 9 ++++++++ docs/ux-ui/screens/flow-slice-320.png | Bin 0 -> 55840 bytes tests/e2e/traffic-flow.spec.ts | 22 ++++++++++++++++++++ 6 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 docs/ux-ui/screens/flow-slice-320.png diff --git a/components/traffic/flow-analytics-panel.tsx b/components/traffic/flow-analytics-panel.tsx index 13b9278d..037f2ff2 100644 --- a/components/traffic/flow-analytics-panel.tsx +++ b/components/traffic/flow-analytics-panel.tsx @@ -560,7 +560,7 @@ export function FlowAnalyticsDetail({ {liveHint === "live" ? live : null} setSlice(String(v))} className="gap-3"> - + Приложения Категории Сервисы @@ -622,6 +622,10 @@ export function FlowAnalyticsDetail({ /> +

+ Показано {sessionRows.length} из {analytics?.conversationsList.length ?? 0} в выборке. + {" "}Сессии с наибольшим объёмом трафика (до 50). Фильтр применяется к этой выборке; другие сессии могут не отображаться. +

{sessionFilter ? (
@@ -637,7 +641,7 @@ export function FlowAnalyticsDetail({ ) : null} diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index ddd93fe3..57133ed6 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 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). 12.3.7 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. 12.4.2 принят локально:context205/24 файла и unit28 прошли. 12.3.13 принят локально:wide pivot51×16/ScrollArea/axe/24+2 browser/builds. 12.3.14 принят локально:history200/50 DOM/54+1 browser/build. 12.3.15 принят локально:live расписание1000/page20 error cache/15 browser. 12.3.16 принят локально:certificates1000/50 DOM/refresh деталей/19+3 browser/build. 12.3.17 принят локально:pinning идентификатора/видимость значений/29 browser/build. 12.3.18 принят локально:users1000/поиск всего списка/детали и ошибка refresh/32 browser/build. 12.3.19 принят локально:backups1000/все мобильные действия/возврат focus/39+4 browser/build. 12.3.20 принят локально:независимые speed GET/cache/freshness/58+4 browser/build. 12.3.21 принят локально:strict history DTO/null rates от DB до UI/60+5 browser/unit4/builds. 12.4.3 принят локально:users/backups delta context36 на a558412. 12.3.22 принят локально:shared speed-probes DTO/context8/60+6+47 browser/unit5/builds. 12.3.23 принят локально:strict write DTO/atomic replacement/confirmed scheduler warning/65 browser/HTTP DI JWT/builds. 12.3.24 принят локально:OSPF routes1000/50 DOM/page20/cache/320px/22+1 browser/build. 12.3.25 принят локально:BFD1000/50 DOM/cache/320px/12 browser/build. 12.4.4 принят локально:context213/25 файлов и unit36 прошли на5b2a291. 12.4.5 принят локально:main1110/171 прошли на21859be. 12.3.26 принят локально:strict atomic Ping write/подтверждение каталога и сохранения/история удаления/62 browser/context11/DI6/builds. 12.3.27 принят локально:WireGuard zero/missing counters/UI/backend mapper/29 browser/unit/builds. 12.3.28 принят локально:WireGuard interfaces1000/50 DOM/pinning/actions/cache/29+1 browser/build. 12.3.29 принят локально:WG peers1000/50 DOM/pinning/точный delete target/29+3 browser/build. 12.3.30 принят локально:WG detail1000/50 DOM/320px/клавиатура/31+1 browser/build. 12.3.31 принят локально:WG handshake без ложного online/unknown/7+1 browser/build. 12.3.32 принят локально:WG URL search/tab/status/reload/история/34+4 browser/unit/build. 12.3.33 принят локально:WG strict read/cache/freshness/unknown/40+7 browser/context8/build. 12.3.34 принят локально:VXLAN1000/50 DOM/pinning/export/22 browser/build. 12.3.35 принят локально:GRE1000/50 DOM/pinning/20+1 browser/build. 12.3.36 карта15 оставшихся источников обновлена. Следующий блок12.3.37: обозначение top50 traffic conversations; далее Communities1000 и network grids и полная main/context регрессия.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 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. 12.4.2 принят локально:context205/24 файла и unit28 прошли. 12.3.13 принят локально:wide pivot51×16/ScrollArea/axe/24+2 browser/builds. 12.3.14 принят локально:history200/50 DOM/54+1 browser/build. 12.3.15 принят локально:live расписание1000/page20 error cache/15 browser. 12.3.16 принят локально:certificates1000/50 DOM/refresh деталей/19+3 browser/build. 12.3.17 принят локально:pinning идентификатора/видимость значений/29 browser/build. 12.3.18 принят локально:users1000/поиск всего списка/детали и ошибка refresh/32 browser/build. 12.3.19 принят локально:backups1000/все мобильные действия/возврат focus/39+4 browser/build. 12.3.20 принят локально:независимые speed GET/cache/freshness/58+4 browser/build. 12.3.21 принят локально:strict history DTO/null rates от DB до UI/60+5 browser/unit4/builds. 12.4.3 принят локально:users/backups delta context36 на a558412. 12.3.22 принят локально:shared speed-probes DTO/context8/60+6+47 browser/unit5/builds. 12.3.23 принят локально:strict write DTO/atomic replacement/confirmed scheduler warning/65 browser/HTTP DI JWT/builds. 12.3.24 принят локально:OSPF routes1000/50 DOM/page20/cache/320px/22+1 browser/build. 12.3.25 принят локально:BFD1000/50 DOM/cache/320px/12 browser/build. 12.4.4 принят локально:context213/25 файлов и unit36 прошли на5b2a291. 12.4.5 принят локально:main1110/171 прошли на21859be. 12.3.26 принят локально:strict atomic Ping write/подтверждение каталога и сохранения/история удаления/62 browser/context11/DI6/builds. 12.3.27 принят локально:WireGuard zero/missing counters/UI/backend mapper/29 browser/unit/builds. 12.3.28 принят локально:WireGuard interfaces1000/50 DOM/pinning/actions/cache/29+1 browser/build. 12.3.29 принят локально:WG peers1000/50 DOM/pinning/точный delete target/29+3 browser/build. 12.3.30 принят локально:WG detail1000/50 DOM/320px/клавиатура/31+1 browser/build. 12.3.31 принят локально:WG handshake без ложного online/unknown/7+1 browser/build. 12.3.32 принят локально:WG URL search/tab/status/reload/история/34+4 browser/unit/build. 12.3.33 принят локально:WG strict read/cache/freshness/unknown/40+7 browser/context8/build. 12.3.34 принят локально:VXLAN1000/50 DOM/pinning/export/22 browser/build. 12.3.35 принят локально:GRE1000/50 DOM/pinning/20+1 browser/build. 12.3.36 карта15 оставшихся источников обновлена. 12.3.37 top50 traffic/пустой локальный фильтр/перенос tabs принят в описанных границах. Следующий блок12.3.38: Communities1000; далее network grids и полная main/context регрессия.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 cccf770a..757d582d 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -31,6 +31,14 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2.1–12.2.10 и12.3.1–12.3.5 и12.3.7–12.3.12 приняты в описанных локальных границах;12.4.1 main регрессия и профильный повтор записаны;12.4.2 context205 и unit28 прошли;12.3.13–12.3.25 приняты локально в описанных границах;12.4.4 context213 и12.4.5 main1110 прошли, 12.3.26–12.3.33 приняты локально; 12.3.34 VXLAN и12.3.35 GRE tunnels приняты; остаются network grids/общая регрессия после delta/внешняя приёмка | +## 12.3.37 — границы выборки сессий трафика (2026-10-04) + +FlowAnalyticsPanel сообщает фактическое число строк после фильтра и размер полученной выборки, объясняет top по объёму до50 и локальную область фильтра. Пустой выбранный фильтр имеет собственную причину, вместо общей parent emptyHint; сводка общего conversations не подменяется числом строк. Backend cap/read/network операции не изменены. + +Новый сценарий выявил реальное перекрытие второй строки tabs таблицей: scoped TabsList теперь имеет автоматическую высоту, фиксированную высоту вкладок и перенос. Обычный click без force работает.Финальный browser профиль28/28 прошёл одним запуском на окончательных файлах, включая123 total/1 selected/0 filtered/reset/320px. Первоначальные падения нового теста привели к исправлению перекрытия tabs, корректировке роли выбранной строки и точной причине пустого фильтра; assertions не ослаблены. TypeScript без incremental/финальный ESLint и production frontend build прошли. [Снимок320px](ux-ui/screens/flow-slice-320.png) просмотрен. + +Следующий блок12.3.38: Communities1000 с полным поиском/sort/refresh/выбором/320px по актуальной performance карте.15 manualPagination:true остаются, traffic cap50 не требует фиктивной пагинации. Общая main/context после delta и внешняя12.5 отдельно; реальные RouterOS/PG не проверены. Коммит локальный без push. + ## 12.3.36 — актуальная карта оставшихся таблиц (2026-10-04) Обновлён ux-ui-performance.md:15 manualPagination:true файлов сопоставлены с JSX/источниками и действующими ограничениями. Удалены6 уже принятых таблиц из активной карты. Scheduler11, traffic top50, community recommendations24 на HomeCard, demo GRE pools/schedule и неподключённый Subusers отделены от неограниченных live каталогов. OSPF topology и Firewall DnD остаются отдельными рисками; optimizer имеет комбинаторные массивы и много HomeCard. Измерения WireGuard/VXLAN/GRE внесены без выдуманного baseline. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 419808ed..694dc5f2 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -479,3 +479,12 @@ GET /api/gre/tunnels возвращает полный каталог без о Проверка документа: автоматическая сверка15 файлов с точным поиском исходников, существования относительных ссылок и отсутствие уже принятых файлов в активной карте; git diff --check. Код продукта не изменён, повтор сборки не требуется. Следующий блок12.3.37: честное обозначение ограниченного top50 traffic conversations; затем Communities1000/recursive groups и остальные шаги карты. Внешняя12.5 и общая main/context регрессия после delta остаются. Коммит локальный без push. + +## 12.3.37 — границы выборки сессий трафика (2026-10-04) + +FlowAnalyticsPanel сообщает фактическое число строк после фильтра и размер полученной выборки, объясняет top по объёму до50 и локальную область фильтра. Пустой выбранный фильтр имеет собственную причину, вместо общей parent emptyHint; сводка общего conversations не подменяется числом строк. Backend cap/read/network операции не изменены. + +Новый сценарий выявил реальное перекрытие второй строки tabs таблицей: scoped TabsList теперь имеет автоматическую высоту, фиксированную высоту вкладок и перенос. Обычный click без force работает.Финальный browser профиль28/28 прошёл одним запуском на окончательных файлах, включая123 total/1 selected/0 filtered/reset/320px. Первоначальные падения нового теста привели к исправлению перекрытия tabs, корректировке роли выбранной строки и точной причине пустого фильтра; assertions не ослаблены. TypeScript без incremental/финальный ESLint и production frontend build прошли. [Снимок320px](ux-ui/screens/flow-slice-320.png) просмотрен. + +Следующий блок12.3.38: Communities1000 с полным поиском/sort/refresh/выбором/320px по актуальной performance карте.15 manualPagination:true остаются, traffic cap50 не требует фиктивной пагинации. Общая main/context после delta и внешняя12.5 отдельно; реальные RouterOS/PG не проверены. Коммит локальный без push. + diff --git a/docs/ux-ui/screens/flow-slice-320.png b/docs/ux-ui/screens/flow-slice-320.png new file mode 100644 index 0000000000000000000000000000000000000000..643a1f7fa74af03a3139b2fd29f76b4a284b2801 GIT binary patch literal 55840 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 { + const control = await setup(page) + control.metrics = { conversations: 123, conversationsList: [{ serverId: '1', serverName: 'Экспортёр тест', src: '192.0.2.1', dst: '198.51.100.1', proto: 6, protoName: 'TCP', srcPort: 1234, dstPort: 443, bytes: 200, packets: 2, bps: 100, inIface: 'ether1' }], sources: [{ id: '192.0.2.99', label: 'Другой источник', bytes: 100, packets: 1, bps: 100, percent: 100 }] } + await page.getByRole('button', { name: '15м', exact: true }).click() + await page.getByRole('tab', { name: 'Сессии', exact: true }).click() + const summary = page.getByRole('status', { name: 'Выборка сессий', exact: true }) + await expect(summary).toContainText('Показано 1 из 1 в выборке') + await expect(summary).toContainText('до 50') + await page.getByRole('tab', { name: 'Источники', exact: true }).click() + await page.getByRole('row').filter({ hasText: 'Другой источник' }).click() + await expect(summary).toContainText('Показано 0 из 1 в выборке') + await expect(page.getByText('В полученной выборке нет сессий по выбранному фильтру', { exact: true })).toBeVisible() + await page.setViewportSize({ width: 320, height: 1000 }) + await summary.scrollIntoViewIfNeeded() + await expect.poll(() => summary.evaluate(el => el.scrollWidth <= el.clientWidth + 1)).toBe(true) + await page.addStyleTag({ content: 'nextjs-portal{display:none!important}' }) + await page.screenshot({ path: info.outputPath('flow-slice-320.png'), animations: 'disabled' }) + await page.getByRole('button', { name: 'сбросить', exact: true }).click() + await expect(summary).toContainText('Показано 1 из 1 в выборке') +})