FEAT: Jobs Hangfire rétention et cleanup — RetentionCheck, S3Cleanup, CleanupFaces/Plates, DatabaseMaintenance #8
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#8
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 Contexte
Seuls 4 jobs récurrents sont enregistrés (
JobSetup.ConfigureRecurringJobs) : heartbeat-monitor, agent-failover, daily-digest, weekly-digest. Les 5 jobs de maintenance de la spec manquent, ainsi que le dashboard Hangfire.📚 Référence spec (MASTER_SPECIFICATION.md v2.0)
7.5 Jobs Hangfire — Central :
RetentionCheckJobquotidien 3h (queue default) : purge enregistrements expirés par StoragePolicy + S3 batch delete —ExecuteDeleteSQL, pas de boucle mémoire (Correctif D5)S3CleanupJobquotidien 4h : fichiers orphelins Alarik (pagination 1000, Correctif D6)CleanupUnknownFacesJobdimanche 5h : UnknownPerson > 30 j + snapshots S3CleanupLicensePlatesJobdimanche 6h : plaques non associées > 30 jDatabaseMaintenanceJobhebdomadaire dimanche 7h : VACUUM events + REINDEX (VACUUM FULL mensuel) —REINDEX DATABASE CURRENT(Correctif P5)Phase 11 : Dashboard
/hangfireaccessible Admin uniquement ([Authorize(Policy = AdminJobs)])7.4 : queues isolées (
default,email,gotify/ntfy,digest) + WorkerCount🔍 État actuel (vérifié dans le code)
src/Heimdall.Infrastructure/Jobs/: AgentFailoverJob, DailyDigestJob, HeartbeatMonitorJob, SendNotificationJob, WeeklyDigestJob.UseHangfireDashboardabsent de Program.cs. Queues actuelles : default, heartbeat, email, ntfy, digest (WorkerCount=2).🧩 À faire
JobSetup.ConfigureRecurringJobsExecuteDeleteAsync+ batch S3 (dépend du ticket stockage S3)app.UseHangfireDashboardprotégé par la policyAdminJobs🧪 Critères d'acceptation
/hangfireaccessible Admin, 403 pour les autres📁 Fichiers concernés
src/Heimdall.Infrastructure/Jobs/RetentionCheckJob.cs (nouveau), S3CleanupJob.cs (nouveau), CleanupUnknownFacesJob.cs (nouveau), CleanupLicensePlatesJob.cs (nouveau), DatabaseMaintenanceJob.cs (nouveau), src/Heimdall.Infrastructure/BackgroundJobs/JobSetup.cs, src/Heimdall.Web/Program.cs