fix(api): сохранять ошибки наблюдения BGP для оповещений

This commit is contained in:
Denozordec committed 2026-10-14 00:40:41 +07:00
1 parent 5ac5a25dfc
commit 4f084222ad
18 files changed
+478 -25

No files matched your search

+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-14: блок215 завершён. Пять legacy OSPF/BFD GET больше не скрывают частичные/полные отказы за200. Успешные envelopes сохранены. Local HTTP25, isolated production SQL25, profile14+5; compiled1052/source481 matched. Real Portal API6/anonymous6, native resource2 и OSPF UI1440/320 прошли. Own DB/roles удалены; CHR пароли не менялись. Backend ux-ospf215, frontend ux-gre214. Следующий216 — legacy BGP GET для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок216 завершён. Legacy BGP GET и реальный источник BGP snapshots больше не скрывают неполный опрос. Ошибка наблюдения записывается в snapshot; GRE сохраняется. Пять профильных скриптов, SQL/native17 и live API2/anonymous2/native2/UI1440/320 прошли. Backend ux-bgp216/compiled1052/source483 matched, frontend ux-gre214; собственные DB/roles удалены, пароли CHR не менялись. Следующий217 — WAN runtime: скрытые read errors и disabled no-poll. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -38,6 +38,16 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–196 и ограничения ниже. Runtime backend/frontend ux-peak196. |
## 12.5.216 — неполный BGP опрос в legacy API и snapshots (2026-10-14)
Legacy /api/bgp/sessions возвращал sessions, отбрасывая failures. fetchBgpSessionsForAlerts также подавлял native errors через пустые массивы, и collector отмечал такой снимок без ошибки источника. Теперь endpoint возвращает503+failures, а источник snapshots отвергает неполный опрос. Collector записывает BGP error, сохраняет независимо прочитанный GRE; права, rules/evaluation и формат успешного массива не менялись. /bgp/catalog сохраняет отдельный контракт частичных результатов.
Пять профильных скриптов прошли: catalog HTTP, alert source (populated/empty/partial/failed/disabled/malformed), collector, history и guards сигналов. Backend build прошёл. Baseline ux-ospf215 и production ux-bgp216: по17 SQL/native-fixture проверок, включая anonymous401/wrong permission403 до native reads, пять фаз endpoint/catalog/compiled collector; native writes0 и disabled Home Router calls0. Первая fixture попытка использовала mm:network:read и вернула403: failure сохранён, fixture получил необходимое mm:bgp:read, отдельно оставлена проверка отказа неправильной роли. Все собственные DB/roles удалены.
Backend ux-bgp216 healthy: compiled1052/source483 matched; frontend ux-gre214 сохранён. Portal JWT: legacy/catalog GET200, anonymous401, native resource200 на обоих CHR, real BGP UI1440/320 без page errors/mutations. Сетевые настройки и пароли не менялись; Telegram не отправлялся. Ошибки вводились только в отдельном native HTTP fixture, физическая потеря WAN и полный alert delivery pipeline этим блоком не принимаются.
Протоколы: [baseline](ux-ui/acceptance/bgp216-baseline.json), [fixed](ux-ui/acceptance/bgp216-fixed.json), [initial fixture failure](ux-ui/acceptance/bgp216-initial-fixture-failure.json), [build](ux-ui/acceptance/bgp216-build-proof-2026-10-14.json), [deployment](ux-ui/acceptance/bgp216-deployment-2026-10-14.json), [live](ux-ui/acceptance/bgp216-live-2026-10-14.json). Следующий217 — legacy WAN runtime: подавление ошибок чтения и опрос выключенного устройства.
## 12.5.215 — явные ошибки legacy OSPF/BFD API (2026-10-14)
Пять legacy GET (/ospf/neighbors, /interfaces, /instances, /all и /bfd/sessions) раньше возвращали200 с пустыми/неполными данными при отказе RouterOS. Теперь любой неудачный опрос даёт503 с serverId/serverName/error. Успешные массивы и пять ключей /ospf/all сохранены; правила parser defaults, права и сетевые операции не менялись. Активный frontend использует /ospf/catalog с отдельным контрактом частичных результатов; он сохранён.