fix(gre): сохранять удалённый внутренний IP туннеля

This commit is contained in:
Denozordec committed 2026-10-08 15:50:11 +07:00
1 parent 56f29a60d1
commit bd3f996f55
12 files changed
+112 -14

No files matched your search

+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-08: 12.5.51 создал реальную GRE пару через production API, проверил MTU/enable/disable, двусторонний Ping3/3 и реальные UI формы/URL/320px. Обе стороны удалены, выбранная конфигурация восстановлена. Подтверждён дефект: remoteInnerIp теряется в receipt и форме. Следующий12.5.52 — исправить сохранение peer IP; runtime backend8782054/frontendb55588f прежний. При VPN приёмке создавать собственные реальные тестовые объекты, особенно GRE, и удалять их после проверки.
Актуальное продолжение 2026-10-08: 12.5.52 локально исправил потерю remoteInnerIp: versioned metadata комментария GRE, чистый пользовательский comment в DTO, сохранение peer в snapshot/restore и PATCH, явная очистка из формы. Backend pipeline tests/entity snapshots и browser5/5, backend/frontend typecheck passed; lint без ошибок (одно прежнее предупреждение). Исправление ещё не развёрнуто: runtime backend8782054/frontendb55588f. Следующий12.5.53 — собрать/развернуть обе части и повторить реальный GRE lifecycle/форму/очистку с metadata.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -34,7 +34,17 @@
| 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–51 и ограничения ниже. Runtime backend8782054/frontendb55588f. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–52 и ограничения ниже. Runtime backend8782054/frontendb55588f. |
## 12.5.52 — сохранение удалённого внутреннего IP GRE (2026-10-08)
Исправлен дефект, обнаруженный на настоящей GRE паре в12.5.51. Новый backend services/gre-comment.ts хранит remoteInnerIp в версионированном base64url JSON suffix комментария RouterOS. Это метаданные приложения, не маршруты и не /ip/address на удалённом устройстве. greInterfaceBody сохраняет peer, mapGreLive возвращает его и чистый пользовательский комментарий; snapshot содержит peer и исходный raw comment для корректного restore. PATCH без remoteInnerIp сохраняет текущий peer; явная пустая строка очищает. Форма теперь передаёт пустую строку при очистке вместо пропуска поля.
Старые gateway/network комментарии читаются и сохраняются при restore; непонятный/повреждённый suffix остаётся обычным пользовательским текстом. Явная очистка legacy peer записывает пустое metadata значение, чтобы прежняя подсказка комментария не возвращала удалённое поле. Метаданные не создают сетевые маршруты и не содержат PSK/паролей; GRE/IPsec secret logic не менялась. Raw metadata видна в прямом RouterOS comment, в API/UI служебный suffix отделён от пользовательского текста.
gre-comment.test.ts проверил create plan→native comment→map→snapshot→restore, Unicode/несколько строк, idempotence, legacy, invalid suffix и explicit clear; планы ограничены GRE/IP, без /ip/route. Прежний entity-snapshots.test.ts passed. Playwright gre-form+gre-toggle5/5: создание/DTO/edit, сохранённый ввод при отказе и неверном receipt, explicit empty remoteInnerIp, подтверждение переключения. Browser ответы локальных проверок подменены; новое metadata на реальном RouterOS этим блоком не принято. Backend tsc --noEmit и scoped frontend typecheck passed. Eslint без ошибок, одно прежнее unused bool предупреждение в entity-snapshots.ts:258; дифф не меняет этот helper.
Код и тесты готовы к сборке; удалённый runtime пока backend8782054/frontendb55588f, реальные GRE объекты из51 удалены. Следующий12.5.53 — production Docker build/deploy backend и frontend, новая собственная GRE пара с независимой проверкой peer read/MTU-toggle/clear/restore, реальный UI и двусторонний Ping, очистка по имени и decoded ownership comment. Пользовательское требование реальных VPN объектов сохраняется. Локальный коммит без push.
## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08)