fix(bgp): сохранять неизвестные показатели без вымышленных чисел

This commit is contained in:
Denozordec committed 2026-10-12 10:38:05 +07:00
1 parent c557a8c8cb
commit 9fbe27c1b0
12 files changed
+1168 -49

No files matched your search

+14 -2
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Сервер161.104.46.222: завершён 12.5.163 — duplicate legacy BGP alert keys внутри одного snapshot сохраняют Unknown, не создают переход между разными peers; ambiguous history блокирует угадывание previous state.46 native snapshots replay/alert/outbox profiles/build/988 parity/2 real UI passed; SQL stability явно skipped. Runtime ux-bgp163/ux-bfd158 healthy. Следующий164 — nullable BGP selected counters/AS/timers без UPDATE-as-prefix/default guesses;12.5 открыт.
Сервер161.104.46.222: завершён 12.5.164 — selected/all BGP AS/counters/timers теперь nullable как catalog, без fake defaults/UPDATE-as-prefix; milliseconds сохранены.96 native rows replay (146 missing/104 observed zero/4 large-AS rows), live-maps/outbox profiles/15 E2E/build/988 parity/2 real UI passed. Runtime ux-bgp164/ux-bfd158 healthy. Следующий165 — GRE/BGP collector: независимые параллельные reads и запрет выдавать прошлые отсутствующие peers за current signals;12.5 открыт.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -14,7 +14,7 @@
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
| Образы приложения | mmapp-test/backend:ux-bgp163 и mmapp-test/frontend:ux-bfd158; запущены |
| Образы приложения | mmapp-test/backend:ux-bgp164 и mmapp-test/frontend:ux-bfd158; запущены |
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
@@ -1534,3 +1534,15 @@ Unit assertions проверили duplicate same/different/unknown states и и
Протоколы: [replay46](ux-ui/acceptance/bgp-ambiguous-replay-2026-10-12.json), [compiled988](ux-ui/acceptance/bgp-ambiguous-compiled-2026-10-12.json), [deployed API/UI](ux-ui/acceptance/bgp-ambiguous-deployed-2026-10-12.json). ReUI/Frame/base-nova UI primitives сохранены; RouterOS/пароли/объекты не менялись, сообщения не отправлялись.
Следующий164 — strict nullable selected BGP counters/AS/timers: legacy selected API ещё подменяет отсутствующие значения default numbers и UPDATE messages количеством prefixes.12.5 открыт.
## 12.5.164 — достоверные числа BGP во всех маршрутах чтения (2026-10-12)
Selected/all BGP parser и тип BgpSessionRead теперь используют nullable remote/local AS, timers, RX/TX prefixes и message counters. Отсутствующее/invalid/unsafe значение не становится0/90/30 или типом eBGP. Prefix RX читается только из prefix-count; UPDATE messages не являются количеством префиксов, TX prefixes остаётся null без доказательства. Наблюдаемый0 сохраняется0, известные ASN до32-bit сохраняются точно. Catalog переиспользует общий parser, добавляя AFI; миллисекунды в timers переведены в дробные секунды, overflow duration остаётся unknown.
Это намеренное изменение старого selected/all API numeric contract: clients должны обрабатывать null, историческое legacy-preserved утверждение ранних блоков больше не описывает эту версию. Все repository type consumers прошли backend build; основной BGP UI уже использовал nullable catalog. Collector keys/state и правила163 сохранены, новые numeric defaults не добавлялись.
Live-maps profile и controlled alert/outbox HTTP/JWT прошли,15 BGP data/freshness/link E2E passed. Compiled replay96 реальных rows из160/162:146 missing counters сохранены null,104 observed zero сохранены0,4 four-byte ASN rows точны; selected/catalog fields совпали с native values. Это replay, не новый live native lifecycle. Backend production build/988 emitted parity passed; ux-bgp164 развёрнут с rollback env, backend/PG healthy, frontend ux-bfd158 сохранён.3 readonly GET и2 real UI1440/320 passed/no errors/overflow после cleanup. Positive nullable rows доказаны replay и unit/HTTP profiles, empty live catalog не считается positive missing-field доказательством. Broad regression157 не повторялась без необходимости.
Протоколы: [native replay96](ux-ui/acceptance/bgp-nullable-replay-2026-10-12.json), [compiled988](ux-ui/acceptance/bgp-nullable-compiled-2026-10-12.json), [deployed API/UI](ux-ui/acceptance/bgp-nullable-deployed-2026-10-12.json). ReUI/Frame/base-nova primitives/RouterOS конфигурация/пароли сохранены, новые fixtures/сообщения не создавались.
Следующий165 — общий GRE/BGP collector: await внутри Promise.allSettled сериализует независимые reads и не сохраняет успешный BGP при раннем GRE throw; текущие BGP signals также не должны восстанавливать отсутствующий в newest snapshot peer из старого run.12.5 открыт.