FEAT: Déduplication des événements — architecture 4 niveaux (motion gate, IoU, cooldown, embeddings) #5
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#5
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
Sans déduplication, un objet stationnaire génère des milliers d'événements/notifications (ex. 3000 snapshots pour 10 min). Aucun des 4 niveaux de la spec n'est implémenté.
📚 Référence spec (MASTER_SPECIFICATION.md v2.0)
Partie 3 — AI Pipeline et Dédoublonnage (3.2) :
MotionThreshold(0.3) → YOLO ; sinon SKIP (économie 90% CPU)DedupCooldownSecécoulé → nouvel événementIMemoryCachepar(cameraId, trackId, objectType); clé présente →IsSuppressed=true; cooldowns : personne 30s, véhicule 60s, inconnu 300s3.4 CameraDetectionProfile :
RequireMotionForAI=true,IoUThreshold=0.6,PersonCooldownSec=30,VehicleCooldownSec=60,AnimalCooldownSec=120,UnknownPersonCooldownSec=300,MaxEventsPerMinute=20🔍 État actuel (vérifié dans le code)
CameraEventService.CreateAsync: création directe sans dedup.NotificationRateLimiter(max 20/min/camera/type, IMemoryCache) existe déjà — couvre partiellement le rate limit.KnownFacestocke des embeddings mais aucune comparaison L2 n'est faite. Pas de motion gate ni d'object tracker côté agent.🧩 À faire
RequireMotionForAIIMemoryCache, clé cameraId:objectType:trackId) →IsSuppressedKnownFaceMaxEventsPerMinutedans la création d'événement🧪 Critères d'acceptation
📁 Fichiers concernés
src/Heimdall.Agent/Services/MotionGateService.cs (nouveau), src/Heimdall.Agent/Services/ObjectTracker.cs (nouveau), src/Heimdall.Infrastructure/Services/CameraEventService.cs, src/Heimdall.Infrastructure/Services/EmbeddingDedupService.cs (nouveau)