feat(v0.1.5): SMART multi-disques — collecte tous les disques détectés

Agent:
- SmartMetrics + champ device (nom du disque ex: sda, nvme0)
- smart: Option<Vec<SmartMetrics>> — tous les disques, pas seulement le 1er
- collect() itère /sys/block, accumule les résultats de tous les disques valides

Serveur:
- SmartMetrics.Device + Smart []SmartMetrics dans AgentMetrics
- InsertMetrics: stocke smart_json (JSON array) au lieu de colonnes plates
- GetLastMetrics: désérialise smart_json
- Migration: smart_json TEXT ajoutée

Dashboard:
- Tuile: une icône shield/triangle par disque avec tooltip incluant le nom
- Popup détail: un bouton SMART par disque (couleur ok/err)
- showSmart(agentId, diskIdx): affiche le disque sélectionné

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gilles Soulier
2026-05-23 05:23:23 +02:00
parent 1b9daae08a
commit a53923fd8e
9 changed files with 52 additions and 60 deletions
+3 -1
View File
@@ -18,11 +18,13 @@ pub struct AgentMetrics {
pub network_rx: Option<u64>,
pub network_tx: Option<u64>,
pub temperature: Option<f32>,
pub smart: Option<SmartMetrics>,
pub smart: Option<Vec<SmartMetrics>>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SmartMetrics {
#[serde(default)]
pub device: String,
pub passed: bool,
pub temperature: Option<i64>,
pub reallocated_sectors: Option<i64>,