This commit is contained in:
2025-12-14 10:40:54 +01:00
parent 5d483b0df5
commit 8428bf9c82
55 changed files with 9763 additions and 391 deletions

View File

@@ -0,0 +1,122 @@
# 01 Vision fonctionnelle et objectifs
## Nom de lapplication
Nom provisoire : **Linux BenchTools**
Objectif : application self-hosted permettant de :
- Recenser les machines (physiques, VM, SBC type Raspberry Pi).
- Collecter des informations matérielles (CPU, RAM, GPU, stockage, réseau, carte mère, OS).
- Lancer des benchmarks standardisés via un **script client** exécuté sur les machines.
- Recevoir et stocker les résultats de bench sur un **serveur central**.
- Calculer une **note globale** et des sous-scores (CPU, mémoire, disque, réseau, GPU).
- Afficher un **dashboard** triant les machines par performance globale.
- Associer des liens constructeurs et des documents (PDF / images) à chaque machine.
- tu verifiera bien sur la coherence entre tous les fichier de consigne de prompt et si le choix des outils est cohérent
Lapplication doit être :
- **Self-hosted** sur une machine Linux (Debian) au format Docker.
- Légère (SQLite, pas de dépendance à une grosse base).
- Accessible sur le réseau local (via reverse proxy existant).
- Exploitable autant pour des serveurs que des PC ou des VMs.
---
## Rôles et usages
### Rôle principal : utilisateur/admin unique (Gilles)
Actions possibles :
- Ajouter/modifier une machine (device) et ses métadonnées (description, localisation, tags).
- Visualiser les informations hardware associées à une machine.
- Lancer un bench sur une machine en copiant une commande fournie par linterface.
- Visualiser lhistorique des benchmarks dune machine.
- Consulter les notes globales et par catégorie (CPU, RAM, disque, réseau, GPU).
- Ajouter/éditer des liens vers les sites constructeurs.
- Uploader des notices PDF, factures, schémas, photos.
---
## Fonctionnalités principales (MVP)
1. **Gestion des machines (devices)**
- CRUD basique :
- Créer un device (ou auto-création à la réception dun bench).
- Lire les infos dun device.
- Modifier la description, la localisation, les tags.
- Un device représente une machine logique (hostname ou nom choisi).
2. **Snapshots hardware**
- À chaque bench, un snapshot de létat matériel et OS est enregistré :
- CPU (modèle, cœurs, threads, fréquences, cache, vendor).
- RAM (total, slots, type, capacités).
- GPU (modèle, mémoire, vendor).
- Disques (liste, type, taille, interface, SMART résumé).
- Réseau (interfaces, vitesses, IPs).
- Carte mère (vendor, modèle, BIOS).
- OS (nom, version, kernel, architecture, type machine : bare metal / VM).
- Ces infos sont liées à un `hardware_snapshot` et référencées par un `benchmark`.
3. **Benchmarks**
- Réception dun JSON produit par un script Bash exécuté sur la machine.
- Enregistrement dun `benchmark` avec :
- Date/heure du run.
- Version du script client.
- Scores par catégorie : `cpu_score`, `memory_score`, `disk_score`, `network_score`, `gpu_score`.
- `global_score` calculé selon une formule configurable (par ex. moyenne pondérée).
- Détails bruts en JSON (`details_json`) pour audit.
4. **Liens constructeur**
- Attacher à un device des liens HTTP :
- Fiche produit constructeur.
- Page support / BIOS / drivers.
- Documentation technique.
5. **Documents**
- Upload de fichiers (surtout PDF) associés à un device :
- Notices / manuels.
- Factures.
- Photos / schémas.
- Stockage sur disque, références dans SQLite.
6. **Dashboard Web**
- Page daccueil :
- Statistiques globales (nombre de devices, nombre total de benchmarks, date dernier bench, score moyen).
- Tableau trié par `global_score` décroissant.
- Indicateur compact par ligne :
- Hostname + description.
- Dernier `global_score`.
- Détail CPU/Mem/Disk/Net/GPU du dernier bench.
- Section "Quick bench script" :
- Affichage de la commande shell à copier/coller pour exécuter le script client.
---
## Non-objectifs (MVP)
- Pas de multi-tenant ni de gestion avancée de droits utilisateurs.
- Pas de monitoring temps réel (ce nest pas un outil de supervision).
- Pas de support Windows/macOS dans la première version (Linux seulement).
- Pas dagent resident/daemon permanent sur les clients (simple script à exécuter ponctuellement).
---
## Contraintes techniques
- Backend en **Python** (FastAPI recommandé).
- Base de données : **SQLite** (fichier sur disque).
- WebUI simple (HTML/CSS/JS minimal, éventuellement HTMX).
- Déploiement via **Docker** + `docker-compose`.
- Script client en **Bash** (priorité Debian/Ubuntu, extensible ensuite).
---
## Critères de réussite (MVP)
- Être capable de :
- Déployer lapp via `docker-compose up -d`.
- Copier une commande depuis le Dashboard, lexécuter sur une machine Linux, et voir :
- Le device apparaître (ou se mettre à jour).
- Un nouveau benchmark visible dans linterface.
- Voir la machine triée correctement dans le dashboard par `global_score`.
- Pouvoir attacher au moins un PDF à un device et le télécharger depuis linterface.