77 lines
6.2 KiB
Markdown
77 lines
6.2 KiB
Markdown
# Discovery Report: Feature 056 — Remove Legacy BulkOperationRun
|
|
|
|
## Purpose
|
|
|
|
This report records the repo-wide sweep of legacy BulkOperationRun usage and any bulk-like actions that must be classified and migrated to canonical `OperationRun`.
|
|
|
|
## Legacy History Decision
|
|
|
|
- Default path: legacy BulkOperationRun history is **not** migrated into `OperationRun`.
|
|
- After cutover, legacy tables are removed; historical investigation relies on database backups/exports if needed.
|
|
|
|
## Sweep Checklist
|
|
|
|
- [x] app/ (Models, Services, Jobs, Notifications, Support)
|
|
- [x] app/Filament/ (Resources, Pages, Actions)
|
|
- [x] database/ (migrations, factories, seeders)
|
|
- [ ] resources/ (views)
|
|
- [ ] routes/ (web, console)
|
|
- [ ] tests/ (Feature, Unit)
|
|
|
|
## Findings
|
|
|
|
### A) Legacy artifacts (to remove)
|
|
|
|
| Kind | Path | Notes |
|
|
|------|------|-------|
|
|
| Model | app/Models/BulkOperationRun.php | Legacy run model; referenced across jobs and UI. |
|
|
| Service | app/Services/BulkOperationService.php | Legacy run lifecycle + failure recording; widely referenced. |
|
|
| Filament Resource | app/Filament/Resources/BulkOperationRunResource.php | Legacy Monitoring surface; must be removed (Monitoring uses OperationRun). |
|
|
| Filament Pages | app/Filament/Resources/BulkOperationRunResource/Pages/ListBulkOperationRuns.php | Legacy list page. |
|
|
| Filament Pages | app/Filament/Resources/BulkOperationRunResource/Pages/ViewBulkOperationRun.php | Legacy detail page. |
|
|
| Policy | app/Policies/BulkOperationRunPolicy.php | Legacy authorization policy. |
|
|
| Policy Registration | app/Providers/AppServiceProvider.php | Registers BulkOperationRun policy/gate mapping. |
|
|
| Helper | app/Support/RunIdempotency.php | `findActiveBulkOperationRun(...)` helper for legacy dedupe. |
|
|
| Command | app/Console/Commands/TenantpilotPurgeNonPersistentData.php | Still references BulkOperationRun and legacy table counts. |
|
|
| DB Migrations | database/migrations/*bulk_operation_runs* | Legacy table creation + follow-up schema changes. |
|
|
| Factory | database/factories/BulkOperationRunFactory.php | Test factory to remove after cutover. |
|
|
| Seeder | database/seeders/BulkOperationsTestSeeder.php | Test seed data to remove after cutover. |
|
|
| Table | bulk_operation_runs | Legacy DB table; drop via forward migration after cutover. |
|
|
|
|
### B) Bulk-like start surfaces (to migrate)
|
|
|
|
| Surface | Path | Operation type | Target scope? | Notes |
|
|
|---------|------|----------------|---------------|-------|
|
|
| Policy bulk delete | app/Filament/Resources/PolicyResource.php | `policy.delete` | Yes (tenant + directory scope) | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Backup set bulk delete | app/Filament/Resources/BackupSetResource.php | `backup_set.delete` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Policy version prune | app/Filament/Resources/PolicyVersionResource.php | `policy_version.prune` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Policy version force delete | app/Filament/Resources/PolicyVersionResource.php | `policy_version.force_delete` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Restore run bulk delete | app/Filament/Resources/RestoreRunResource.php | `restore_run.delete` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Tenant bulk sync | app/Filament/Resources/TenantResource.php | `tenant.sync` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Policy snapshot capture | app/Filament/Resources/PolicyResource/Pages/ViewPolicy.php | `policy.capture_snapshot` | Yes | Migrates to OperationRun-backed enqueue + orchestrator/worker. |
|
|
| Drift generation | app/Filament/Pages/DriftLanding.php | `drift.generate` | Yes | Mixed legacy + OperationRun today; needs full canonicalization. |
|
|
| Backup set add policies (picker) | app/Livewire/BackupSetPolicyPickerTable.php | `backup_set.add_policies` | Yes | Mixed legacy + OperationRun today; remove legacy dedupe + legacy links. |
|
|
|
|
### C) Bulk-like jobs/workers (to migrate)
|
|
|
|
| Job | Path | Remote calls? | Notes |
|
|
|-----|------|--------------|------|
|
|
| Policy bulk delete | app/Jobs/BulkPolicyDeleteJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Backup set bulk delete | app/Jobs/BulkBackupSetDeleteJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Policy version prune | app/Jobs/BulkPolicyVersionPruneJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Policy version force delete | app/Jobs/BulkPolicyVersionForceDeleteJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Restore run bulk delete | app/Jobs/BulkRestoreRunDeleteJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Tenant bulk sync | app/Jobs/BulkTenantSyncJob.php | Likely (Graph) | Legacy bulk job; replaced by orchestrator/worker pattern. |
|
|
| Policy snapshot capture | app/Jobs/CapturePolicySnapshotJob.php | Likely (Graph) | Legacy-ish job; migrate to orchestrator/worker and canonical run updates. |
|
|
| Drift generator | app/Jobs/GenerateDriftFindingsJob.php | Likely (Graph) | Already carries OperationRun; remove remaining legacy coupling. |
|
|
| Backup set add policies | app/Jobs/AddPoliciesToBackupSetJob.php | Likely (Graph) | Contains a legacy “fallback link” to BulkOperationRunResource; canonicalize. |
|
|
| Policy bulk sync (legacy) | app/Jobs/BulkPolicySyncJob.php | Likely (Graph) | Legacy bulk job; migrate/remove as part of full cutover. |
|
|
|
|
### D) “View run” links (to canonicalize)
|
|
|
|
| Location | Path | Current link target | Fix |
|
|
|----------|------|---------------------|-----|
|
|
| Run-status notification | app/Notifications/RunStatusChangedNotification.php | `BulkOperationRunResource::getUrl('view', ...)` | Route via `OperationRunLinks::view(...)` (OperationRun is canonical). |
|
|
| Add policies job notification links | app/Jobs/AddPoliciesToBackupSetJob.php | Conditional: OperationRun OR legacy BulkOperationRunResource view | Remove legacy fallback; always use OperationRun-backed links. |
|
|
| Legacy resource itself | app/Filament/Resources/BulkOperationRunResource.php | Legacy list/detail routes exist | Remove resource; rely on Monitoring → Operations. |
|