fix(ipsec): удалять сертификат только по явной привязке

This commit is contained in:
Denozordec committed 2026-10-10 21:26:48 +07:00
1 parent d52c48e5ed
commit 057b530364
16 files changed
+644 -22

No files matched your search

+20 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-10: завершён12.5.115 — UI удаления identity позволяет сохранить сертификат; при общих refs он unchecked/disabled и результат объяснён. Source TypeScript/ESLint/production frontend build, E2E26 unique accepted (22+4 corrected), live dialogs4/4 и один mobile DELETE с removeCertificate=false. Native cert ID/другая identity сохранены, original online восстановлен, cleanup13×2 passed. Backend ux-refs114, frontend ux-keepcert115/version1.0.0-test.keepcert115. Следующий116 — исключить удаление сертификата, угаданного по имени клиента; затем итоговая регрессия.12.5 открыт.
Актуальное продолжение 2026-10-10: завершён12.5.116 — DELETE клиента больше не угадывает certificate по display name; удаляется только прямо привязанный remote-certificate либо явно выбранный cert. PSK UI объясняет сохранение сертификатов. Backend114 state/8 scripts, build/TypeScript/ESLint, E2E28/28, live dialogs4/4/mobile PSK DELETE и native сохранение unbound cert ID passed; before bug доказан на собственном decoy. Backend/frontend ux-bound116/version1.0.0-test.bound116, cleanup13×2. Следующий117 — общая UI-регрессия (основной набор1244 запущен), контекст и сверка текущего source/runtime;12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,25 @@
| 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–115 и ограничения ниже. Runtime backend ux-refs114/frontend ux-keepcert115. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–116 и ограничения ниже. Runtime backend/frontend ux-bound116. |
## 12.5.116 — IPsec: не удалять сертификат, угаданный по имени PSK (2026-10-10)
Устранена подтверждённая ошибка default DELETE: при пустом remote-certificate managed display name преобразовывалось в ipsec-user-<slug>, и несвязанный сертификат мог удаляться вместе с PSK identity. Теперь имя клиента не является доказательством связи: certificate deletion/preflight используют только явный remote-certificate либо выбранный cert target. Прямая одиночная certificate привязка по-прежнему допускает удаление; shared refs блокируются до записи как114. PSK диалог объясняет сохранение сертификатов; описания mode-config уточняют, что удаляются только неиспользуемые объекты приложения.
Изменены routes/ipsec.ts, mutation test, IPsec page и delete E2E. Все8 backend scripts, state114, backend build/source TypeScript/scoped ESLint passed. HTTP тест подтвердил PSK name collision: один identity DELETE, removeCertificate0; positive explicit binding: identity+certificate writes2. E2E28 unique passed39.6s, включая PSK описание/сохранение отдельной строки1280/320 и профильную регрессию. Vendor/ReUI/base-nova не менялись.
Before на backend114: создана собственная PSK identity с managed name, совпадающим со slug собственного unused signed decoy certificate. DELETE200 удалил оба объекта, хотя remote-certificate пуст. After на bound116: четыре live PSK диалога (dark/light1280/320), один DELETE через light320 UI, PSK удалён, тот же native ID/имя несвязанного сертификата сохранены. Browser не использовал mocks; APIwrites1, pageerrors0. Исходная certificate IKE сессия/online/198.18.116.250 сохранялись. Это не тест новой PSK сессии/throughput. Просмотрен light320 screenshot.
Обе части собраны последовательно и развёрнуты как ux-bound116/version1.0.0-test.bound116. Base d52c48e/context backend build-refs114, frontend build-keepcert115-front; по одному override для route/page, два source bytehash и compiled backend route bytehash совпали. Frontend compiled reproducibility не заявлена, label bound116 неGitSHA. Private rollback pre-bound116.env и прежние образы оставлены. Backend/PG healthy; frontend browser/HTTP подтверждён, healthcheck отсутствует. На VM25GB после сборок3.6GB свободно/86% занято; ресурсов достаточно для текущих проверок, production performance не оценивалась.
Оба native запуска очистили собственные fixtures, baseline13 коллекций×2 совпал; сохранены logging/default/public/metadata/195.195.195.195/32. Пароли прежние, оба CHR/SSH доступны. API DELETE вызывает history recording с dedupe; число новых revisions отдельно не заявляется. Протоколы: [binding](ux-ui/acceptance/ipsec-certificate-binding-2026-10-10.json), [live UI](ux-ui/acceptance/browser-ipsec-bound-2026-10-10.json).
Следующий117 уже запущен: единая основная UI-регрессия1244 сценария на текущем frontend source, затем контекстный набор и сверка source/build/runtime. Внешние аккаунты/Portal/Telegram/client OS/scale/multi-WAN и одновременные native IKE sessions остаются в матрице.
| Референс | Схема |
| --- | --- |
| [ReUI Sheet8](https://reui.io/preview/base/sheet-8?ref=mcp) | Выбранная identity → явная certificate связь → preflight → удаление выбранных объектов / сохранение несвязанных |
## 12.5.115 — IPsec: удалить identity и сохранить общий сертификат через UI (2026-10-10)