BUG: Settings distants non appliqués par l'agent (ConfigReceiverService) #20

Closed
opened 2026-08-10 21:02:20 +02:00 by nonobis · 1 comment
Owner

🎯 Contexte

L'agent reçoit les settings du Central via le ConfigHub mais ne les applique pas (sauf HeartbeatInterval appliqué en direct).

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

Phase 12 / agent : la config distante doit piloter le comportement de l'agent (intervalles, YOLO, caméras…).
SignalR config (skill heimdall-dev) : « settings reçus appliqués immédiatement »

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

ConfigReceiverService.ApplySetting : HeartbeatInterval → appliqué live ; LogLevel → « applied on next restart » ; autres clés → « stored for future use » (log only). Full config reload fetch l'API mais n'applique pas non plus.

🧩 À faire

  • Inventorier les settings applicables (heartbeat, log level, caméras, profils de détection)
  • Appliquer immédiatement ceux qui sont dynamiques
  • Documenter les settings qui nécessitent un restart
  • Tests : envoi d'un setting → effet observable

🧪 Critères d'acceptation

  • Un changement de setting distant est appliqué sans redémarrage quand c'est possible
  • Les settings non applicables à chaud sont explicitement loggés

📁 Fichiers concernés

src/Heimdall.Agent/Services/ConfigReceiverService.cs, src/Heimdall.Agent/AgentOptions.cs

## 🎯 Contexte L'agent reçoit les settings du Central via le ConfigHub mais ne les applique pas (sauf `HeartbeatInterval` appliqué en direct). ## 📚 Référence spec (MASTER_SPECIFICATION.md v2.0) **Phase 12 / agent** : la config distante doit piloter le comportement de l'agent (intervalles, YOLO, caméras…). **SignalR config** (skill heimdall-dev) : « settings reçus appliqués immédiatement » ## 🔍 État actuel (vérifié dans le code) `ConfigReceiverService.ApplySetting` : `HeartbeatInterval` → appliqué live ; `LogLevel` → « applied on next restart » ; autres clés → « stored for future use » (log only). `Full config reload` fetch l'API mais n'applique pas non plus. ## 🧩 À faire - [ ] Inventorier les settings applicables (heartbeat, log level, caméras, profils de détection) - [ ] Appliquer immédiatement ceux qui sont dynamiques - [ ] Documenter les settings qui nécessitent un restart - [ ] Tests : envoi d'un setting → effet observable ## 🧪 Critères d'acceptation - [ ] Un changement de setting distant est appliqué sans redémarrage quand c'est possible - [ ] Les settings non applicables à chaud sont explicitement loggés ## 📁 Fichiers concernés src/Heimdall.Agent/Services/ConfigReceiverService.cs, src/Heimdall.Agent/AgentOptions.cs
Author
Owner

Corrigé par 83c2c6b (Fixes #20), poussé sur main.

  • log.level appliqué à chaud via RuntimeLogLevel (règle globale en tête du LoggerFilterOptions partagé + refresh des loggers existants) — effet immédiat, plus besoin de restart
  • Full config reload (FetchFullConfigAsync) applique désormais toutes les clés reçues (heartbeat, log.level, credentials…) via le même pipeline que les événements SettingChanged
  • Settings connus non dynamiques (ai.detection.*, detection.*, model.*, ffmpeg.*, yolo.*, camera.*) explicitement loggés « requires restart »
  • Tests ajoutés : effet observable sur loggers existants, abaissement de niveau, full reload complet (114 tests agent verts)
Corrigé par 83c2c6b (Fixes #20), poussé sur main. - `log.level` appliqué à chaud via `RuntimeLogLevel` (règle globale en tête du `LoggerFilterOptions` partagé + refresh des loggers existants) — effet immédiat, plus besoin de restart - Full config reload (`FetchFullConfigAsync`) applique désormais **toutes** les clés reçues (heartbeat, log.level, credentials…) via le même pipeline que les événements `SettingChanged` - Settings connus non dynamiques (`ai.detection.*`, `detection.*`, `model.*`, `ffmpeg.*`, `yolo.*`, `camera.*`) explicitement loggés « requires restart » - Tests ajoutés : effet observable sur loggers existants, abaissement de niveau, full reload complet (114 tests agent verts)
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#20
No description provided.