fix(ipsec): различать частичный и неподтверждённый результат операций
This commit is contained in:
1 parent
a83e4734df
commit
43b00e0740
15 files changed
+263
-37
No files matched your search
+18
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.80 исправил восстановление IPsec mode-config и порядок зависимостей; реальный откат staticIp/disabled, повтор без дубликатов и запрет чужой ссылки приняты. Backend ux-ipsec80 healthy, frontend ux-ipsec77. Следующий12.5.81 — частичные ошибки операций и неопределённый результат при потере ответа RouterOS. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.81 внедрил исходы partial/unknown/applied, preflight конфликтов и очистку старого mode-config; native/API fault injection и isolated JWT/RBAC приняты. Backend ux-ipsec81 healthy, frontend ux-ipsec77; 7 профильных E2E прошли. Следующий12.5.82 — NAT/связность сертификатного клиента; остальные границы IPsec перечислены ниже. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,23 @@
|
||||
| 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–80 и ограничения ниже. Runtime backend ux-ipsec80/frontend ux-ipsec77. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–81 и ограничения ниже. Runtime backend ux-ipsec81/frontend ux-ipsec77. |
|
||||
|
||||
## 12.5.81 — IPsec: частичные операции, потерянное подтверждение и права (2026-10-09)
|
||||
|
||||
**Результат.** Request-local tracker учитывает подтверждённые PUT/PATCH/DELETE/POST, включая вложенные методы клиента. Ответы отказа: partial — подтверждённые записи до явного4xx; unknown — неподтверждённая запись при сетевой/5xx ошибке; applied — весь mutation завершён, но финальный ответ не получен. Поля confirmedWrites/needsReview и текст требуют обновить данные перед повтором. Tracker не делает автоматический откат и не является durable/idempotency receipt: потеря соединения клиент↔backend и повтор после рестарта требуют отдельного разбора. Отказ до первой записи не называется applied. История после apply/rollback продолжает явно сообщать о null capture/record согласно79.
|
||||
|
||||
**Preflight и консистентность.** Конфликты имени/staticIP/Remote ID проверяются до переименования. Create и PATCH нормализуют обычный PSK Remote ID в key-id: одинаково; duplicate Remote ID одного peer отклоняется. После rename + смены staticIP identity переключается на новый mode-config, старый owned и неиспользуемый удаляется по существующему guarded helper. Поздний отказ такого удаления теперь возвращает корректный частичный результат.
|
||||
|
||||
**Проверки.** npm test:ipsec: config +80 state checks, HTTP history/restore, progress evidence (4xx/partial/transport/5xx/nested/completed) и HTTP mutations. Backend TypeScript/scoped ESLint/diff check прошли. Playwright7/7: три новых320px сценария partial/unknown/applied сохраняют ввод, показывают ошибку и не повторяют запрос автоматически; существующие формы peer/cert/PSK/edit также прошли. UI-код не изменён, frontend не пересобирался.
|
||||
|
||||
**Реальная приёмка.** Собственная PSK конфигурация наCHR1. Production409 при занятом IP сохранил native comment. Изолированный compiled route: первый native patch подтверждён, следующий искусственно403 → partial/confirmedWrites1; настоящий native patch применён, затем injected exception вместо ACK → unknown/confirmedWrites0. Независимый GET подтвердил оба изменения имени. Это управляемая инъекция после реального применения, не физический TCP disconnect. Production PATCH обычного Remote ID подтвердил typed key-id; rename/staticIP подтвердили новый адрес и отсутствие старого mode-config.
|
||||
|
||||
**JWT/RBAC.** В изолированном worker env AUTH_REQUIRED=true и случайный JWT secret только в памяти; тот же auth plugin/requireAuth + compiled IPsec routes. No token/invalid token401, reader PATCH/DELETE/restore/export403, reader GET200, writer native peer disable/enable200. Native объекты при запрете сохранены. Рабочий backend остаётся AUTH_REQUIRED=false, Portal SSO и live browser authenticated flow не заявляются. [Отчёт](ux-ui/acceptance/ipsec-mutations-2026-10-09.json).
|
||||
|
||||
**Очистка и runtime.** До удаления сверены точные ID и ожидаемые имена/comments; свои objects удалены, baseline IDs четырёх коллекций совпали. Один backend build/deploy: mmapp-test/backend:ux-ipsec81/version1.0.0-test.ipsec81, image sha256:2a7d8ab317867f2df4826b7c477659eeba689b7e9d8806676ca030fc4f099abac, healthy; frontend ux-ipsec77. Entry file/node --check/pg_restore18.6 и compose --wait прошли. Runner apt layer #18 CACHED: оптимизация80 подтверждена на изменённом коде/версии. Context ipsec80 + восемь backend-файлов до коммита, archive SHA111eb30a5621eb85e2f7e421a25c22ab70f8073093a83cf0a0f67663163004ec; label ipsec81, не Git SHA. .env backup приватный; миграций нет. Один локальный коммит без push.
|
||||
|
||||
Следующий12.5.82: реальная NAT/связность сертификатного клиента. Открыты физические transport disconnect/durable retry, multi-instance, Portal SSO/browser auth, IPv6/клиентские ОС/throughput, сложные DN и полный PKI/policy/profile/proposal restore. Не расширять эти границы по результатам fault injection.
|
||||
|
||||
## 12.5.80 — IPsec: восстановление истории и зависимости (2026-10-09)
|
||||
|
||||
|
||||
Reference in new issue
Block a user