fix(traffic): принимать измерения peers только полным срезом
This commit is contained in:
1 parent
b4d0733cfa
commit
d8f8d3c7a4
15 files changed
+1327
-21
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Актуальное продолжение 2026-10-12: завершён12.5.181 — подтверждённые свежие статусы привязок, strict native boolean flags и отдельный unknown для enabled WireGuard peer. OwnSQL48/36163ms,8E2E/15.7s+final delta2/10s/types/build/ESLint/1036compiled parity. Both ux-status181 healthy/running/native2/browser2; ownDB/role/container удалены. Следующий182 — полнота peer-среза и история пропусков;12.5 открыта.
|
||||
Актуальное продолжение 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 открыта.
|
||||
|
||||
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.181 — подтверждённые свежие статусы привязок, strict native boolean flags и отдельный unknown для enabled WireGuard peer. OwnSQL48/36163ms,8E2E/15.7s+final delta2/10s/types/build/ESLint/1036compiled parity. Both ux-status181 healthy/running/native2/browser2; ownDB/role/container удалены. Следующий182 — полнота peer-среза и история пропусков;12.5 открыта.
|
||||
Актуальное продолжение 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 открыта.
|
||||
|
||||
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
|
||||
|
||||
@@ -2115,3 +2115,21 @@ TypeScript/backend build/ESLint и профильные unit проверки п
|
||||
[Native GET](ux-ui/acceptance/traffic-status-native-2026-10-12.json): оба CHR доступны, interface counters и boolean flags валидны; DB read-only, RouterOS config writes0/password changes0/messages0. [Browser1440/320](ux-ui/acceptance/traffic-status-deployed-2026-10-12.json): actual API/live/receipt labels без ошибок/overflow. Положительные binding branches доказаны собственными SQL/UI fixtures, не выданы за существующие пользовательские привязки стенда. Вкладку следует перезагрузить.
|
||||
|
||||
Следующий182 — полнота peer-среза при optional endpoint failure и пропуски истории. Interface running не доказывает end-to-end connectivity, enabled peer не доказывает handshake. Coverage/recreated identity/restore/multi-instance/scale/external integrations остаются открыты в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 из этого ответа; обычные интерфейсные измерения остаются доступны. Пустой массив — корректный пустой срез.
|
||||
|
||||
| Ответ | Схема результата | Проверка |
|
||||
| --- | --- | --- |
|
||||
| Все peers валидны | полная проверка → запись полного среза | existing SQL collector profile |
|
||||
| Корректный peer → некорректный counter | полный срез отклонён → interface сохранён → peer Нет данных | новая own SQL проверка |
|
||||
| Повторная пара / ответ не массив | полный срез отклонён → interface сохранён | ещё2 own SQL проверки |
|
||||
|
||||
[Owned PG](ux-ui/acceptance/traffic-peer-sql-2026-10-12.json):51 cases9counter+14history+10TCP SSE+6volume+12status,37534ms, без SQL skip.3 новые проверки используют настоящий HTTP fixture→collector→SQL→GET bindings; проверяют отсутствие partial peer rows, unknown peer status и online native iface. Временная база mm_accept_166_1791819465644, ограниченная роль и контейнер удалены, отсутствие проверено.
|
||||
|
||||
Backend TypeScript/build passed; [source455/524](ux-ui/acceptance/traffic-peer-source-2026-10-12.json), [compiled1040](ux-ui/acceptance/traffic-peer-compiled-2026-10-12.json) SHA256 parity. Frontend не менялся: используется уже собранный и проверенный ux-status181. Новая backend production build ux-peer182 [развёрнута и healthy](ux-ui/acceptance/traffic-peer-runtime-2026-10-12.json); frontend imageId также проверен. Только backend tag в .env, rollback ux-status181, без новой миграции и копирования секретов.
|
||||
|
||||
[Native read-only](ux-ui/acceptance/traffic-peer-native-2026-10-12.json) проверил ответы identity/interface/peers обоих CHR; оба доступны. Фактическое число peers сохранено в отчёте: пустой native список не выдан за приёмку активного туннеля. Положительные/некорректные peer случаи доказаны собственными fixtures; новые VPN объекты не создавались, этот блок исправляет collector parser. DB read-only, RouterOS config writes0/password changes0/messages0. [Production UI1440/320](ux-ui/acceptance/traffic-peer-deployed-2026-10-12.json) проверен с actual API/live/receipt labels без ошибок/overflow.
|
||||
|
||||
Следующий183: optional peer endpoint failure пока не получает отдельной видимой причины — interface success остаётся успешным, stale peer становится unknown по предыдущему181. Нужно сохранить причину частичного сбоя, не превращая успешные interface measurements в ошибку. Покрытие пропусков истории, recreated identity, масштаб и внешние интеграции остаются12.5. Локальный коммит без push.
|
||||
Reference in new issue
Block a user