FEAT: UI Admin — page inventaire matériel agent (specs complètes + métriques live + historique) #86

Open
opened 2026-08-12 10:16:26 +02:00 by nonobis · 1 comment
Owner

🎯 Contexte

Une fois les collecteurs en place (CPU, mémoire/disque, GPU, OS/Docker/réseau), il faut une vue unique par agent : les specs de la machine d'un coup d'œil (« ce site a un i7, 32 Go, une RTX 3060 12 Go, tourne en Docker avec 4 CPUs alloués ») + les métriques live + l'historique des valeurs.

📚 Référence spec / décision

Décision : page détail agent enrichie + agrégation par site.

  • Section « Spécifications » : CPU (marque/modèle/fréquence/cœurs), RAM machine, disques, GPU (multi), OS/kernel/conteneur — regroupée en cartes
  • Section « Machine » : IPs, températures, uptime machine/process, conteneur (ID, image, limites)
  • Métriques live existantes conservées (CPU%, RAM, disque, GPU temp/util)
  • Vue agrégée par site : « capacité totale du site » (somme CPU/RAM/GPU VRAM des agents en ligne) — utile pour décider d'ajouter un agent ou répartir les caméras
  • Historique : courbes CPU/RAM/GPU temp par agent (table AgentMetricSample horodatée, rétention configurable)

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

Page agent : cartes métriques live (CPU/RAM/disque), section « Capacité IA » à venir (#73). Dashboard/AllAgents : tuiles stat (StatTile). Pas de specs matérielles, pas de vue site agrégée, pas d'historique de métriques.

🧩 À faire

  • Refonte AgentDetail.razor : sections Spécifications (CPU/Mémoire/Disques/GPU/OS) + Machine (IP/temp/uptime/conteneur)
  • Composants : HardwareSpecCard.razor, GpuCard.razor (multi-GPU), MetricHistoryChart.razor
  • Table AgentMetricSample (AgentId, TimestampUtc, Cpu, Mem, Disk, GpuTemp, GpuUtil) + job Hangfire d'échantillonnage (ex. /5 min) + rétention (ex. 30 j)
  • Vue site agrégée : capacité totale (CPU/RAM/VRAM) des agents en ligne par site
  • Endpoints API : GET /api/agents/{id}/inventory, GET /api/agents/{id}/metrics/history?from=&to=, GET /api/sites/{id}/capacity
  • Tests bUnit : rendu des nouvelles sections, formats (Go, GHz, °C)

🧪 Critères d'acceptation

  • La page agent montre les specs complètes (CPU modèle + cœurs physiques/logiques, RAM machine, disques par montage, GPU avec VRAM/temp, OS/conteneur)
  • La vue site montre la capacité totale des agents en ligne
  • L'historique affiche des courbes sur 24 h/7 j
  • Rétention des échantillons respectée (job purge)
  • make test vert

📁 Fichiers concernés

src/Heimdall.Web/Pages/Agents/AgentDetail.razor, src/Heimdall.Web/Pages/Sites/SiteDetail.razor, src/Heimdall.Web/Components/HardwareSpecCard.razor + GpuCard.razor + MetricHistoryChart.razor (nouveaux), src/Heimdall.Domain/Entities/AgentMetricSample.cs (nouveau), src/Heimdall.Infrastructure/BackgroundJobs/JobSetup.cs (échantillonnage), src/Heimdall.Web/Controllers/AgentsController.cs + SitesController.cs, tests/Heimdall.Web.Tests/

⚠️ Impact

Ajoute une table de métriques historiques (volume : 1 ligne/agent/5 min ≈ 8 640 lignes/agent/an) — index (AgentId, TimestampUtc) + rétention obligatoire.

📝 Notes

Consomme les inventaires des tickets CPU / mémoire-disque / GPU / OS-Docker-réseau. L'historique est le socle des futurs alerting (« ce site chauffe »).



Maquette

Maquette

Description

NOUVELLE PAGE « Inventaire matériel » accessible depuis la fiche agent. Vue par agent : KPI live (CPU, RAM, GPU, disque), onglets (Vue d'ensemble / Métriques live


Maquette

Maquette

## 🎯 Contexte Une fois les collecteurs en place (CPU, mémoire/disque, GPU, OS/Docker/réseau), il faut une **vue unique** par agent : les specs de la machine d'un coup d'œil (« ce site a un i7, 32 Go, une RTX 3060 12 Go, tourne en Docker avec 4 CPUs alloués ») + les métriques live + l'historique des valeurs. ## 📚 Référence spec / décision Décision : page détail agent enrichie + agrégation par site. - Section « Spécifications » : CPU (marque/modèle/fréquence/cœurs), RAM machine, disques, GPU (multi), OS/kernel/conteneur — regroupée en cartes - Section « Machine » : IPs, températures, uptime machine/process, conteneur (ID, image, limites) - Métriques live existantes conservées (CPU%, RAM, disque, GPU temp/util) - Vue agrégée par **site** : « capacité totale du site » (somme CPU/RAM/GPU VRAM des agents en ligne) — utile pour décider d'ajouter un agent ou répartir les caméras - Historique : courbes CPU/RAM/GPU temp par agent (table `AgentMetricSample` horodatée, rétention configurable) ## 🔍 État actuel (vérifié dans le code) Page agent : cartes métriques live (CPU/RAM/disque), section « Capacité IA » à venir (#73). Dashboard/AllAgents : tuiles stat (StatTile). Pas de specs matérielles, pas de vue site agrégée, pas d'historique de métriques. ## 🧩 À faire - [ ] Refonte `AgentDetail.razor` : sections Spécifications (CPU/Mémoire/Disques/GPU/OS) + Machine (IP/temp/uptime/conteneur) - [ ] Composants : `HardwareSpecCard.razor`, `GpuCard.razor` (multi-GPU), `MetricHistoryChart.razor` - [ ] Table `AgentMetricSample` (AgentId, TimestampUtc, Cpu, Mem, Disk, GpuTemp, GpuUtil) + job Hangfire d'échantillonnage (ex. /5 min) + rétention (ex. 30 j) - [ ] Vue site agrégée : capacité totale (CPU/RAM/VRAM) des agents en ligne par site - [ ] Endpoints API : `GET /api/agents/{id}/inventory`, `GET /api/agents/{id}/metrics/history?from=&to=`, `GET /api/sites/{id}/capacity` - [ ] Tests bUnit : rendu des nouvelles sections, formats (Go, GHz, °C) ## 🧪 Critères d'acceptation - [ ] La page agent montre les specs complètes (CPU modèle + cœurs physiques/logiques, RAM machine, disques par montage, GPU avec VRAM/temp, OS/conteneur) - [ ] La vue site montre la capacité totale des agents en ligne - [ ] L'historique affiche des courbes sur 24 h/7 j - [ ] Rétention des échantillons respectée (job purge) - [ ] `make test` vert ## 📁 Fichiers concernés src/Heimdall.Web/Pages/Agents/AgentDetail.razor, src/Heimdall.Web/Pages/Sites/SiteDetail.razor, src/Heimdall.Web/Components/HardwareSpecCard.razor + GpuCard.razor + MetricHistoryChart.razor (nouveaux), src/Heimdall.Domain/Entities/AgentMetricSample.cs (nouveau), src/Heimdall.Infrastructure/BackgroundJobs/JobSetup.cs (échantillonnage), src/Heimdall.Web/Controllers/AgentsController.cs + SitesController.cs, tests/Heimdall.Web.Tests/ ## ⚠️ Impact Ajoute une table de métriques historiques (volume : 1 ligne/agent/5 min ≈ 8 640 lignes/agent/an) — index (AgentId, TimestampUtc) + rétention obligatoire. ## 📝 Notes Consomme les inventaires des tickets CPU / mémoire-disque / GPU / OS-Docker-réseau. L'historique est le socle des futurs alerting (« ce site chauffe »). --- --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page agents](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c6fdaf09f4) ![Maquette](https://forgejo.tordais.cc/attachments/fc1bcfb2-b71a-48f1-b29b-1524f6b9698e) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/d2d56b33-9679-4c62-8995-09e3b9a55dfe) - Statut : maquette appliquée dans Penpot ✓ ## Description NOUVELLE PAGE « Inventaire matériel » accessible depuis la fiche agent. Vue par agent : KPI live (CPU, RAM, GPU, disque), onglets (Vue d'ensemble / Métriques live --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page agents](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c6fdaf09f4) ![Maquette](https://forgejo.tordais.cc/attachments/fc1bcfb2-b71a-48f1-b29b-1524f6b9698e) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/d2d56b33-9679-4c62-8995-09e3b9a55dfe) - Statut : maquette appliquée dans Penpot ✓
Author
Owner

Maquette the-designer intégrée (14/08/2026) :

Maquette the-designer intégrée (14/08/2026) : - Aperçu (PNG) : https://forgejo.tordais.cc/attachments/fc1bcfb2-b71a-48f1-b29b-1524f6b9698e - Détails / composants MudBlazor (README) : https://forgejo.tordais.cc/attachments/d2d56b33-9679-4c62-8995-09e3b9a55dfe - Statut : application Penpot différée (plugin MCP non connecté) — maquette locale consultable
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#86
No description provided.