add go bench client

This commit is contained in:
Gilles Soulier
2026-01-11 23:41:30 +01:00
parent c67befc549
commit 6abc70cdfe
80 changed files with 13311 additions and 61 deletions

214
FRONTEND_CHANGES.md Normal file
View File

@@ -0,0 +1,214 @@
# Modifications Frontend Appliquées
## Date : 2026-01-11
---
## ✅ Modifications complétées
### 1. Module HardwareRenderer (Action 3.1)
**Fichier créé** : `frontend/js/hardware-renderer.js`
Module centralisé pour le rendu hardware, exposant :
- `renderMotherboardDetails(snapshot)` - Carte mère complète (16 champs)
- `renderCPUDetails(snapshot)` - CPU avec multi-socket + signature + flags
- `renderMemoryDetails(snapshot, deviceData)` - RAM/SWAP + slots DIMM
- `renderStorageDetails(snapshot)` - Disques avec SMART
- `renderGPUDetails(snapshot)` - Carte graphique
- `renderNetworkDetails(snapshot)` - Interfaces réseau
- `renderOSDetails(snapshot)` - Système d'exploitation
- `renderProxmoxDetails(snapshot)` - Proxmox VE (nouveau)
- `renderAudioDetails(snapshot)` - Audio hardware/software (nouveau)
**Intégration** :
- ✅ Ajouté à `devices.html` et `device_detail.html`
- ✅ Appelable via `window.HardwareRenderer.renderXxx()`
- ⚠️ Migration partielle : `device_detail.js` ligne 91 utilise le module, reste à compléter (voir REFACTORING_PLAN.md)
---
### 2. Migration des icônes vers IconManager (Action 3.3)
**Fichier modifié** : `frontend/js/devices.js`
**Changement** :
```javascript
// AVANT (lignes 17-37)
const SECTION_ICON_PATHS = {
motherboard: 'icons/icons8-motherboard-94.png',
cpu: 'icons/icons8-processor-94.png',
// ... chemins PNG hardcodés
};
function getSectionIcon(key, altText) {
return `<img src="${src}" alt="${altText}" class="section-icon">`;
}
// APRÈS
const SECTION_ICON_NAMES = {
motherboard: 'motherboard',
cpu: 'cpu',
ram: 'memory',
// ... noms d'icônes FontAwesome
};
function getSectionIcon(key, altText) {
return `<span class="section-icon" data-icon="${iconName}" title="${altText}"></span>`;
}
```
**Ajout initialisation** (ligne 1295-1298) :
```javascript
detailsContainer.innerHTML = headerHtml + orderedSections;
// Initialize icons using IconManager
if (window.IconManager) {
window.IconManager.initializeIcons(detailsContainer);
}
```
**Résultat** :
- ✅ Toutes les icônes de sections utilisent `data-icon` + IconManager
- ✅ Compatibilité avec les packs d'icônes (FontAwesome, Icons8, emoji)
- ✅ Coloration automatique selon le thème (SVG inline)
---
### 3. UI IP URL (Action 1.1)
**Fichier modifié** : `frontend/js/devices.js`
**Ajout section IP** (lignes 1122-1129) :
```html
<div class="header-row">
<div>
<div class="header-label">Adresse IP</div>
<div class="header-value" id="ip-display-container">
${renderIPDisplay(snapshot, device)}
</div>
</div>
</div>
```
**Nouvelles fonctions** (lignes 1087-1172) :
- `renderIPDisplay(snapshot, device)` - Affiche IP(s) non-loopback + bouton éditer
- `editIPUrl()` - Affiche l'éditeur d'URL
- `saveIPUrl()` - Sauvegarde l'URL via API (`PUT /api/devices/{id}`)
- `cancelIPUrlEdit()` - Annule l'édition
**Fonctionnalités** :
- ✅ Extraction des IP non-127.0.0.1 depuis `network_interfaces_json`
- ✅ Affichage cliquable si URL définie (ouvre dans nouvel onglet)
- ✅ Édition inline avec input + boutons Sauvegarder/Annuler
- ✅ Auto-préfixe `http://` si manquant
- ✅ Binding des boutons dans `bindDetailActions()` (lignes 1427-1430)
**Note** :
⚠️ **Nécessite backend** : Le champ `device.ip_url` doit être retourné par l'API (voir TODO_BACKEND.md §1)
---
## 🔧 Fichiers modifiés
| Fichier | Lignes avant | Lignes après | Changement |
|---------|--------------|--------------|------------|
| `frontend/js/hardware-renderer.js` | 0 (nouveau) | 700+ | Création module |
| `frontend/js/devices.js` | 1953 | 2040+ | +87 lignes |
| `frontend/js/device_detail.js` | 975 | 980 | +5 lignes (partiel) |
| `frontend/devices.html` | 86 | 89 | +3 scripts |
| `frontend/device_detail.html` | 230 | 233 | +3 scripts |
---
## 📝 Fichiers de documentation créés
1. **TODO_BACKEND.md** - Actions backend requises (schémas Pydantic, champs manquants)
2. **REFACTORING_PLAN.md** - Plan détaillé migration vers HardwareRenderer
3. **FRONTEND_CHANGES.md** (ce fichier) - Synthèse modifications frontend
---
## ⏭️ Prochaines actions (en attente)
### Action 2.1 - Bouton Recherche Web du modèle
- Icône globe à côté du champ "Modèle"
- Recherche paramétrable (Google/DuckDuckGo/Bing via Settings)
- Ouverture nouvel onglet
### Action 2.2 - Amélioration multi-CPU
- Grille tableau pour afficher plusieurs sockets
- Parsing dmidecode type 4
-**DÉJÀ IMPLÉMENTÉ dans HardwareRenderer.renderCPUDetails()** (lignes 60-150)
### Action 2.3 - Popups Raw Info
- Tooltip au survol icône Mémoire → `raw_info.dmidecode` complet
- Tooltip au survol icône Motherboard → détails BIOS
- Placement intelligent (fixed position)
### Action 1.3 - Afficher Proxmox et Audio
- Sections dédiées dans `device_detail.html`
-**DÉJÀ IMPLÉMENTÉ dans HardwareRenderer** (fonctions `renderProxmoxDetails()` et `renderAudioDetails()`)
- Reste à ajouter les `<div>` dans le HTML + appel des fonctions
### Action 4.1 - Uniformiser gestion erreurs
- Remplacer `alert()` par `utils.showToast()`
- Standardiser `try-catch`
---
## 🧪 Tests recommandés
### Test 1 : IconManager
1. Ouvrir `devices.html`
2. Sélectionner un device
3. Vérifier que les icônes de sections s'affichent (pas de `<img>` cassées)
4. Aller dans Settings → changer de pack d'icônes
5. Revenir → vérifier que les icônes ont changé
### Test 2 : IP URL (nécessite backend à jour)
1. Ouvrir `devices.html`
2. Sélectionner un device
3. Vérifier l'affichage IP (non-127.0.0.1)
4. Cliquer sur "Éditer lien IP"
5. Saisir une URL (ex: `http://10.0.0.50:8080`)
6. Cliquer "Sauvegarder"
7. Vérifier que l'IP devient cliquable
8. Cliquer → vérifier ouverture dans nouvel onglet
### Test 3 : HardwareRenderer
1. Ouvrir console navigateur (F12)
2. Taper : `HardwareRenderer`
3. Vérifier que l'objet existe avec 9 méthodes
---
## ⚠️ Limitations actuelles
1. **Backend pas à jour** :
- `device.ip_url` non retourné par API → bouton IP URL ne sauvegarde pas
- Champs Proxmox/Audio non exposés → sections vides
2. **Migration HardwareRenderer partielle** :
- `device_detail.js` : seule `renderMotherboardDetails()` migrée
- `devices.js` : aucune fonction migrée (utilise encore code dupliqué)
- **Impact** : Gain potentiel de -656 lignes non réalisé
3. **Icônes sections dans device_detail.html** :
- Toujours en PNG hardcodé
- Pas encore migré vers `data-icon`
---
## 📊 Statistiques
- **Lignes ajoutées** : ~800 (dont 700 dans hardware-renderer.js)
- **Fonctions créées** : 12
- **Fichiers créés** : 4 (1 JS + 3 MD)
- **Fichiers modifiés** : 4
- **Icônes migrées** : 18/18 dans devices.js
- **Duplications supprimées** : 0 (migration partielle)
---
**Dernière mise à jour** : 2026-01-11 (session en cours)