TenantAtlas/database/migrations
ahmido 4d3fcd28a9 feat/032-backup-scheduling-mvp (#34)
What
Implements tenant-scoped backup scheduling end-to-end: schedules CRUD, minute-based dispatch, queued execution, run history, manual “Run now/Retry”, retention (keep last N), and auditability.

Key changes

Filament UI: Backup Schedules resource with tenant scoping + SEC-002 role gating.
Scheduler + queue: tenantpilot:schedules:dispatch command wired in scheduler (runs every minute), creates idempotent BackupScheduleRun records and dispatches jobs.
Execution: RunBackupScheduleJob syncs policies, creates immutable backup sets, updates run status, writes audit logs, applies retry/backoff mapping, and triggers retention.
Run history: Relation manager + “View” modal rendering run details.
UX polish: row actions grouped; bulk actions grouped (run now / retry / delete). Bulk dispatch writes DB notifications (shows in notifications panel).
Validation: policy type hard-validation on save; unknown policy types handled safely at runtime (skipped/partial).
Tests: comprehensive Pest coverage for CRUD/scoping/validation, idempotency, job outcomes, error mapping, retention, view modal, run-now/retry notifications, bulk delete (incl. operator forbidden).
Files / Areas

Filament: BackupScheduleResource.php and app/Filament/Resources/BackupScheduleResource/*
Scheduling/Jobs: app/Console/Commands/TenantpilotDispatchBackupSchedules.php, app/Jobs/RunBackupScheduleJob.php, app/Jobs/ApplyBackupScheduleRetentionJob.php, console.php
Models/Migrations: app/Models/BackupSchedule.php, app/Models/BackupScheduleRun.php, database/migrations/backup_schedules, backup_schedule_runs
Notifications: BackupScheduleRunDispatchedNotification.php
Specs: specs/032-backup-scheduling-mvp/* (tasks/checklist/quickstart updates)
How to test (Sail)

Run tests: ./vendor/bin/sail artisan test tests/Feature/BackupScheduling
Run formatter: ./vendor/bin/sail php ./vendor/bin/pint --dirty
Apply migrations: ./vendor/bin/sail artisan migrate
Manual dispatch: ./vendor/bin/sail artisan tenantpilot:schedules:dispatch
Notes

Uses DB notifications for queued UI actions to ensure they appear in the notifications panel even under queue fakes in tests.
Checklist gate for 032 is PASS; tasks updated accordingly.

Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local>
Reviewed-on: #34
2026-01-05 04:22:13 +00:00
..
0001_01_01_000000_create_users_table.php Initial commit from Specify template 2025-12-10 22:27:21 +01:00
0001_01_01_000001_create_cache_table.php Initial commit from Specify template 2025-12-10 22:27:21 +01:00
0001_01_01_000002_create_jobs_table.php Initial commit from Specify template 2025-12-10 22:27:21 +01:00
2025_12_10_000100_create_tenants_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000110_create_policies_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000120_create_policy_versions_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000130_create_backup_sets_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000140_create_backup_items_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000150_create_restore_runs_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_10_000160_create_audit_logs_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_11_121623_add_app_fields_to_tenants_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_11_122423_create_tenant_permissions_table.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_11_192942_add_is_current_to_tenants.php feat: TenantPilot v1 - Complete implementation (Phases 1-12) 2025-12-12 02:27:54 +01:00
2025_12_12_150000_add_rbac_fields_to_tenants.php Intune RBAC: graceful unsupported-account handling, health-check fixes, tests and docs updates 2025-12-13 01:25:06 +01:00
2025_12_12_151000_add_rbac_status_fields_to_tenants.php Intune RBAC: graceful unsupported-account handling, health-check fixes, tests and docs updates 2025-12-13 01:25:06 +01:00
2025_12_12_160000_add_rbac_summary_to_tenants.php Intune RBAC: graceful unsupported-account handling, health-check fixes, tests and docs updates 2025-12-13 01:25:06 +01:00
2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php Intune RBAC: graceful unsupported-account handling, health-check fixes, tests and docs updates 2025-12-13 01:25:06 +01:00
2025_12_13_212126_create_settings_catalog_definitions_table.php feat: merge 001-filament-json 2025-12-14 20:23:18 +01:00
2025_12_20_221547_create_settings_catalog_categories_table.php dev-merges/c709b36 (#3) 2025-12-21 23:15:12 +00:00
2025_12_22_004948_add_assignments_to_backup_items.php feat/004-assignments-scope-tags (#4) 2025-12-23 21:49:58 +00:00
2025_12_22_004957_add_group_mapping_to_restore_runs.php feat/004-assignments-scope-tags (#4) 2025-12-23 21:49:58 +00:00
2025_12_22_171525_add_assignments_to_policy_versions.php feat/004-assignments-scope-tags (#4) 2025-12-23 21:49:58 +00:00
2025_12_22_171545_add_policy_version_id_to_backup_items.php feat/004-assignments-scope-tags (#4) 2025-12-23 21:49:58 +00:00
2025_12_23_215901_create_bulk_operation_runs_table.php feat/005-bulk-operations (#5) 2025-12-25 13:32:36 +00:00
2025_12_23_215905_add_ignored_at_to_policies_table.php feat/005-bulk-operations (#5) 2025-12-25 13:32:36 +00:00
2025_12_24_002001_create_notifications_table.php feat/005-bulk-operations (#5) 2025-12-25 13:32:36 +00:00
2025_12_24_005055_increase_bulk_operation_runs_status_length.php feat/005-bulk-operations (#5) 2025-12-25 13:32:36 +00:00
2026_01_04_135956_add_environment_to_tenants_table.php feat/031-tenant-portfolio-context-switch (#32) 2026-01-04 21:28:08 +00:00
2026_01_04_135957_create_tenant_user_table.php feat/031-tenant-portfolio-context-switch (#32) 2026-01-04 21:28:08 +00:00
2026_01_04_135957_create_user_tenant_preferences_table.php feat/031-tenant-portfolio-context-switch (#32) 2026-01-04 21:28:08 +00:00
2026_01_05_011014_create_backup_schedules_table.php feat/032-backup-scheduling-mvp (#34) 2026-01-05 04:22:13 +00:00
2026_01_05_011034_create_backup_schedule_runs_table.php feat/032-backup-scheduling-mvp (#34) 2026-01-05 04:22:13 +00:00