fix(settings): восстанавливать базу транзакционно и сохранять результат операции

This commit is contained in:
Denozordec committed 2026-10-03 14:45:51 +07:00
1 parent ff8b04bddf
commit af5dbb0519
12 files changed
+86 -40

No files matched your search

+2
View File
@@ -290,3 +290,5 @@ REST запрос → ожидание → подтверждённый output /
Завершён 11Б.3.6.1.2: DataSource health token/revision/abort/ABA, explicit checking и validated health body. 2 unit, 10 source/health, 16 Settings/Evo provider и 8 Evo source E2E, typecheck/lint/build прошли; два test setup уточнены. System monitor остаётся отдельным reader. Далее 11Б.3.6.2.1 — system DB API/credentials in events; затем backend outcomes и UI.
Завершён 11Б.3.6.2.1: system DB export PGDMP/leaf filename и restore strict receipt/limits/abort без повтора; DATABASE_URL удалён из новых event payload. 3 unit группы/typecheck/lint/backend и frontend builds прошли. UI/backend partial/restore transaction не приняты. Далее 11Б.3.6.2.2 — backend transaction/outcomes/DI HTTP/JWT, затем 11Б.3.6.2.3 форма.
Завершён 11Б.3.6.2.2.1: DI restore executor/--single-transaction/cleanup warning, file choose без фиктивного success, confirmation до receipt. 4 DI/3 API/2 browser tests, backend/frontend builds/typecheck/lint прошли; реальный PG restore не запускался. System DB не принят полностью. Следующий точный шаг 11Б.3.6.2.2.2 — backend core/restart/event partial outcomes + DI HTTP/JWT/concurrency; затем 11Б.3.6.2.3 source/lock/unknown UI.
+9 -1
View File
@@ -28,7 +28,7 @@
| 9 | VPN, Firewall и Filters | Завершён в границах локальной приёмки 2026-09-30; блоки 9.1–9.64, ограничения в 9.64 |
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.2.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.2.2.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.3.6.2.2.1 — выполнение восстановления PostgreSQL (2026-10-03)
- Restore executor вынесен в pure DI helper. Production pg_restore получает --single-transaction вместе с --clean/--if-exists; validate size/PGDMP prefix выполняется до lock/остановки сборщиков и повторно в executor. Команда не повторяется, временный файл удаляется при write/run error. Cleanup failure после успешной команды — отдельный cleanupError, не отменяет её подтверждённый результат; основная ошибка не подменяется cleanup error.
- Backend receipt и frontend strict parser поддерживают cleanupError; Settings показывает предупреждение отдельно от успеха. File selection больше не сообщает «Импорт выполнен»: FileImportDialog получил optional actionLabel/successMessage, Settings использует «Продолжить» и suppress success. Остальные callers сохраняют прежние defaults. Confirmation preventDefault удерживает dialog до receipt; ошибка сохраняет выбранный файл.
- 4 DI executor tests, 3 API unit группы, 2 browser receipt сценария (false → нет успеха/dialog сохранён; true+cleanupError → success+warning), backend build/typecheck/профильный lint и production frontend/contracts build прошли. Profile test:system-database включён в backend test.
- Это проверка переданных аргументов/управления выполнением, не реальное доказательство PG rollback/совместимости архива. Настоящий PG restore/pg_dump не запускался; UDP worker stop acknowledgment не доказан. Внешний withDatabaseOperation restart/listener/scheduler и appendEvent всё ещё могут скрыть уже выполненный результат; остаётся source/lock/unknown review в форме. System DB целиком не принят.
- Следующий точный шаг 11Б.3.6.2.2.2: разделить результат core операции и failures restart listener/scheduler/event в backend, DI HTTP/JWT gates и запрет повторной конкурентной операции. Затем 11Б.3.6.2.3: отдельная форма DB с active/source guards, общим sync lock, unknown checkpoint и адаптивной приёмкой. Alerts/Releases/probe scheduling и итоговая 11Б/12 ещё впереди.
## Блок 11Б.3.6.2.1 — system database API и журнал (2026-10-03)
- Export reader проверяет PGDMP prefix/nonempty binary вместо принятия HTML/JSON, безопасное leaf filename (RFC5987/quoted/plain) и fallback .dump вместо .db. Restore проверяет размер ≤512 МБ, PGDMP prefix и caller abort до POST; после запроса нужен strict literal ok receipt, false/204/malformed/contradictory error не дают успеха. Нет автоматического повтора; 10 минут timeout/caller signal не отменяет серверное восстановление.
+2
View File
@@ -222,3 +222,5 @@ ReUI PRO/base-nova; существующие Frame, Data Grid v9, KpiStatGrid, S
Завершён 11Б.3.6.1.2: DataSource health token/revision/abort/ABA, explicit checking и validated health body. 2 unit, 10 source/health, 16 Settings/Evo provider и 8 Evo source E2E, typecheck/lint/build прошли; два test setup уточнены. System monitor остаётся отдельным reader. Далее 11Б.3.6.2.1 — system DB API/credentials in events; затем backend outcomes и UI.
Завершён 11Б.3.6.2.1: system DB export PGDMP/leaf filename и restore strict receipt/limits/abort без повтора; DATABASE_URL удалён из новых event payload. 3 unit группы/typecheck/lint/backend и frontend builds прошли. UI/backend partial/restore transaction не приняты. Далее 11Б.3.6.2.2 — backend transaction/outcomes/DI HTTP/JWT, затем 11Б.3.6.2.3 форма.
Завершён 11Б.3.6.2.2.1: DI restore executor/--single-transaction/cleanup warning, file choose без фиктивного success, confirmation до receipt. 4 DI/3 API/2 browser tests, backend/frontend builds/typecheck/lint прошли; реальный PG restore не запускался. System DB не принят полностью. Следующий точный шаг 11Б.3.6.2.2.2 — backend core/restart/event partial outcomes + DI HTTP/JWT/concurrency; затем 11Б.3.6.2.3 source/lock/unknown UI.