fix(traffic): показывать причину неполного опроса peers

This commit is contained in:
Denozordec committed 2026-10-12 22:54:35 +07:00
1 parent d8f8d3c7a4
commit c69d99ba80
19 files changed
+1367 -23

No files matched your search

+22 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-12: завершён12.5.182 — атомарная проверка полного WireGuard peer-среза, без записи корректного префикса при ошибке/дубликатах. OwnSQL51/37534ms/backend build/source455+524/1040compiled/native2/browser2 passed. Backend ux-peer182 healthy, frontend ux-status181 без изменений; ownDB/role/container удалены. Следующий183 — явная диагностика optional peer endpoint failure и покрытие истории;12.5 открыта.
Актуальное продолжение 2026-10-12: завершён12.5.183 — причина optional WireGuard peer failure сохраняется и показывается, подтверждённые interface rates не маскируются. OwnSQL53/37478ms/4E2E11.2s/types/build/ESLint/source455+524/1040compiled/API/UI passed. Both ux-warning183 healthy/running; ownDB/role/container удалены. Следующий184 — покрытие истории при пропусках/смене идентичности;12.5 открыта.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -38,6 +38,27 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–168 и ограничения ниже. Runtime backend ux-month149/frontend ux-sessions150. |
## 12.5.183 — понятная причина частичного сбоя peer-опроса (2026-10-12)
Optional WireGuard peer error больше не исчезает в catch. Collector сохраняет причину в текущей записи traffic_collection_state, snapshot.warning и trafficSettings.lastError. Успешный interface poll остаётся status=ok: известные interface скорости/история не теряются из-за ошибки отдельного peer endpoint. Перезапуск с корректным peer ответом очищает прежнюю причину.
Existing observations.error передаёт причину в DTO. ReUI Alert показывает «Часть измерений недоступна» при current measurements с предупреждением; при unknown/stale остаётся профильная подпись и та же причина. Manual collect response содержит warnings с serverId; event получает warning level и «завершён с ограничениями». Нового schema/state enum и миграции нет. Общий scheduler не объявляет interface poll неуспешным из-за optional peers; ограничение сохранено в его snapshot.
| Состояние | Схема | Результат |
| --- | --- | --- |
| Interface success + peer401/invalid | measured rates + warning → пользователь видит часть недоступных данных | known0 остаётся0; peer Нет данных |
| Следующий полный poll | warning очищен → обычное текущее состояние | причина прежнего сбоя не остаётся ложной |
TypeScript/backend build/ESLint прошли.4 E2E11.2s:2 новых на1440/320 сохраняют measured0/history и показывают WireGuard401 reason,2 проверяют status TTL/legacy. Это API-fixture UI, не отказ реальных credentials.
[Own PG SQL](ux-ui/acceptance/traffic-warning-sql-2026-10-12.json):53 cases9counter+14history+10TCP SSE+6volume+14status,37478ms, без skip.3 предыдущих malformed/duplicate/shape cases теперь также проверяют сохранение warning;2 новые — peer-only401 с успешным iface+DTO cause и recovery с очищением причины. Временная база/ограниченная role/container удалены; exact namespace и отсутствие отражены в публичном отчёте.
[Source455/524](ux-ui/acceptance/traffic-warning-source-2026-10-12.json)/[compiled1040](ux-ui/acceptance/traffic-warning-compiled-2026-10-12.json) SHA256 parity. Обе production builds прошли. Frontend ux-warning183 сначала проверен с backend ux-peer182 [interop](ux-ui/acceptance/traffic-warning-interop-2026-10-12.json), затем [both ux-warning183](ux-ui/acceptance/traffic-warning-runtime-2026-10-12.json) healthy/running/imageIds. Только .env tags; rollback frontend ux-status181/backend ux-peer182, без secret env copy.
[Actual API](ux-ui/acceptance/traffic-warning-api-2026-10-12.json)/[browser1440/320](ux-ui/acceptance/traffic-warning-deployed-2026-10-12.json) подтвердили нормальный runtime/live/receipt labels без page errors/overflow. Оба CHR доступны в preceding182 native read; этот checker не отправлял новых native commands и не создавал искусственный отказ на реальных устройствах. Пароли/конфигурация не менялись, messages0. Туннельное соединение не заявлено: native peers182 были пустыми, fault/recovery доказаны в изолированном SQL/HTTP сценарии. Перезагрузить вкладку для нового Alert.
Следующий184 — явно определить покрытие периода при отсутствующих poll waves/переименовании или пересоздании интерфейса и не выдавать lower-bound за полный период. Внешние интеграции/масштаб и итоговая12.5 остаются открыты. Локальный коммит без push.
## 12.5.182 — атомарный приём измерений WireGuard peers (2026-10-12)
Разбор optional peers раньше добавлял каждую строку в общий массив сразу: ошибка следующей строки перехватывалась, а корректный префикс сохранялся как свежий срез. Отсутствующие ключи также молча пропускались. Теперь parseTrafficPeers сначала проверяет весь ответ: массив, объекты, непустые interface/public-key, уникальность пары interface+key, counter values и boolean disabled. Только полностью корректный массив передаётся collector. Ошибка не сохраняет ни одного peer из этого ответа; обычные интерфейсные измерения остаются доступны. Пустой массив — корректный пустой срез.