chore(test): подтвердить резервный путь OSPF и сохранить наблюдения потерь

This commit is contained in:
Denozordec committed 2026-10-09 21:59:46 +07:00
1 parent 8b7bff165a
commit ee704a86f2
10 files changed
+1823 -3

No files matched your search

+24
View File
@@ -811,3 +811,27 @@ Production image не содержит dev-only jose: первый fixture impor
**Runtime.** Один backend build ux-diagnostics89/version1.0.0-test.diagnostics89, image sha256:97c1cff01efd5055d3811b742e293180d5999ff1e326e42242e5c975b5f70349. Backend/PG healthy, frontend ux-optimizer87 сохранён/принят. Context recursive88 +3 exec/type files, override SHA2ca8c80d13a2dcce8b09c905f2b65d7467892ee6918cc102caad2d15d90bacbf7; label не Git SHA. Entry/node --check/pg_restore18.6/compose --wait passed, dependencies/apt cached. .env backup приватный, миграций и frontend rebuild нет. Один локальный commit без push.
Продолжение90 — два собственных GRE пути OSPF/BFD, потеря primary, переход на alternate, packet observations и возврат. Сохраняются sustained BFD-only/физическая WAN failure/IPv6/масштаб/максимальная производительность/Portal SSO и другие внешние границы. Квота56% использовано после блока; этап12.5 открыт.
## 12.5.90 — OSPF/BFD: переход на резервный GRE и возврат (2026-10-09)
**Топология.** Свои primary GRE public↔public/link198.18.90.0/30/cost10/MTU1400 и alternate GRE/link198.18.91.0/30/cost100/MTU1380. Резервный GRE имеет отдельные outer endpoints198.18.92.1↔2 внутри собственного WireGuard/UDP59990/MTU1420. WireGuard ограничен peer /32, ключи созданы RouterOS; private keys не сохранены в отчёте. OSPFv2 private instances/area/loopbacks198.18.190.1/32↔2, hello1s/dead20s; BFD200ms×3 только на двух своих GRE. Originate-default=never, public interfaces не включались в OSPF. Два пути используют один public WAN; физическое резервирование не доказано.
**Control/data plane.** На обоих CHR сначала2 Full и2 BFD Up, loopback через primary. Отключён только собственный primary GRE наCHR1; alternate остаётся Full/Up, native immediate-gw и API via показывают резервный интерфейс. Включение primary возвращает preferred path. Steady Ping3/3 в обе стороны во всех трёх фазах, в финальном control run с первой попытки. Исходная конфигурация восстановлена.
| Наблюдение | Результат / граница |
| --- | --- |
| Primary BFD не Up / OSPF не Full | Первое HTTP-наблюдение797,7ms при dead20s |
| Active loopback через alternate | Первое HTTP-наблюдение4250,4ms |
| Ping во время переключения | Отдельная фаза18/40,55% loss; бесшовность не принята |
| Steady/возврат | 3/3×2 primary, alternate, recovered primary |
| UI во время alternate | 4/4 PC/320px, route peer/via DOM, BFD peer, reload URL, pageerror0 |
[Объединённый отчёт](ux-ui/acceptance/ospf-failover-2026-10-09.json) сохраняет packet/browser phase и отдельную control phase с их именами/timestamps. В packet phase долгий native REST Ping задержал получение status batch:7648ms не является измерением BFD detection. В control phase длинного Ping во время sampling не было; времена включают RPC и остаются верхними границами первого наблюдения, не event timestamps/SLA. Потери не скрыты успешным steady Ping.
**Оснастка.** Первая пара с одинаковыми outer public endpoints не достигла готовности; cleanup8 коллекций×2 прошёл. Для дальнейшего теста outer endpoints разграничены через свой WireGuard. Packet/browser phase подтвердила alternate path и4 UI cases, но первый Ping после возврата дал2/3. Cleanup10×2 прошёл. Затем выполнен только профильный control/recovery run без повторной UI-приёмки; bounded3 попытки сохраняют каждый результат, финальные steady probes прошли с первой. Product/source/dependencies не менялись, сборок/полной регрессии не было.
**Визуальная приёмка.** [Browser отчёт](ux-ui/acceptance/browser-ospf-failover-2026-10-09.json), [ПК](ux-ui/screens/ospf-real-failover-server1-1280-2026-10-09.png), [320px](ux-ui/screens/ospf-real-failover-server1-320-2026-10-09.png). На PC снимке подтверждён next-hop198.18.91.2 и alternate via. Тип/Cost неизвестны и не заменены distance110. При просмотре найдено, что первый столбец слишком узок: CIDR198.18.190.2/32 визуально обрезан; это следующий самостоятельный UI блок91. Mobile проверяет document fit и наличие значений в DOM, а не одновременную видимость всех столбцов в горизонтальной прокрутке.
**Очистка.** Exact ID/name/comment/address/interface/interfaces/addresses/public key preflight; удалены только свои templates/area/instance/BFD/IP/bridge/GRE/WG peers/interfaces. Исходные IDs10 коллекций×2 совпали, public/default routes и195.195.195.195/32 сохранены. WG secret fields не включены в report. Оба CHR доступны, passwords неизменны; временных контейнеров не осталось. Backend diagnostics89/PG healthy, frontend optimizer87 сохранён. Один локальный commit без push.
Схема: primary → BFD/adjacency loss → alternate GRE over WG → проверка data plane → восстановленный primary. Транспорт подтверждён [GRE](https://help.mikrotik.com/docs/spaces/ROS/pages/24805531/GRE) и [WireGuard](https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard); таблицы сохраняют референсы общего плана. Продолжение91 — обрезка CIDR, затем BGP propagation/остальные внешние границы. BFD-only устойчивый запрет/physical WAN/IPv6/scale/maximum throughput/Portal SSO остаются открыты. Квота66% использовано; этап12.5 открыт.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-09: 12.5.89 принял терминал/диагностику: native Ping/trace/route/MTU, DNS приложения,16 disabled409/probe0,12 signed JWT gates и8 live UI cases. Исправлены exec enabled guard и avg RTT (native avg-rtt, не последний reply). Baseline7 коллекций×2 сохранён. Backend ux-diagnostics89/frontend ux-optimizer87. Следующий12.5.90 — контролируемый OSPF/BFD failover между двумя собственными GRE путями и восстановление; дальнейшие внешние ограничения сохраняются. Квота56% использовано; этап12.5 открыт.
Актуальное продолжение 2026-10-09: 12.5.90 принял контролируемый OSPF/BFD failover primary GRE→alternate GRE over WireGuard→primary; steady Ping3/3×2 во всех фазах,4 UI cases. BFD/not-Full≈798ms, first alternate route≈4250ms — HTTP observations, не SLA. Отдельный переходный Ping18/40/55% loss сохранён, бесшовность не заявлена. Baseline10 коллекций×2 восстановлен. Runtime diagnostics89/optimizer87. Следующий12.5.91 — устранить обрезку IPv4 CIDR в OSPF Data Grid, выявленную live desktop снимком; затем BGP route propagation и оставшиеся внешние границы. Квота66% использовано; этап12.5 открыт.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-09. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+26 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-09: 12.5.89 принял терминал/диагностику: native Ping/trace/route/MTU, DNS приложения,16 disabled409/probe0,12 signed JWT gates и8 live UI cases. Исправлены exec enabled guard и avg RTT (native avg-rtt, не последний reply). Baseline7 коллекций×2 сохранён. Backend ux-diagnostics89/frontend ux-optimizer87. Следующий12.5.90 — контролируемый OSPF/BFD failover между двумя собственными GRE путями и восстановление; дальнейшие внешние ограничения сохраняются. Квота56% использовано; этап12.5 открыт.
Актуальное продолжение 2026-10-09: 12.5.90 принял контролируемый OSPF/BFD failover primary GRE→alternate GRE over WireGuard→primary; steady Ping3/3×2 во всех фазах,4 UI cases. BFD/not-Full≈798ms, first alternate route≈4250ms — HTTP observations, не SLA. Отдельный переходный Ping18/40/55% loss сохранён, бесшовность не заявлена. Baseline10 коллекций×2 восстановлен. Runtime diagnostics89/optimizer87. Следующий12.5.91 — устранить обрезку IPv4 CIDR в OSPF Data Grid, выявленную live desktop снимком; затем BGP route propagation и оставшиеся внешние границы. Квота66% использовано; этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,31 @@
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–89 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-optimizer87. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–90 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-optimizer87. |
## 12.5.90 — OSPF/BFD: переход на резервный GRE и возврат (2026-10-09)
**Топология.** Свои primary GRE public↔public/link198.18.90.0/30/cost10/MTU1400 и alternate GRE/link198.18.91.0/30/cost100/MTU1380. Резервный GRE имеет отдельные outer endpoints198.18.92.1↔2 внутри собственного WireGuard/UDP59990/MTU1420. WireGuard ограничен peer /32, ключи созданы RouterOS; private keys не сохранены в отчёте. OSPFv2 private instances/area/loopbacks198.18.190.1/32↔2, hello1s/dead20s; BFD200ms×3 только на двух своих GRE. Originate-default=never, public interfaces не включались в OSPF. Два пути используют один public WAN; физическое резервирование не доказано.
**Control/data plane.** На обоих CHR сначала2 Full и2 BFD Up, loopback через primary. Отключён только собственный primary GRE наCHR1; alternate остаётся Full/Up, native immediate-gw и API via показывают резервный интерфейс. Включение primary возвращает preferred path. Steady Ping3/3 в обе стороны во всех трёх фазах, в финальном control run с первой попытки. Исходная конфигурация восстановлена.
| Наблюдение | Результат / граница |
| --- | --- |
| Primary BFD не Up / OSPF не Full | Первое HTTP-наблюдение797,7ms при dead20s |
| Active loopback через alternate | Первое HTTP-наблюдение4250,4ms |
| Ping во время переключения | Отдельная фаза18/40,55% loss; бесшовность не принята |
| Steady/возврат | 3/3×2 primary, alternate, recovered primary |
| UI во время alternate | 4/4 PC/320px, route peer/via DOM, BFD peer, reload URL, pageerror0 |
[Объединённый отчёт](ux-ui/acceptance/ospf-failover-2026-10-09.json) сохраняет packet/browser phase и отдельную control phase с их именами/timestamps. В packet phase долгий native REST Ping задержал получение status batch:7648ms не является измерением BFD detection. В control phase длинного Ping во время sampling не было; времена включают RPC и остаются верхними границами первого наблюдения, не event timestamps/SLA. Потери не скрыты успешным steady Ping.
**Оснастка.** Первая пара с одинаковыми outer public endpoints не достигла готовности; cleanup8 коллекций×2 прошёл. Для дальнейшего теста outer endpoints разграничены через свой WireGuard. Packet/browser phase подтвердила alternate path и4 UI cases, но первый Ping после возврата дал2/3. Cleanup10×2 прошёл. Затем выполнен только профильный control/recovery run без повторной UI-приёмки; bounded3 попытки сохраняют каждый результат, финальные steady probes прошли с первой. Product/source/dependencies не менялись, сборок/полной регрессии не было.
**Визуальная приёмка.** [Browser отчёт](ux-ui/acceptance/browser-ospf-failover-2026-10-09.json), [ПК](ux-ui/screens/ospf-real-failover-server1-1280-2026-10-09.png), [320px](ux-ui/screens/ospf-real-failover-server1-320-2026-10-09.png). На PC снимке подтверждён next-hop198.18.91.2 и alternate via. Тип/Cost неизвестны и не заменены distance110. При просмотре найдено, что первый столбец слишком узок: CIDR198.18.190.2/32 визуально обрезан; это следующий самостоятельный UI блок91. Mobile проверяет document fit и наличие значений в DOM, а не одновременную видимость всех столбцов в горизонтальной прокрутке.
**Очистка.** Exact ID/name/comment/address/interface/interfaces/addresses/public key preflight; удалены только свои templates/area/instance/BFD/IP/bridge/GRE/WG peers/interfaces. Исходные IDs10 коллекций×2 совпали, public/default routes и195.195.195.195/32 сохранены. WG secret fields не включены в report. Оба CHR доступны, passwords неизменны; временных контейнеров не осталось. Backend diagnostics89/PG healthy, frontend optimizer87 сохранён. Один локальный commit без push.
Схема: primary → BFD/adjacency loss → alternate GRE over WG → проверка data plane → восстановленный primary. Транспорт подтверждён [GRE](https://help.mikrotik.com/docs/spaces/ROS/pages/24805531/GRE) и [WireGuard](https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard); таблицы сохраняют референсы общего плана. Продолжение91 — обрезка CIDR, затем BGP propagation/остальные внешние границы. BFD-only устойчивый запрет/physical WAN/IPv6/scale/maximum throughput/Portal SSO остаются открыты. Квота66% использовано; этап12.5 открыт.
## 12.5.89 — диагностика и терминал: реальные ответы и JWT-права (2026-10-09)
+24
View File
@@ -2120,3 +2120,27 @@ Production image не содержит dev-only jose: первый fixture impor
**Runtime.** Один backend build ux-diagnostics89/version1.0.0-test.diagnostics89, image sha256:97c1cff01efd5055d3811b742e293180d5999ff1e326e42242e5c975b5f70349. Backend/PG healthy, frontend ux-optimizer87 сохранён/принят. Context recursive88 +3 exec/type files, override SHA2ca8c80d13a2dcce8b09c905f2b65d7467892ee6918cc102caad2d15d90bacbf7; label не Git SHA. Entry/node --check/pg_restore18.6/compose --wait passed, dependencies/apt cached. .env backup приватный, миграций и frontend rebuild нет. Один локальный commit без push.
Продолжение90 — два собственных GRE пути OSPF/BFD, потеря primary, переход на alternate, packet observations и возврат. Сохраняются sustained BFD-only/физическая WAN failure/IPv6/масштаб/максимальная производительность/Portal SSO и другие внешние границы. Квота56% использовано после блока; этап12.5 открыт.
## 12.5.90 — OSPF/BFD: переход на резервный GRE и возврат (2026-10-09)
**Топология.** Свои primary GRE public↔public/link198.18.90.0/30/cost10/MTU1400 и alternate GRE/link198.18.91.0/30/cost100/MTU1380. Резервный GRE имеет отдельные outer endpoints198.18.92.1↔2 внутри собственного WireGuard/UDP59990/MTU1420. WireGuard ограничен peer /32, ключи созданы RouterOS; private keys не сохранены в отчёте. OSPFv2 private instances/area/loopbacks198.18.190.1/32↔2, hello1s/dead20s; BFD200ms×3 только на двух своих GRE. Originate-default=never, public interfaces не включались в OSPF. Два пути используют один public WAN; физическое резервирование не доказано.
**Control/data plane.** На обоих CHR сначала2 Full и2 BFD Up, loopback через primary. Отключён только собственный primary GRE наCHR1; alternate остаётся Full/Up, native immediate-gw и API via показывают резервный интерфейс. Включение primary возвращает preferred path. Steady Ping3/3 в обе стороны во всех трёх фазах, в финальном control run с первой попытки. Исходная конфигурация восстановлена.
| Наблюдение | Результат / граница |
| --- | --- |
| Primary BFD не Up / OSPF не Full | Первое HTTP-наблюдение797,7ms при dead20s |
| Active loopback через alternate | Первое HTTP-наблюдение4250,4ms |
| Ping во время переключения | Отдельная фаза18/40,55% loss; бесшовность не принята |
| Steady/возврат | 3/3×2 primary, alternate, recovered primary |
| UI во время alternate | 4/4 PC/320px, route peer/via DOM, BFD peer, reload URL, pageerror0 |
[Объединённый отчёт](ux-ui/acceptance/ospf-failover-2026-10-09.json) сохраняет packet/browser phase и отдельную control phase с их именами/timestamps. В packet phase долгий native REST Ping задержал получение status batch:7648ms не является измерением BFD detection. В control phase длинного Ping во время sampling не было; времена включают RPC и остаются верхними границами первого наблюдения, не event timestamps/SLA. Потери не скрыты успешным steady Ping.
**Оснастка.** Первая пара с одинаковыми outer public endpoints не достигла готовности; cleanup8 коллекций×2 прошёл. Для дальнейшего теста outer endpoints разграничены через свой WireGuard. Packet/browser phase подтвердила alternate path и4 UI cases, но первый Ping после возврата дал2/3. Cleanup10×2 прошёл. Затем выполнен только профильный control/recovery run без повторной UI-приёмки; bounded3 попытки сохраняют каждый результат, финальные steady probes прошли с первой. Product/source/dependencies не менялись, сборок/полной регрессии не было.
**Визуальная приёмка.** [Browser отчёт](ux-ui/acceptance/browser-ospf-failover-2026-10-09.json), [ПК](ux-ui/screens/ospf-real-failover-server1-1280-2026-10-09.png), [320px](ux-ui/screens/ospf-real-failover-server1-320-2026-10-09.png). На PC снимке подтверждён next-hop198.18.91.2 и alternate via. Тип/Cost неизвестны и не заменены distance110. При просмотре найдено, что первый столбец слишком узок: CIDR198.18.190.2/32 визуально обрезан; это следующий самостоятельный UI блок91. Mobile проверяет document fit и наличие значений в DOM, а не одновременную видимость всех столбцов в горизонтальной прокрутке.
**Очистка.** Exact ID/name/comment/address/interface/interfaces/addresses/public key preflight; удалены только свои templates/area/instance/BFD/IP/bridge/GRE/WG peers/interfaces. Исходные IDs10 коллекций×2 совпали, public/default routes и195.195.195.195/32 сохранены. WG secret fields не включены в report. Оба CHR доступны, passwords неизменны; временных контейнеров не осталось. Backend diagnostics89/PG healthy, frontend optimizer87 сохранён. Один локальный commit без push.
Схема: primary → BFD/adjacency loss → alternate GRE over WG → проверка data plane → восстановленный primary. Транспорт подтверждён [GRE](https://help.mikrotik.com/docs/spaces/ROS/pages/24805531/GRE) и [WireGuard](https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard); таблицы сохраняют референсы общего плана. Продолжение91 — обрезка CIDR, затем BGP propagation/остальные внешние границы. BFD-only устойчивый запрет/physical WAN/IPv6/scale/maximum throughput/Portal SSO остаются открыты. Квота66% использовано; этап12.5 открыт.
@@ -0,0 +1,39 @@
{
"date": "2026-10-09",
"phase": "2 320",
"cases": [
{
"serverId": 1,
"width": 1280,
"alternateRouteVisible": true,
"alternateBfdPeerVisible": true,
"urlRestore": true,
"documentFits": true
},
{
"serverId": 1,
"width": 320,
"alternateRouteVisible": true,
"alternateBfdPeerVisible": true,
"urlRestore": true,
"documentFits": true
},
{
"serverId": 2,
"width": 1280,
"alternateRouteVisible": true,
"alternateBfdPeerVisible": true,
"urlRestore": true,
"documentFits": true
},
{
"serverId": 2,
"width": 320,
"alternateRouteVisible": true,
"alternateBfdPeerVisible": true,
"urlRestore": true,
"documentFits": true
}
],
"errors": []
}
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB