fix(ui): отделить ошибки статистики от пустых данных

This commit is contained in:
Denozordec committed 2026-09-23 20:22:18 +07:00
1 parent 3898881d8a
commit 167e19cd91
4 files changed
+135 -25

No files matched your search

+8 -1
View File
@@ -22,13 +22,20 @@
| 5 | Состояния данных, свежесть, частичные сбои, гонки polling | Завершён 2026-09-20 для дашборда; границы проверок ниже |
| 6 | Навигация и дашборд | Завершён 2026-09-20 в границах локальной приёмки; ограничения ниже |
| 7 | Серверы и мониторинг: детали, формы, URL-контекст, права | Завершён в границах локальной приёмки 2026-09-23; внешние ограничения ниже |
| 8 | Трафик и статистика | Не начат |
| 8 | Трафик и статистика | В работе: 8.1 — состояния статистики; далее периоды/URL и live-трафик |
| 9 | VPN, Firewall и Filters | Не начат |
| 10 | Маршрутизация, диагностика, карта и терминал | Не начат |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Не начат |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Не начат |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
## Блок 8.1 — достоверность состояния статистики (2026-09-23)
- Новый план docs/ux-ui-stage-8.md с референсами и схемой. Результат статистики привязан к ключу backend/режим/период/срез/view/pivot/planes/повтор. Старый отчёт не выводится под новым контекстом; отменённый эффект не применяет поздний ответ.
- Ошибка API не показывает нулевые KPI, график и «Нет данных куба». Кнопка «Повторить загрузку» повторяет текущий запрос; подтверждённый пустой ответ по-прежнему показывает нули и пустое состояние. Данные и pivot публикуются после завершения всей цепочки запроса.
- Проверки: 4 новых E2E (403/500 + повтор с пустым ответом, задержка/гонка периодов, ошибка pivot) и существующий сценарий статистики из migrated-tables прошли. ESLint страницы/тестов чистый; production build с TypeScript прошёл, 34 страницы. Скриншот ошибки просмотрен. Использованы прежние Alert/Button/KpiStatGrid/DataGrid, без изменения темы/установленных примитивов.
- Ограничение: при сбое pivot сейчас скрыт весь отчёт, частично загруженный основной ответ отдельно не показывается. Последний успешный отчёт не сохраняется как отдельный доступный пользователю снимок. Следующий блок 8.2 — строгие периоды и URL, затем live/история трафика. На проверке использовано 44% пятичасовой / 38% недельной квоты. Коммит локальный без push.
## Завершение этапа 7 — локальная приёмка (2026-09-23)
- 94 профильных E2E dashboard-data/servers/uptime-links прошли. Включены сквозные сценарии сервера и Ping-проверки из очереди дашборда, права, ошибки/повторы операций, URL-контекст, формы и адаптивность. Сценарий Ping с действием и возвратом уже существует в uptime-links.spec.ts («очередь проверок…»); ранее он ошибочно оставался в списке следующих шагов журнала.
+28
View File
@@ -0,0 +1,28 @@
# Этап 8: трафик и статистика
Основа: установленные ReUI PRO/base-nova, Frame, KpiStatGrid, DataGrid, Filters и DateSelector. Каждый законченный блок — профильные проверки, журнал и локальный коммит без push.
| Блок | Результат | Приёмка |
| --- | --- | --- |
| 8.1 | Данные статистики привязаны к периоду/срезу; ошибка не равна нулю; повтор запроса | Задержка нового периода, 403/500, успешный пустой ответ, поздний ответ |
| 8.2 | Валидные периоды, URL-контекст, единицы | Ошибочные даты, история, срезы и pivot |
| 8.3 | Разделение live и истории трафика; состояния потока и polling | Разрыв SSE, смена интерфейса/периода, неизвестные значения и гонки |
| 8.4 | Связь графиков/таблиц и мобильная приёмка | Общий период/объект, пустые состояния, 320/390/1440 px |
| Область | Референс | Схема |
| --- | --- | --- |
| Фильтры и таблицы | [Data Grid Filtering 2](https://reui.io/preview/base/data-grid-filtering-2?ref=mcp) | Период → срез → график → строки того же запроса |
| Сводка | [Stats 12](https://reui.io/preview/base/stats-12?ref=mcp) | Контекст → подтверждённые метрики → детали |
```text
[Период] [Срезы] [История / live]
↓ один контекст запроса
[Загрузка / Ошибка + повтор / Подтверждённые данные]
[Метрики] → [График] → [Таблица] → [Уточнить срез]
```
Исходные наблюдения 2026-09-23:
- Statistics оставляет прежний data/pivot до ответа нового запроса; catch подставляет EMPTY, совмещая ошибку с нулями и «Нет данных куба».
- readRange сравнивает строки без строгой проверки даты; parseYmd нормализует несуществующие дни через JavaScript Date. Проверить в 8.2.
- useTrafficLive требует отдельной проверки завершения SSE и позднего ответа после abort в 8.3; это пока риск, а не доказанный дефект UI.
- Реальный IPFIX/RouterOS недоступен локально. HTTP/SSE-моки не доказывают сбор и точность сетевой телеметрии.