This commit is contained in:
Gilles Soulier
2026-01-05 16:08:01 +01:00
parent dcba044cd6
commit c67befc549
2215 changed files with 26743 additions and 329 deletions

187
docs/CHANGELOG_2025-12-14.md Executable file
View File

@@ -0,0 +1,187 @@
# 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