chore(test): развернуть и проверить устойчивость меню GRE
This commit is contained in:
1 parent
731803bade
commit
ed80aef195
11 files changed
+433
-7
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Статус на2026-10-08: backend/frontendbd3f996, backend healthy. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
Статус на2026-10-08: backendbd3f996/frontend731803b, backend healthy. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
|
||||
## Паспорт стенда
|
||||
|
||||
@@ -385,3 +385,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
|
||||
Проверки: новый tests/e2e/gre-menu-refresh.spec.ts открывает меню, запускает GET без outside pointer event, проверяет сохранение меню, disabled во время загрузки, восстановление enabled и свежий peer IP в форме. На прежнем HEAD тест падает именно из-за исчезнувшего menuitem; исправленный код проходит. Вместе с gre-toggle.spec.ts — 3/3 passed. Scoped TypeScript (tmp/tsconfig-speed-check.json) и ESLint изменённых файлов passed. Первую фикстуру скорректировали: инициализация источника допускает несколько GET, задержка включается только при проверяемом refresh. ReUI data-grid checklist проверен, общие компоненты не менялись.
|
||||
|
||||
Это локальное исправление. На тестовом сервере backend/frontend bd3f996; live CHR сценарий стабильности меню пока не проверен. Следующий12.5.55 — собрать и развернуть frontend, создать собственную реальную GRE пару, проверить меню при обновлении и форму, затем удалить только собственные интерфейсы/IP и проверить baseline. Реальные VPN объекты обязательны по указанию пользователя. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.55 — развёртывание устойчивого меню и повторная реальная GRE проверка (2026-10-08)
|
||||
|
||||
[Развёртывание](ux-ui/acceptance/deployed-731803b-2026-10-08.json): frontend731803bade672e4e5bd58ffbc223563f3318d4a9/version1.0.0-test.731803b. Архив Git SHA256 b6ff604a03e65151b4f2fc1406885b97f40240646f651a371fd603c00e1e867b совпал после передачи. Staging предыдущей main-совместимой сборки обновлён единственным изменённым production input — gre-tunnels-data-grid.tsx; package-lock/Dockerfile совпали. Docker build exit0, Next production compile/full TypeScript passed. Обновлена только MMAPP_IMAGE_TAG, compose validation passed; перезапущен только frontend, прежний образ оставлен для rollback. Backendbd3f996 не менялся и healthy. Контрольные значения БД до/после: servers2/speedHistory9/retention14/migrations9 совпали. Push не выполнялся.
|
||||
|
||||
[GRE native lifecycle](ux-ui/acceptance/gre-real-menu-731803b-2026-10-08.json): собственная новая пара mm-acceptance-gre-1791468767519, подсеть198.18.255.248/30 проверена на пересечение, оба GRE раздела исходно пусты. POST201/201, native peer metadata, snapshot/restore, MTU/disable/enable/clear подтверждены; Ping3/3 в обе стороны,0%loss. [Production browser](ux-ui/acceptance/browser-gre-menu-731803b-2026-10-08.json): никаких HTTP mocks, на каждом CHR меню открыто один раз и пережило live GET200 при1280 и320px; menuReopens0. Форма совпала с native local/remote inner IP и чистым пользовательским comment; URL/reload сохранён, JS/API errors0. Toolbar refresh вызван без outside pointer event: обычный клик вне меню должен его закрывать. Controlled pending permissions проверены локально в54, здесь подтверждено реальное обновление данных.
|
||||
|
||||
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
|
||||
|
||||
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.54 локально исправил закрытие меню GRE при перерисовке: стабильный компонент ячейки получает актуальные обработчики и права через React context. Playwright 3/3, scoped TypeScript и ESLint passed; новый тест воспроизводит сбой на прежнем коде. Исправление ещё не развёрнуто: удалённый backend/frontend остаётся bd3f996. Следующий12.5.55 — Docker build/deploy frontend и повторная проверка меню на собственной реальной GRE паре с очисткой. Этап12.5 остаётся открытым.
|
||||
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## Актуальная точка продолжения — 2026-10-08
|
||||
|
||||
Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backend/frontendbd3f996 и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; По уточнению пользователя12.5.51 создал реальные GRE туннели и подтвердил lifecycle/связность; обнаружена потеря peer IP, 12.5.52 локально исправил сохранение peer metadata, профильные проверки passed; 12.5.53 развернул исправление и подтвердил его на реальной GRE паре/API/UI; 12.5.54 локально исправил устойчивость меню GRE, профильные проверки passed; следующий12.5.55 — frontend Docker deploy и повторная проверка на реальной GRE паре. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения.
|
||||
Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backendbd3f996/frontend731803b и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; По уточнению пользователя12.5.51 создал реальные GRE туннели и подтвердил lifecycle/связность; обнаружена потеря peer IP, 12.5.52 локально исправил сохранение peer metadata, профильные проверки passed; 12.5.53 развернул исправление и подтвердил его на реальной GRE паре/API/UI; 12.5.54 локально исправил устойчивость меню GRE, профильные проверки passed; 12.5.55 развернул frontend731803b и подтвердил устойчивость меню на реальной GRE паре; следующий12.5.56 — читаемые внутренние IP в мобильной форме GRE. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения.
|
||||
|
||||
Выполненные внешние сценарии не заменяют приёмку оставшихся интеграций и условий эксплуатации. Датированные продолжения ниже — история; точный следующий шаг указан в начале [журнала](ux-ui-progress.md).
|
||||
|
||||
|
||||
+12
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.54 локально исправил закрытие меню GRE при перерисовке: стабильный компонент ячейки получает актуальные обработчики и права через React context. Playwright 3/3, scoped TypeScript и ESLint passed; новый тест воспроизводит сбой на прежнем коде. Исправление ещё не развёрнуто: удалённый backend/frontend остаётся bd3f996. Следующий12.5.55 — Docker build/deploy frontend и повторная проверка меню на собственной реальной GRE паре с очисткой. Этап12.5 остаётся открытым.
|
||||
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
|
||||
|
||||
Общий план: [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–54 и ограничения ниже. Runtime backend/frontendbd3f996. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–55 и ограничения ниже. Runtime backendbd3f996/frontend731803b. |
|
||||
|
||||
## 12.5.55 — развёртывание устойчивого меню и повторная реальная GRE проверка (2026-10-08)
|
||||
|
||||
[Развёртывание](ux-ui/acceptance/deployed-731803b-2026-10-08.json): frontend731803bade672e4e5bd58ffbc223563f3318d4a9/version1.0.0-test.731803b. Архив Git SHA256 b6ff604a03e65151b4f2fc1406885b97f40240646f651a371fd603c00e1e867b совпал после передачи. Staging предыдущей main-совместимой сборки обновлён единственным изменённым production input — gre-tunnels-data-grid.tsx; package-lock/Dockerfile совпали. Docker build exit0, Next production compile/full TypeScript passed. Обновлена только MMAPP_IMAGE_TAG, compose validation passed; перезапущен только frontend, прежний образ оставлен для rollback. Backendbd3f996 не менялся и healthy. Контрольные значения БД до/после: servers2/speedHistory9/retention14/migrations9 совпали. Push не выполнялся.
|
||||
|
||||
[GRE native lifecycle](ux-ui/acceptance/gre-real-menu-731803b-2026-10-08.json): собственная новая пара mm-acceptance-gre-1791468767519, подсеть198.18.255.248/30 проверена на пересечение, оба GRE раздела исходно пусты. POST201/201, native peer metadata, snapshot/restore, MTU/disable/enable/clear подтверждены; Ping3/3 в обе стороны,0%loss. [Production browser](ux-ui/acceptance/browser-gre-menu-731803b-2026-10-08.json): никаких HTTP mocks, на каждом CHR меню открыто один раз и пережило live GET200 при1280 и320px; menuReopens0. Форма совпала с native local/remote inner IP и чистым пользовательским comment; URL/reload сохранён, JS/API errors0. Toolbar refresh вызван без outside pointer event: обычный клик вне меню должен его закрывать. Controlled pending permissions проверены локально в54, здесь подтверждено реальное обновление данных.
|
||||
|
||||
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
|
||||
|
||||
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
|
||||
|
||||
## 12.5.54 — устойчивость меню GRE при обновлении таблицы (2026-10-08)
|
||||
|
||||
|
||||
+11
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.54 локально исправил закрытие меню GRE при перерисовке: стабильный компонент ячейки получает актуальные обработчики и права через React context. Playwright 3/3, scoped TypeScript и ESLint passed; новый тест воспроизводит сбой на прежнем коде. Исправление ещё не развёрнуто: удалённый backend/frontend остаётся bd3f996. Следующий12.5.55 — Docker build/deploy frontend и повторная проверка меню на собственной реальной GRE паре с очисткой. Этап12.5 остаётся открытым.
|
||||
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -1550,3 +1550,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
|
||||
Проверки: новый tests/e2e/gre-menu-refresh.spec.ts открывает меню, запускает GET без outside pointer event, проверяет сохранение меню, disabled во время загрузки, восстановление enabled и свежий peer IP в форме. На прежнем HEAD тест падает именно из-за исчезнувшего menuitem; исправленный код проходит. Вместе с gre-toggle.spec.ts — 3/3 passed. Scoped TypeScript (tmp/tsconfig-speed-check.json) и ESLint изменённых файлов passed. Первую фикстуру скорректировали: инициализация источника допускает несколько GET, задержка включается только при проверяемом refresh. ReUI data-grid checklist проверен, общие компоненты не менялись.
|
||||
|
||||
Это локальное исправление. На тестовом сервере backend/frontend bd3f996; live CHR сценарий стабильности меню пока не проверен. Следующий12.5.55 — собрать и развернуть frontend, создать собственную реальную GRE пару, проверить меню при обновлении и форму, затем удалить только собственные интерфейсы/IP и проверить baseline. Реальные VPN объекты обязательны по указанию пользователя. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.55 — развёртывание устойчивого меню и повторная реальная GRE проверка (2026-10-08)
|
||||
|
||||
[Развёртывание](ux-ui/acceptance/deployed-731803b-2026-10-08.json): frontend731803bade672e4e5bd58ffbc223563f3318d4a9/version1.0.0-test.731803b. Архив Git SHA256 b6ff604a03e65151b4f2fc1406885b97f40240646f651a371fd603c00e1e867b совпал после передачи. Staging предыдущей main-совместимой сборки обновлён единственным изменённым production input — gre-tunnels-data-grid.tsx; package-lock/Dockerfile совпали. Docker build exit0, Next production compile/full TypeScript passed. Обновлена только MMAPP_IMAGE_TAG, compose validation passed; перезапущен только frontend, прежний образ оставлен для rollback. Backendbd3f996 не менялся и healthy. Контрольные значения БД до/после: servers2/speedHistory9/retention14/migrations9 совпали. Push не выполнялся.
|
||||
|
||||
[GRE native lifecycle](ux-ui/acceptance/gre-real-menu-731803b-2026-10-08.json): собственная новая пара mm-acceptance-gre-1791468767519, подсеть198.18.255.248/30 проверена на пересечение, оба GRE раздела исходно пусты. POST201/201, native peer metadata, snapshot/restore, MTU/disable/enable/clear подтверждены; Ping3/3 в обе стороны,0%loss. [Production browser](ux-ui/acceptance/browser-gre-menu-731803b-2026-10-08.json): никаких HTTP mocks, на каждом CHR меню открыто один раз и пережило live GET200 при1280 и320px; menuReopens0. Форма совпала с native local/remote inner IP и чистым пользовательским comment; URL/reload сохранён, JS/API errors0. Toolbar refresh вызван без outside pointer event: обычный клик вне меню должен его закрывать. Controlled pending permissions проверены локально в54, здесь подтверждено реальное обновление данных.
|
||||
|
||||
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
|
||||
|
||||
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-08
|
||||
|
||||
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный backend sourcebd3f996f55cccd312dfe5861900849ca21791be8/version1.0.0-test.bd3f996 healthy. Frontend sourcebd3f996f55cccd312dfe5861900849ca21791be8/version1.0.0-test.bd3f996 обновлён в12.5.53.
|
||||
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный backend sourcebd3f996f55cccd312dfe5861900849ca21791be8/version1.0.0-test.bd3f996 healthy. Frontend source731803bade672e4e5bd58ffbc223563f3318d4a9/version1.0.0-test.731803b обновлён в12.5.55.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -393,3 +393,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
|
||||
Проверки: новый tests/e2e/gre-menu-refresh.spec.ts открывает меню, запускает GET без outside pointer event, проверяет сохранение меню, disabled во время загрузки, восстановление enabled и свежий peer IP в форме. На прежнем HEAD тест падает именно из-за исчезнувшего menuitem; исправленный код проходит. Вместе с gre-toggle.spec.ts — 3/3 passed. Scoped TypeScript (tmp/tsconfig-speed-check.json) и ESLint изменённых файлов passed. Первую фикстуру скорректировали: инициализация источника допускает несколько GET, задержка включается только при проверяемом refresh. ReUI data-grid checklist проверен, общие компоненты не менялись.
|
||||
|
||||
Это локальное исправление. На тестовом сервере backend/frontend bd3f996; live CHR сценарий стабильности меню пока не проверен. Следующий12.5.55 — собрать и развернуть frontend, создать собственную реальную GRE пару, проверить меню при обновлении и форму, затем удалить только собственные интерфейсы/IP и проверить baseline. Реальные VPN объекты обязательны по указанию пользователя. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.55 — развёртывание устойчивого меню и повторная реальная GRE проверка (2026-10-08)
|
||||
|
||||
[Развёртывание](ux-ui/acceptance/deployed-731803b-2026-10-08.json): frontend731803bade672e4e5bd58ffbc223563f3318d4a9/version1.0.0-test.731803b. Архив Git SHA256 b6ff604a03e65151b4f2fc1406885b97f40240646f651a371fd603c00e1e867b совпал после передачи. Staging предыдущей main-совместимой сборки обновлён единственным изменённым production input — gre-tunnels-data-grid.tsx; package-lock/Dockerfile совпали. Docker build exit0, Next production compile/full TypeScript passed. Обновлена только MMAPP_IMAGE_TAG, compose validation passed; перезапущен только frontend, прежний образ оставлен для rollback. Backendbd3f996 не менялся и healthy. Контрольные значения БД до/после: servers2/speedHistory9/retention14/migrations9 совпали. Push не выполнялся.
|
||||
|
||||
[GRE native lifecycle](ux-ui/acceptance/gre-real-menu-731803b-2026-10-08.json): собственная новая пара mm-acceptance-gre-1791468767519, подсеть198.18.255.248/30 проверена на пересечение, оба GRE раздела исходно пусты. POST201/201, native peer metadata, snapshot/restore, MTU/disable/enable/clear подтверждены; Ping3/3 в обе стороны,0%loss. [Production browser](ux-ui/acceptance/browser-gre-menu-731803b-2026-10-08.json): никаких HTTP mocks, на каждом CHR меню открыто один раз и пережило live GET200 при1280 и320px; menuReopens0. Форма совпала с native local/remote inner IP и чистым пользовательским comment; URL/reload сохранён, JS/API errors0. Toolbar refresh вызван без outside pointer event: обычный клик вне меню должен его закрывать. Controlled pending permissions проверены локально в54, здесь подтверждено реальное обновление данных.
|
||||
|
||||
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
|
||||
|
||||
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"frontendSource": "731803b",
|
||||
"backendSource": "bd3f996",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"httpMocks": false,
|
||||
"actualCreatedGre": true,
|
||||
"cases": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"refreshes": [
|
||||
{
|
||||
"width": 1280,
|
||||
"apiStatus": 200,
|
||||
"menuRemainedOpen": true
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"apiStatus": 200,
|
||||
"menuRemainedOpen": true
|
||||
}
|
||||
],
|
||||
"menuReopens": 0,
|
||||
"formMatchesNative": true,
|
||||
"mobileFits": true,
|
||||
"urlContextPreserved": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"refreshes": [
|
||||
{
|
||||
"width": 1280,
|
||||
"apiStatus": 200,
|
||||
"menuRemainedOpen": true
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"apiStatus": 200,
|
||||
"menuRemainedOpen": true
|
||||
}
|
||||
],
|
||||
"menuReopens": 0,
|
||||
"formMatchesNative": true,
|
||||
"mobileFits": true,
|
||||
"urlContextPreserved": true
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"badApiResponses": [],
|
||||
"limits": [
|
||||
"Refresh invoked without outside pointer event; outside click should close menu",
|
||||
"Live refresh and current native form checked; controlled pending rights tested locally in 12.5.54",
|
||||
"Harness owns fixture and verifies bounded cleanup"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"backendSource": "bd3f996f55cccd312dfe5861900849ca21791be8",
|
||||
"frontendSource": "731803bade672e4e5bd58ffbc223563f3318d4a9",
|
||||
"httpMocks": false,
|
||||
"pages": [
|
||||
{
|
||||
"path": "/dashboard",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/servers",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/uptime?tab=speed",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/settings",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/filters",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/alerts",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"badApiResponses": []
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"frontendSource": "731803bade672e4e5bd58ffbc223563f3318d4a9",
|
||||
"backendSource": "bd3f996f55cccd312dfe5861900849ca21791be8",
|
||||
"frontendImageId": "sha256:7b7efadb63782eef1487411cc3b1bc908dd76ac60291e6b78598958ae7452b17",
|
||||
"backendImageId": "sha256:6bb78eaeb922de577d399633ed6fcc821a47ae8abbb947ce6971bb453bfcf6d8",
|
||||
"frontendVersion": "1.0.0-test.731803b",
|
||||
"backendHealthy": true,
|
||||
"sourceArchiveSha256": "b6ff604a03e65151b4f2fc1406885b97f40240646f651a371fd603c00e1e867b",
|
||||
"buildExit": 0,
|
||||
"productionTypeScriptPassed": true,
|
||||
"frontendOnlyRestart": true,
|
||||
"rollbackImageRetained": true,
|
||||
"controlBefore": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9
|
||||
},
|
||||
"health": {
|
||||
"status": "ok",
|
||||
"timestamp": "2026-10-08T14:12:49.551Z",
|
||||
"version": "1.0.0-test.bd3f996",
|
||||
"eventLoopDelayMs": 20,
|
||||
"flowWorker": {
|
||||
"alive": false,
|
||||
"bound": false,
|
||||
"pendingSize": 0,
|
||||
"dropped": 0,
|
||||
"packetsReceived": 0
|
||||
}
|
||||
},
|
||||
"push": false,
|
||||
"controlAfter": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9
|
||||
},
|
||||
"controlsUnchanged": true
|
||||
}
|
||||
@@ -0,0 +1,250 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"backendSource": "bd3f996",
|
||||
"frontendSource": "731803b",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"subnet": "198.18.255.248/30",
|
||||
"changes": [
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/api/gre/revisions?serverId=1",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/gre/revisions/e1c43fe3-3567-43a6-a512-34f995a5e7fc/restore",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/gre/tunnels",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"target": "198.18.255.250",
|
||||
"interface": "mm-acceptance-gre-1791468767519",
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms268us",
|
||||
"avg-rtt": "54ms268us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms322us",
|
||||
"avg-rtt": "54ms295us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms282us",
|
||||
"avg-rtt": "54ms290us"
|
||||
}
|
||||
],
|
||||
"received": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"target": "198.18.255.249",
|
||||
"interface": "mm-acceptance-gre-1791468767519",
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "58ms132us",
|
||||
"avg-rtt": "58ms132us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms366us",
|
||||
"avg-rtt": "56ms249us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms288us",
|
||||
"avg-rtt": "55ms595us"
|
||||
}
|
||||
],
|
||||
"received": 3
|
||||
}
|
||||
],
|
||||
"realRouterOs": true,
|
||||
"creates": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"status": 201,
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"returnedRemoteInnerIp": "198.18.255.250/30",
|
||||
"requestedRemoteInnerIp": "198.18.255.250/30"
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"status": 201,
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"returnedRemoteInnerIp": "198.18.255.249/30",
|
||||
"requestedRemoteInnerIp": "198.18.255.249/30"
|
||||
}
|
||||
],
|
||||
"snapshotPeerPersisted": true,
|
||||
"createdState": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*3",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"localAddress": "194.226.121.150",
|
||||
"remoteAddress": "104.165.244.7",
|
||||
"mtu": "1400",
|
||||
"keepalive": "2s,3",
|
||||
"remoteInnerIp": "198.18.255.250/30",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-gre-1791468767519",
|
||||
"running": "false",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.249/30"
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*8",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"localAddress": "104.165.244.7",
|
||||
"remoteAddress": "194.226.121.150",
|
||||
"mtu": "1400",
|
||||
"keepalive": "2s,3",
|
||||
"remoteInnerIp": "198.18.255.249/30",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-gre-1791468767519",
|
||||
"running": "false",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.250/30"
|
||||
]
|
||||
}
|
||||
],
|
||||
"runningBeforePing": true,
|
||||
"bidirectionalPingPassed": true,
|
||||
"updatedState": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*3",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"localAddress": "194.226.121.150",
|
||||
"remoteAddress": "104.165.244.7",
|
||||
"mtu": "1360",
|
||||
"keepalive": "2s,3",
|
||||
"remoteInnerIp": "198.18.255.250/30",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-gre-1791468767519",
|
||||
"running": "false",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.249/30"
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*8",
|
||||
"name": "mm-acceptance-gre-1791468767519",
|
||||
"localAddress": "104.165.244.7",
|
||||
"remoteAddress": "194.226.121.150",
|
||||
"mtu": "1400",
|
||||
"keepalive": "2s,3",
|
||||
"remoteInnerIp": "198.18.255.249/30",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-gre-1791468767519",
|
||||
"running": "true",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.250/30"
|
||||
]
|
||||
}
|
||||
],
|
||||
"explicitClearConfirmed": true,
|
||||
"snapshotRestoreConfirmed": true,
|
||||
"routeConvergence": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"polls": 1,
|
||||
"matched": true
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/interface/gre": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/interface/gre": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Plain GRE, not encrypted IPsec; no throughput test",
|
||||
"Only own interface/IPs and generated connected route changed; no default routes or firewall changes",
|
||||
"Application GRE revisions intentionally remain as audit history",
|
||||
"Ping success establishes tested point-to-point traffic only"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Reference in new issue
Block a user