FEAT: Remontée des détections agent → central (événements + snapshots) #57

Closed
opened 2026-08-11 21:36:58 +02:00 by nonobis · 0 comments
Owner

🎯 Contexte

Le pipeline de capture (#1, résolu) analyse les frames via FrameAnalyzerService, mais les résultats sont jetés : rien ne remonte au Central. Les événements de détection, les snapshots et la déduplication (#5) ne peuvent pas fonctionner tant que ce chaînon manque.

📚 Référence spec (MASTER_SPECIFICATION.md v2.0)

Phase 15 — Snapshot pipeline : worker lit le channel et traite (YOLO à la Phase 16) — la sortie doit aller au Central.
Phase 16 — IA Pipeline : événements → Central → déduplication 4 niveaux (#5), pipeline degradation (#4).

🔍 État actuel (vérifié dans le code)

SnapshotPipelineService.ConsumeSnapshotsAsync : lit le channel, appelle FrameAnalyzerService.AnalyzeFrameAsync, met à jour SceneStateTracker — et s'arrête là. Aucun POST. L'endpoint POST /api/cameras/{id}/snapshot (API Key) existe côté central mais n'est jamais appelé par l'agent.

🧩 À faire

  • Envoyer les snapshots pertinents au Central (POST /api/cameras/{id}/snapshot) — pas tous, seulement quand la scène est active (état du tracker) ou à intervalle de visibilité
  • Publier les événements de détection (résultat de AnalyzeFrameAsync) vers le Central (hub SignalR ou endpoint API à définir)
  • Anti-spam : cooldown par caméra + type d'objet (s'appuie sur la déduplication #5 côté central)
  • Gestion des échecs réseau : re-queue bornée ou drop avec compteur, ne pas bloquer la capture
  • Tests : remontée simulée (fake central HTTP), anti-spam, échec réseau

✅ Critères d'acceptation

  • Une détection produite (quand #2 livré) remonte un événement visible côté Central
  • Les snapshots de scène active apparaissent dans l'UI caméra
  • L'agent ne spamme pas : cooldown respecté

📁 Fichiers concernés

src/Heimdall.Agent/Services/SnapshotPipelineService.cs, src/Heimdall.Web/Controllers/CamerasController.cs, src/Heimdall.Web/Hubs/ (StreamingHub/MonitoringHub)

## 🎯 Contexte Le pipeline de capture (#1, résolu) analyse les frames via FrameAnalyzerService, mais les résultats sont **jetés** : rien ne remonte au Central. Les événements de détection, les snapshots et la déduplication (#5) ne peuvent pas fonctionner tant que ce chaînon manque. ## 📚 Référence spec (MASTER_SPECIFICATION.md v2.0) **Phase 15 — Snapshot pipeline** : worker lit le channel et traite (YOLO à la Phase 16) — la sortie doit aller au Central. **Phase 16 — IA Pipeline** : événements → Central → déduplication 4 niveaux (#5), pipeline degradation (#4). ## 🔍 État actuel (vérifié dans le code) SnapshotPipelineService.ConsumeSnapshotsAsync : lit le channel, appelle FrameAnalyzerService.AnalyzeFrameAsync, met à jour SceneStateTracker — et s'arrête là. Aucun POST. L'endpoint POST /api/cameras/{id}/snapshot (API Key) existe côté central mais n'est jamais appelé par l'agent. ## 🧩 À faire - [ ] Envoyer les snapshots pertinents au Central (POST /api/cameras/{id}/snapshot) — pas tous, seulement quand la scène est active (état du tracker) ou à intervalle de visibilité - [ ] Publier les événements de détection (résultat de AnalyzeFrameAsync) vers le Central (hub SignalR ou endpoint API à définir) - [ ] Anti-spam : cooldown par caméra + type d'objet (s'appuie sur la déduplication #5 côté central) - [ ] Gestion des échecs réseau : re-queue bornée ou drop avec compteur, ne pas bloquer la capture - [ ] Tests : remontée simulée (fake central HTTP), anti-spam, échec réseau ## ✅ Critères d'acceptation - [ ] Une détection produite (quand #2 livré) remonte un événement visible côté Central - [ ] Les snapshots de scène active apparaissent dans l'UI caméra - [ ] L'agent ne spamme pas : cooldown respecté ## 📁 Fichiers concernés src/Heimdall.Agent/Services/SnapshotPipelineService.cs, src/Heimdall.Web/Controllers/CamerasController.cs, src/Heimdall.Web/Hubs/ (StreamingHub/MonitoringHub)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#57
No description provided.