chore(test): подтвердить OSPF через GRE на реальном стенде
This commit is contained in:
1 parent
8795969871
commit
c35272273b
11 files changed
+235
-3
No files matched your search
@@ -14,6 +14,8 @@ IPsec82: production certificate data plane/NAT Ping3/3, capped UDP3s, history gr
|
||||
|
||||
Routing83: disabled BGP/OSPF selected/raw409/probe0 и собственная eBGP Established пара с reject-all filters приняты; original routes/config preserved, own DB/native fixtures удалены. [Отчёт](ux-ui/acceptance/routing-bgp-disabled-2026-10-09.json).
|
||||
|
||||
OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/browser checks приняты. Exact own cleanup и исходные7 коллекций×2 passed; runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-gre-2026-10-09.json).
|
||||
|
||||
## Паспорт стенда
|
||||
|
||||
Перед внешним запуском зафиксировать отдельные PostgreSQL и RouterOS тестовые устройства, версии server/client PostgreSQL и RouterOS, HEAD backend/frontend, роли пользователей, число экземпляров backend/планировщика/отправителей и способ их остановки. Для Telegram использовать тестовый чат, для остальных интеграций — тестовые endpoints и учётные записи. Зафиксировать ожидаемые изменения и способ восстановления стенда.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.83 закрыл опрос выключенных устройств в BGP raw/selected и OSPF selected; выбранный OSPF сообщает отказ BFD/routes. Real disabled probe0, eBGP Established на двух CHR с reject-all input/output и baseline cleanup приняты. Backend ux-routing83 healthy, frontend ux-ipsec77. Следующий12.5.84 — реальная OSPF adjacency/маршрут через собственный GRE; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.84 принял реальную OSPFv2 Full adjacency и частные loopback routes через собственный GRE, Ping3/3 в обе стороны и4 live browser PC/320px URL-сценария. Все собственные объекты удалены, baseline7 коллекций×2 восстановлен. Runtime backend ux-routing83/frontend ux-ipsec77, без новой сборки. Следующий12.5.85 — BFD на собственной OSPF/GRE паре; этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-09. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
|
||||
+16
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.83 закрыл опрос выключенных устройств в BGP raw/selected и OSPF selected; выбранный OSPF сообщает отказ BFD/routes. Real disabled probe0, eBGP Established на двух CHR с reject-all input/output и baseline cleanup приняты. Backend ux-routing83 healthy, frontend ux-ipsec77. Следующий12.5.84 — реальная OSPF adjacency/маршрут через собственный GRE; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.84 принял реальную OSPFv2 Full adjacency и частные loopback routes через собственный GRE, Ping3/3 в обе стороны и4 live browser PC/320px URL-сценария. Все собственные объекты удалены, baseline7 коллекций×2 восстановлен. Runtime backend ux-routing83/frontend ux-ipsec77, без новой сборки. Следующий12.5.85 — BFD на собственной OSPF/GRE паре; этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,21 @@
|
||||
| 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–83 и ограничения ниже. Runtime backend ux-routing83/frontend ux-ipsec77. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–84 и ограничения ниже. Runtime backend ux-routing83/frontend ux-ipsec77. |
|
||||
|
||||
## 12.5.84 — OSPF: Full adjacency, GRE и реальная таблица (2026-10-09)
|
||||
|
||||
**Сценарий.** На двух CHR созданы собственные GRE,198.18.84.1/30↔2/30, bridge loopbacks198.18.184.1/32↔2/32, OSPFv2 instances/router IDs, backbone area и templates: ptp GRE/cost10/hello1s/dead4s; passive loopback/cost1. Originate-default=never, redistribution не включалась, public interfaces не включены в OSPF. Baseline instance пустой проверен до создания.
|
||||
|
||||
**Native/API.** Оба соседа Full; только собственные частные remote prefixes выучены и active. Ping loopback3/3 в обе стороны. Production /ospf/catalog и /servers/:id/ospf подтвердили neighbor/route/device context. Raw route имеет distance110 без ospf-metric/оспf-type; main catalog сохраняет cost=null/type Unknown, не выдаёт110 за измеренный cost. Legacy selected route representation сохраняет старую совместимость — не считать её полем фактической метрики. [Native/API отчёт](ux-ui/acceptance/ospf-gre-2026-10-09.json).
|
||||
|
||||
**Браузер.** Headless Edge, настоящий deployed frontend/backend, без interception/mock: два устройства×1280/320 =4/4. DOM содержит нужного соседа/выученный prefix, selected button aria-pressed, server/tab URL восстанавливается после reload, document не расширяется, pageerror0. Скриншоты показывают сводку/топологию верхнего экрана; таблица доступна ниже во внутренней прокрутке Frame. [Browser отчёт](ux-ui/acceptance/browser-ospf-gre-2026-10-09.json), экраны ospf-real-neighbors-server1/2-1280/320-2026-10-09.png. UI/source/dependencies не менялись.
|
||||
|
||||
**Оснастка.** Первая native попытка проверила route сразу при Full до завершения SPF и отказалась; cleanup прошёл. Ожидание исправлено на Full плюс active learned route. Первая browser попытка ожидала role=tab, тогда как существующий UI использует button/aria-pressed; тест поправлен по прочитанному коду, продукт не менялся ради локатора. Финальные native и browser runs прошли; промежуточные попытки не считаются UI acceptance.
|
||||
|
||||
**Очистка.** Exact receipt ID/name/comment/address/interface проверены до удаления. Templates→areas→instances, свои IP/bridge/GRE удалены; контроль обеих сторон после удаления всей пары и bounded route convergence. Исходные ID7 коллекций×2 совпали, адрес195.195.195.195/32 и public/default routes сохранены. Credentials не менялись. Сборок/миграций/смены runtime не было; backend ux-routing83/version1.0.0-test.routing83 healthy, frontend ux-ipsec77. Один локальный commit без push, только evidence/docs.
|
||||
|
||||
Следующий85 — разрешение BFD только на своих GRE/private peers и Up/control-plane checks. Не приняты BFD/failover/optimizer/масштаб/IPv6 и остальные внешние границы. Механика instance/area/template подтверждена [MikroTik OSPF](https://help.mikrotik.com/docs/spaces/ROS/pages/9863229/OSPF); таблицы/Frame сохраняют общие референсы плана.
|
||||
|
||||
## 12.5.83 — маршрутизация: выключенные устройства и реальная eBGP-пара (2026-10-09)
|
||||
|
||||
|
||||
@@ -1982,3 +1982,17 @@ flowchart LR
|
||||
**Runtime.** Одна backend Docker сборка, entry/node --check/pg_restore18.6 и compose --wait passed. mmapp-test/backend:ux-routing83/version1.0.0-test.routing83, image sha256:b68c326b8ee601eb2c490e7517c49614abd8cdfccc9d2af2ec44fb5d3dc5aded7, healthy. Frontend ux-ipsec77 сохранён. Context ipsec82c +четыре routing backend файла рабочего состояния до коммита, archive eaaca441a3eae1c95396abaca4a09fa4a38e4a769adaff276fc4bbcadac18244; label routing83, не итоговый Git SHA. .env backup приватный; миграций нет. Один локальный коммит без push.
|
||||
|
||||
Следующий84 — OSPF Full adjacency и обучение только собственного частного prefix через собственный GRE; исходные public interfaces/default routes сохранить. BGP failover/route propagation/BFD optimizer/recursive diagnostics и внешние границы IPsec82 остаются открытыми. Версия RouterOS7.20+ с явными instance подтверждена [MikroTik BGP](https://help.mikrotik.com/docs/spaces/ROS/pages/328220/BGP) и настоящим API7.24.5; схема таблиц/деталей сохраняет референсы Data Grid Filtering2/List9 общего плана.
|
||||
|
||||
## 12.5.84 — OSPF: Full adjacency, GRE и реальная таблица (2026-10-09)
|
||||
|
||||
**Сценарий.** На двух CHR созданы собственные GRE,198.18.84.1/30↔2/30, bridge loopbacks198.18.184.1/32↔2/32, OSPFv2 instances/router IDs, backbone area и templates: ptp GRE/cost10/hello1s/dead4s; passive loopback/cost1. Originate-default=never, redistribution не включалась, public interfaces не включены в OSPF. Baseline instance пустой проверен до создания.
|
||||
|
||||
**Native/API.** Оба соседа Full; только собственные частные remote prefixes выучены и active. Ping loopback3/3 в обе стороны. Production /ospf/catalog и /servers/:id/ospf подтвердили neighbor/route/device context. Raw route имеет distance110 без ospf-metric/оспf-type; main catalog сохраняет cost=null/type Unknown, не выдаёт110 за измеренный cost. Legacy selected route representation сохраняет старую совместимость — не считать её полем фактической метрики. [Native/API отчёт](ux-ui/acceptance/ospf-gre-2026-10-09.json).
|
||||
|
||||
**Браузер.** Headless Edge, настоящий deployed frontend/backend, без interception/mock: два устройства×1280/320 =4/4. DOM содержит нужного соседа/выученный prefix, selected button aria-pressed, server/tab URL восстанавливается после reload, document не расширяется, pageerror0. Скриншоты показывают сводку/топологию верхнего экрана; таблица доступна ниже во внутренней прокрутке Frame. [Browser отчёт](ux-ui/acceptance/browser-ospf-gre-2026-10-09.json), экраны ospf-real-neighbors-server1/2-1280/320-2026-10-09.png. UI/source/dependencies не менялись.
|
||||
|
||||
**Оснастка.** Первая native попытка проверила route сразу при Full до завершения SPF и отказалась; cleanup прошёл. Ожидание исправлено на Full плюс active learned route. Первая browser попытка ожидала role=tab, тогда как существующий UI использует button/aria-pressed; тест поправлен по прочитанному коду, продукт не менялся ради локатора. Финальные native и browser runs прошли; промежуточные попытки не считаются UI acceptance.
|
||||
|
||||
**Очистка.** Exact receipt ID/name/comment/address/interface проверены до удаления. Templates→areas→instances, свои IP/bridge/GRE удалены; контроль обеих сторон после удаления всей пары и bounded route convergence. Исходные ID7 коллекций×2 совпали, адрес195.195.195.195/32 и public/default routes сохранены. Credentials не менялись. Сборок/миграций/смены runtime не было; backend ux-routing83/version1.0.0-test.routing83 healthy, frontend ux-ipsec77. Один локальный commit без push, только evidence/docs.
|
||||
|
||||
Следующий85 — разрешение BFD только на своих GRE/private peers и Up/control-plane checks. Не приняты BFD/failover/optimizer/масштаб/IPv6 и остальные внешние границы. Механика instance/area/template подтверждена [MikroTik OSPF](https://help.mikrotik.com/docs/spaces/ROS/pages/9863229/OSPF); таблицы/Frame сохраняют общие референсы плана.
|
||||
@@ -30,6 +30,8 @@ IPsec82: production certificate data plane/NAT Ping3/3, capped UDP3s, history gr
|
||||
|
||||
Routing83: disabled BGP/OSPF selected/raw409/probe0 и собственная eBGP Established пара с reject-all filters приняты; original routes/config preserved, own DB/native fixtures удалены. [Отчёт](ux-ui/acceptance/routing-bgp-disabled-2026-10-09.json).
|
||||
|
||||
OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/browser checks приняты. Exact own cleanup и исходные7 коллекций×2 passed; runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-gre-2026-10-09.json).
|
||||
|
||||
## Развёртывание приложения
|
||||
|
||||
Чистые frontend/backend build contexts подготовлены по .gitea/workflows/docker.yml из закреплённого Git HEAD;образы собраны на сервере без push. Локально docker CLI сейчас отсутствует, на сервере доступен Docker. В корневом .dockerignore исключён backend, поэтому обычный backend build из корня не повторяет CI: использовать отдельный backend context, как main workflow. Не передавать .env.local,backend/.env,ключи и локальные node_modules/.next.
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"phase": "2 320",
|
||||
"cases": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"width": 1280,
|
||||
"neighborVisible": true,
|
||||
"learnedRouteVisible": true,
|
||||
"urlRestore": true,
|
||||
"documentFits": true
|
||||
},
|
||||
{
|
||||
"serverId": 1,
|
||||
"width": 320,
|
||||
"neighborVisible": true,
|
||||
"learnedRouteVisible": true,
|
||||
"urlRestore": true,
|
||||
"documentFits": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"width": 1280,
|
||||
"neighborVisible": true,
|
||||
"learnedRouteVisible": true,
|
||||
"urlRestore": true,
|
||||
"documentFits": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"width": 320,
|
||||
"neighborVisible": true,
|
||||
"learnedRouteVisible": true,
|
||||
"urlRestore": true,
|
||||
"documentFits": true
|
||||
}
|
||||
],
|
||||
"errors": []
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"name": "mm-ospf84-1791541911027",
|
||||
"observations": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"nativeNeighbor": {
|
||||
".id": "*F3FDDC00",
|
||||
"router-id": "198.18.184.2",
|
||||
"address": "198.18.84.2",
|
||||
"interface": "mm-ospf84-1791541911027",
|
||||
"state": "Full",
|
||||
"state-changes": "6"
|
||||
},
|
||||
"nativeRoute": {
|
||||
".id": "*2014C000",
|
||||
"dst-address": "198.18.184.2/32",
|
||||
"gateway": "198.18.84.2%mm-ospf84-1791541911027",
|
||||
"ospf": "true",
|
||||
"active": "true",
|
||||
"distance": "110"
|
||||
},
|
||||
"catalogNeighbors": [
|
||||
{
|
||||
"id": "*F3FDDC00",
|
||||
"serverId": 1,
|
||||
"serverName": "CHR",
|
||||
"serverSite": "",
|
||||
"serverCountry": "",
|
||||
"address": "198.18.84.2",
|
||||
"routerId": "198.18.184.2",
|
||||
"instance": "mm-ospf84-1791541911027",
|
||||
"area": "mm-ospf84-1791541911027",
|
||||
"areaId": "0.0.0.0",
|
||||
"interface": "mm-ospf84-1791541911027",
|
||||
"state": "Full",
|
||||
"uptime": "4s",
|
||||
"stateChanges": 6,
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"catalogRoutes": [
|
||||
{
|
||||
"id": "*2014C000",
|
||||
"serverId": 1,
|
||||
"serverName": "CHR",
|
||||
"serverSite": "",
|
||||
"destination": "198.18.184.2/32",
|
||||
"type": "Unknown",
|
||||
"cost": null,
|
||||
"nextHop": "198.18.84.2",
|
||||
"via": "mm-ospf84-1791541911027",
|
||||
"area": ""
|
||||
}
|
||||
],
|
||||
"pingReceived": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"nativeNeighbor": {
|
||||
".id": "*F3FDDC00",
|
||||
"router-id": "198.18.184.1",
|
||||
"address": "198.18.84.1",
|
||||
"interface": "mm-ospf84-1791541911027",
|
||||
"state": "Full",
|
||||
"state-changes": "5"
|
||||
},
|
||||
"nativeRoute": {
|
||||
".id": "*2014C000",
|
||||
"dst-address": "198.18.184.1/32",
|
||||
"gateway": "198.18.84.1%mm-ospf84-1791541911027",
|
||||
"ospf": "true",
|
||||
"active": "true",
|
||||
"distance": "110"
|
||||
},
|
||||
"catalogNeighbors": [
|
||||
{
|
||||
"id": "*F3FDDC00",
|
||||
"serverId": 2,
|
||||
"serverName": "CHR",
|
||||
"serverSite": "",
|
||||
"serverCountry": "",
|
||||
"address": "198.18.84.1",
|
||||
"routerId": "198.18.184.1",
|
||||
"instance": "mm-ospf84-1791541911027",
|
||||
"area": "mm-ospf84-1791541911027",
|
||||
"areaId": "0.0.0.0",
|
||||
"interface": "mm-ospf84-1791541911027",
|
||||
"state": "Full",
|
||||
"uptime": "4s",
|
||||
"stateChanges": 5,
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"catalogRoutes": [
|
||||
{
|
||||
"id": "*2014C000",
|
||||
"serverId": 2,
|
||||
"serverName": "CHR",
|
||||
"serverSite": "",
|
||||
"destination": "198.18.184.1/32",
|
||||
"type": "Unknown",
|
||||
"cost": null,
|
||||
"nextHop": "198.18.84.1",
|
||||
"via": "mm-ospf84-1791541911027",
|
||||
"area": ""
|
||||
}
|
||||
],
|
||||
"pingReceived": 3
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/routing/ospf/interface-template": true,
|
||||
"/routing/ospf/area": true,
|
||||
"/routing/ospf/instance": true,
|
||||
"/interface/gre": true,
|
||||
"/interface/bridge": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/routing/ospf/interface-template": true,
|
||||
"/routing/ospf/area": true,
|
||||
"/routing/ospf/instance": true,
|
||||
"/interface/gre": true,
|
||||
"/interface/bridge": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true
|
||||
}
|
||||
],
|
||||
"currentRoutes": [
|
||||
{
|
||||
".id": "*20145050",
|
||||
"dst-address": "198.18.84.0/30",
|
||||
"gateway": "mm-ospf84-1791541911027",
|
||||
"active": "true",
|
||||
"distance": "0",
|
||||
"routing-table": "main"
|
||||
},
|
||||
{
|
||||
".id": "*2014C000",
|
||||
"dst-address": "198.18.184.1/32",
|
||||
"gateway": "198.18.84.1%mm-ospf84-1791541911027",
|
||||
"active": "true",
|
||||
"ospf": "true",
|
||||
"distance": "110",
|
||||
"routing-table": "main"
|
||||
},
|
||||
{
|
||||
".id": "*20145060",
|
||||
"dst-address": "198.18.184.2/32",
|
||||
"gateway": "mm-ospf84-1791541911027-loop",
|
||||
"active": "true",
|
||||
"distance": "0",
|
||||
"routing-table": "main"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 129 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 129 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Reference in new issue
Block a user