fix(backup): orthogonal code review fixes + UI/UX overhaul
## Critical fixes - H1: Fix env_id/env/environment_id triple inconsistency in API route (_action_routes.py now passes 'environment_id', matches scheduler) - H2: Decompose BackupPlugin.execute() — CC 13 → 5 methods, CC ≤ 5 each - H3: Fix unhandled int() ValueError on non-numeric dashboard_ids - H4: Add concurrent guard test with API-style params (env key fallback) - H5: Make RetentionPolicy configurable via StorageConfig (retention_daily/weekly/monthly in config model + backend plugin) - Fix: storage DELETE route missing 'await' on async delete_file (bug) ## UI/UX overhaul - NEW: centralized cron utility (frontend/src/lib/utils/cron.ts) - validateCron(), calcNextCronRun(), formatNextRun() - Used by BackupManager, BackupDashboardModal - BackupManager: replace custom BackupList with shared FileList - Adds: download, delete, bulk actions, search, sort, pagination - Adds: cron next-run preview below schedule input - Adds: auto-open TaskDrawer on backup task creation - BackupDashboardModal: dead 'Cron Help' button removed - Adds: live cron validation + next-run preview - StorageSettings: adds retention daily/weekly/monthly fields - BackupCreateRequest type fixed to match actual API contract - i18n: 7 new keys for en/ru (next_run, retention_*)
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
"schedule_enabled": "Enabled",
|
||||
"cron_label": "Cron Expression",
|
||||
"cron_hint": "e.g., 0 0 * * * for daily at midnight",
|
||||
"next_run": "Next run",
|
||||
"footer_text": "Task continues running in background",
|
||||
"drawer": "Task drawer",
|
||||
"close_drawer": "Close drawer",
|
||||
|
||||
Reference in New Issue
Block a user