# Changelog - 14 décembre 2025, 03:00 ## 🔧 Correctifs Appliqués ### 1. Script Benchmark (bench.sh v1.2.0) #### Problème Le script collectait le nombre de **threads** au lieu du nombre de **cores physiques** pour le CPU. **Avant** (ligne 240) : ```bash cores=$(lscpu | awk -F: '/^CPU\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}') ``` - Résultat : `CPU(s): 4` (nombre de threads logiques) - Stocké comme `cpu_cores: 4` dans la base de données - **Incorrect** : Pour un CPU avec 2 cores et hyperthreading **Après** (lignes 241-245) : ```bash # Calcul du nombre de cores physiques: Core(s) per socket × Socket(s) local cores_per_socket sockets cores_per_socket=$(lscpu | awk -F: '/Core\(s\) per socket/ {gsub(/^[ \t]+/,"",$2); print $2}') sockets=$(lscpu | awk -F: '/Socket\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}') cores=$((${cores_per_socket:-1} * ${sockets:-1})) ``` - Résultat : `2 cores × 1 socket = 2` (cores physiques) - **Correct** : Reflète le vrai nombre de cores #### Exemple de correction ``` Machine: Intel Core i5-2400 - Ancien: cpu_cores = 4 (threads) - Nouveau: cpu_cores = 2 (cores réels) - Threads: 4 (via nproc, inchangé) Machine: AMD Ryzen 9 5900X - Ancien: cpu_cores = 24 (threads) - Nouveau: cpu_cores = 12 (cores réels) - Threads: 24 (via nproc, inchangé) ``` ### 2. Frontend (device_detail.js) #### Problème 1: Affichage CPU cores incorrect L'affichage utilisait l'opérateur `||` qui traite `0` comme une valeur "falsy", affichant "N/A" au lieu de `0`. **Avant** (ligne 129) : ```javascript { label: 'Cores', value: snapshot.cpu_cores || 'N/A' } ``` - `cpu_cores = 0` → Affiche "N/A" ou "?" ❌ **Après** (ligne 129) : ```javascript { label: 'Cores', value: snapshot.cpu_cores != null ? snapshot.cpu_cores : 'N/A' } ``` - `cpu_cores = 0` → Affiche "0" ✅ - `cpu_cores = null` → Affiche "N/A" ✅ #### Problème 2: Affichage RAM incorrect **Avant** : ```javascript const ramUsedGB = Math.round((snapshot.ram_used_mb || 0) / 1024); // ram_used_mb = null → Affiche "0 GB" au lieu de "N/A" ``` **Après** (lignes 183-193) : ```javascript const ramUsedGB = snapshot.ram_used_mb != null ? Math.round(snapshot.ram_used_mb / 1024) : null; // ram_used_mb = null → Affiche "N/A" ✅ // ram_used_mb = 0 → Affiche "0 GB" ✅ ``` #### Problème 3: Affichage Carte Mère avec espaces vides **Problème** : Le modèle de carte mère peut contenir uniquement des espaces (ex: " ") **Avant** (ligne 97) : ```javascript { label: 'Modèle', value: snapshot.motherboard_model || 'N/A' } // " " → Affiche des espaces au lieu de "N/A" ``` **Après** (lignes 95-107) : ```javascript const cleanValue = (val) => { if (!val || (typeof val === 'string' && val.trim() === '')) return 'N/A'; return val; }; const items = [ { label: 'Fabricant', value: cleanValue(snapshot.motherboard_vendor) }, { label: 'Modèle', value: cleanValue(snapshot.motherboard_model) }, { label: 'Version BIOS', value: cleanValue(snapshot.bios_version) }, { label: 'Date BIOS', value: cleanValue(snapshot.bios_date) } ]; // " " → Affiche "N/A" ✅ ``` ## 📊 Impact ### Avant le Correctif ```json { "cpu_cores": 0, // ❌ Incorrect (devrait être 2) "cpu_threads": 24, // ✅ OK "ram_used_mb": null, // ⚠️ Données manquantes "ram_free_mb": null // ⚠️ Données manquantes } ``` **Frontend affichait** : - Cores: "?" (car 0 traité comme falsy) - RAM Utilisée: "0 GB" (au lieu de "N/A") ### Après le Correctif + Nouveau Benchmark **Base de données** : ```json { "cpu_cores": 2, // ✅ Correct (2 cores physiques) "cpu_threads": 4, // ✅ OK "ram_used_mb": 6818, // ✅ Données collectées "ram_free_mb": 379 // ✅ Données collectées } ``` **Frontend affichera** : - Cores: "2" ✅ - Threads: "4" ✅ - RAM Utilisée: "7 GB (87%)" ✅ - RAM Libre: "0 GB" ✅ ## 🧪 Tests de Validation ```bash # Test 1: Vérifier la collecte CPU cores LANG=C lscpu | grep -E "(Core\(s\) per socket|Socket\(s\))" # Résultat attendu: Core(s) per socket: 2, Socket(s): 1 # Test 2: Vérifier la collecte RAM free -k | awk '/^Mem:/ {printf "Used: %d MB\n", $3/1024}' # Résultat attendu: Used: ~6800 MB (valeur non-null) # Test 3: Redémarrer les conteneurs docker compose restart frontend # Test 4: Exécuter un nouveau benchmark sudo bash /home/gilles/Documents/vscode/serv_benchmark/scripts/bench.sh # Test 5: Vérifier l'API curl http://localhost:8007/api/devices/1 | jq '{ cpu_cores: .last_hardware_snapshot.cpu_cores, cpu_threads: .last_hardware_snapshot.cpu_threads, ram_used: .last_hardware_snapshot.ram_used_mb }' # Résultat attendu: cpu_cores: 2, cpu_threads: 4, ram_used: 6818 ``` ## 📝 Prochaines Étapes 1. **Exécuter un nouveau benchmark** sur toutes les machines pour mettre à jour les données 2. **Vérifier l'interface web** : http://localhost:8087/device_detail.html?id=1 3. **Valider** que toutes les sections affichent les bonnes données ## 🔗 Fichiers Modifiés | Fichier | Lignes | Changement | |---------|--------|------------| | [scripts/bench.sh](scripts/bench.sh#L234-L247) | 234-247 | Correctif collecte cpu_cores | | [frontend/js/device_detail.js](frontend/js/device_detail.js#L129-L130) | 129-130 | Amélioration affichage CPU | | [frontend/js/device_detail.js](frontend/js/device_detail.js#L183-L193) | 183-193 | Amélioration affichage RAM | ## 🎯 Résultat Attendu Après avoir exécuté le benchmark avec le script corrigé : - ✅ Nombre de **cores physiques** correct dans la base de données - ✅ Données RAM complètes (**used**, **free**, **shared**) - ✅ Frontend affiche les valeurs réelles au lieu de "N/A" - ✅ Affichage cohérent entre 0, null et valeurs réelles --- **Version Script** : 1.2.0 **Version Frontend** : 2.0.1 **Date Déploiement** : 14 décembre 2025, 03:00