chore(test): проверить реальный выпуск сертификата и восстановление стенда

This commit is contained in:
Denozordec committed 2026-10-14 19:45:24 +07:00
1 parent dc7b22940a
commit 0374b57a30
12 files changed
+243 -9

No files matched your search

+17 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-14: 249 — legacy GET контейнеров не опрашивают выключенный сервер и не превращают ошибки в пустой список. Единый mapper сохраняет unknown, native flags/envlists/mountlists и фактическую память. Backend ux-containers249/frontend ux-containers248; 25 backend-профилей passed за378124ms, три специализированные SQL-ветки явно skipped. Owned БД/роль/container удалены. Real Portal/read UI1440/390 passed, writes0. Следующий250 — ACME на собственном mmt* поддомене pngs.top; предоставленный токен проверен read-only, выпуск ещё не выполнен. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: 250 — production ACME принят на точном mmt250-c22a9715.pngs.top/CHR104: Portal/UI один issue POST → done; DNS-01, native import/private key, trusted TLS/SAN и REST HTTPS200. Native services/certificates/files/export и ACME settings восстановлены, собственные job/A/TXT отсутствуют; оба CHR доступны. Backend249/frontend248 unchanged. Следующий251 — раскрыть в форме выпуска автоматическое назначение SSL-сервисам и DNS A-sync, затем проверить UI; renewal/CA revoke/multi-instance отдельно. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -38,6 +38,22 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–236 завершены в записанных scopes, этап открыт. Runtime backend ux-backup234/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
## 12.5.250 — production ACME / Cloudflare / TLS через реальный UI (2026-10-14)
Пользователь предоставил pngs.top/Cloudflare и разрешил поддомены с префиксом mmt*. После уточнения звёздочки получено согласие на точное имя mmt250-c22a9715.pngs.top и временное назначение www-ssl/api-ssl с откатом. Cloudflare token verify и exact zone query200/success, token/zone active/account matched; оба собственных DNS имени до начала имели0 records. Ключ/почта/account ID только в ignored private fixture; на Debian ключ поступил через разрешённый временный API settings, отдельный secret файл туда не передавался. Native/private settings baseline снят до начала.
Настоящий Portal/UI без mocks: app Cloudflare test200, settings save200; выбран server2/CHR104, один POST issue с точным CN →200/jobId; backend queued/running →done, UI terminal «Завершена». Production directory Let's Encrypt, не staging/fake CA. CSR/DNS-01/импорт leaf+key+chain прошли; native leaf CN/private-key=true и оба SSL сервиса enabled с этим сертификатом подтверждены. [UI](ux-ui/acceptance/acme250-live-ui.json).
Независимая проверка: DNS A104.165.244.7; TLSv1.2, обычный rejectUnauthorized=true, peer authorized/SAN exact domain, issuerYR2, срок2026-10-14→2027-01-12; REST по HTTPS200 с прежними учётными данными. TLS проверка не отключалась, CA в локальное доверие не добавлялась. Это проверка конкретного CA/RouterOS клиента, не всех TLS версий/клиентских ОС. [TLS](ux-ui/acceptance/acme250-tls.json).
Очистка: сначала исходные disabled/certificate/port SSL сервисов, затем только собственные cert/root-chain и PEM files. Исходные certificate/file коллекции и полный нормализованный export совпали. ACME settings восстановлены полностью, включая accountPrivateKey/updatedAt; own terminal job удалён, чтобы не оставлять managed renewal target. Историческое событие теста в журнале приложения сохраняется. После фактического COMMIT начальная проверка Date vs JSON string дала assertion; исправлена только JSON-нормализация и повторное read-only сравнение, native/SQL операции не повторялись. Приватный baseline удалён. [Native](ux-ui/acceptance/acme250-native.json).
Application TXT cleanup подтверждён GET0; A-sync создал единственную собственную A с content104/proxied=false, она удалена по exact name/type/content/ID. Final FQDN/challenge records0. Остальные DNS записи/zone settings не менялись. [Cloudflare](ux-ui/acceptance/acme250-cloudflare.json). Post-cleanup app settings tokenConfigured=false, own job404/certificate absent, оба CHR certificate read доступны. Выданный сертификат не объявляется отозванным у CA; запись о выпуске остаётся, native экземпляры/ключевые файлы удалены. Все временные credential файлы блока удалены после проверки.
Runtime backend ux-containers249/frontend ux-containers248 unchanged; source changes только manual acceptance helper/документация, не production код. [Процедура](../deploy/TEST-ACME.md), helper acme-live-issue.mjs syntax/ESLint passed. Backend-профили и E2E не повторялись для документального блока:25 профилей249 и29 E2E248 уже проверены в своих границах. Дополнительный local locator/copy helper ремонт не считается новым live сценарием.
Следующий251 — явное пояснение последствий в форме: текущий issuer всегда включает www-ssl/api-ssl и синхронизирует DNS A, а экран говорит лишь об импорте/trust-store. Изменить copy существующих шагов, сохранив сетевую логику; профильные UI проверки/build/deploy. Automatic renewal, CA revocation, remote release publishing/multi-instance/WAN и остальные обязательные варианты матрицы ещё не приняты этим выпуском.
## 12.5.249 — достоверное legacy чтение контейнеров и общая backend-регрессия (2026-10-14)
Аудит выявил: GET выбранного сервера обходил enabled gate; legacy mapper считал отсутствие status остановкой, memory-high — фактической памятью, скрывал ошибки загрузки пустым массивом. Прямой GET теперь даёт409 для выключенного и404 для отсутствующего сервера до dispatch; прямой service/read тоже не создаёт RouterOS клиент для disabled, aggregate исключает disabled до reader factory. Ошибки/частичные ответы legacy GET дают502; unsupported сохраняет прежний legacy [] для совместимости, подробное availability предоставляется /api/containers/state. ID разбирается общим строгим parseDbServerId, без принятия префикса1abc.