fix(backups): отклонять восстановление старых частичных экспортов

This commit is contained in:
Denozordec committed 2026-10-14 11:16:29 +07:00
1 parent faf452d149
commit 659e658f18
16 files changed
+1175 -12

No files matched your search

+10 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 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 открыт.
Актуальное продолжение 2026-10-14:230–233 — native S3 backup/ограниченный restore/UI и защита подключения/гонок приняты.234 — известный legacy synthetic export отклоняется400/not-applied до RouterOS; download/file/catalog сохранены,2 owned SQL/API cases passed. Backend ux-backup234 healthy/frontend ux-routing218;504 source/1064 outputs matched. Обнаружены10 исходных catalog rows с отсутствующими local files и непостоянный backup path; следующий235 — постоянный Compose volume и native backup recreation proof. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,15 @@
| 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–233 завершены в записанных scopes, этап открыт. Runtime backend ux-backup233/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–234 завершены в записанных scopes, этап открыт. Runtime backend ux-backup234/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
## 12.5.234 — отказ восстановления старого частичного экспорта (2026-10-14)
Известный старый header «# synthetic export generated by MikrotikManager» теперь проверяется после чтения файла, до upload/import. Такой файл возвращает400/outcome=not-applied с указанием создать новую нативную копию; скачивание и исходный файл/catalog остаются доступны. Это точечная защита известного legacy format, не общая валидация произвольных .rsc scripts.
Unit проверяет обычный и BOM/whitespace header, сохранены native/limited scripts; test:backups (13 exporter/4 restore/5 storage cases и остальные профильные suites), contracts/backend build и scoped ESLint/diff check passed. Compiled routes+owned SQL+HTTP RouterOS fixture:2 legacy variants download200→restore400, file/catalog unchanged, native requests0/S3 contacts0; DELETE204 очистил own record/file, DB/role/container removed. [SQL/API](ux-ui/acceptance/legacy-restore234.json).
Image ux-backup234:504 source/1064 compiled matched; main healthy/image ID verified, frontend ux-routing218 сохранён. [Deploy](ux-ui/acceptance/backup234-deployment.json). Существующие10 main catalog rows проверены read-only: files missing10, legacy/native classification не получена. Node main cwd=/app, mount был только /app/data; BACKUPS_DIR=/app/storage/backups находится вне bind. Это не доказательство содержимого или прежнего существования10 missing files. [Диагностика](ux-ui/acceptance/legacy234-catalog.json). Следующий235 — persist mount/recreate proof; original missing rows не удалять и не объявлять восстановленными. Этап12.5 открыт.
## 12.5.233 — защита адресации S3 и гонок с каталогом (2026-10-14)