fix(backups): защитить подключение S3 и согласовать операции каталога

This commit is contained in:
Denozordec committed 2026-10-14 11:05:38 +07:00
1 parent 7cef0cc133
commit faf452d149
18 files changed
+1385 -14

No files matched your search

+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-14:230–231 — исправлен нативный backup/export, S3 download и ограниченный restore собственного bridge приняты; /file/read поддерживает порции и8 МиБ,13 HTTP и оба CHR passed.232 — real UI save/test Selectel S3 HTTP200, vHosted/secret clearing/mobile receipt подтверждены. Исходные storage/schedule и все10 catalog rows восстановлены точно, backend ux-backup231 healthy/frontend ux-routing218. Далее233 — защита backup при смене bucket/endpoint; retention и расширенная приёмка открыты. Этап12.5 открыт.
Актуальное продолжение 2026-10-14:230–232 — native S3 backup/ограниченный restore/порционное чтение и real UI save/test приняты, fixtures очищены.233 —5 небезопасных изменений S3 подключения отклоняются409 без записи; гонки create/sync/read/delete/settings согласованы в одном backend.11 owned SQL/API scenarios passed, старая231 принимала5 опасных changes200. Backend ux-backup233/frontend ux-routing218 healthy. Далее234 — запрет restore старых synthetic partial backups; version retention/multi-instance/расширенная приёмка открыты. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,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–232 завершены в записанных scopes, этап открыт. Runtime backend ux-backup231/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–233 завершены в записанных scopes, этап открыт. Runtime backend ux-backup233/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
## 12.5.233 — защита адресации S3 и гонок с каталогом (2026-10-14)
Backup row хранит s3Key, а bucket/endpoint берёт из global settings. Старая ux-backup231 в owned SQL приняла200 все5 изменений подключения при связанном remote catalog:bucket/endpoint/region/path-style/provider. Это подтверждение отсутствующего guard, без GET/DELETE чужих объектов; actual S3/CHR contacts0. [Baseline](ux-ui/acceptance/storage-origin233-baseline.json).
Теперь наличие s3Key блокирует такие изменения понятным409 до записи, сохраняя все settings fields. Prefix/keepLocalCopy/rotation keys разрешены; пустой remote catalog позволяет смену подключения. Legacy выключенный S3 можно включить с теми же адресными полями. Внутри одного backend create/import/sync/read/delete согласованы общей очередью; settings save при занятом хранилище немедленно409, без отложенной мутации после browser timeout. Чтение заново проверяет наличие catalog entry после получения gate, поэтому stale metadata после удаления не направляют GET на новое хранилище.
5 unit storage checks, test:backups (включая13 exporter cases), contracts/backend build и scoped ESLint passed. Compiled routes+отдельная ограниченная SQL:11 проверок —5 blocked changes с exact unchanged DTO,3 allowed changes,empty catalog,update during publication,stale download rejects before S3. Owned DB/role/container удалены с readback. [SQL/API11](ux-ui/acceptance/storage-origin233.json). Несколько промежуточных сборок уточняли recovery/busy/stale-read guards; повторные прогоны не суммируются в unique11.
Image ux-backup233:503 source files/1064 compiled outputs совпали с frozen snapshot; main backend healthy/image matched, frontend ux-routing218 сохранён. [Deploy](ux-ui/acceptance/backup233-deployment.json). Реальные S3 upload/restore и live UI232 повторно не выполнялись; production data/settings не менялись кроме image tag. Межпроцессная/межэкземплярная синхронизация и миграция существующих S3 файлов между buckets этим не реализованы. Privileged SQL writers обходят application guard; несколько backend остаются открытой группой. Далее234 — отклонить restore известного старого partial synthetic export до native upload/import. Этап12.5 открыт.
## 12.5.232 — сохранение Selectel S3 и проверка доступа в live UI (2026-10-14)