5.0 KiB
Executable File
5.0 KiB
Executable File
01 – Vision fonctionnelle et objectifs
Nom de l’application
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
L’application 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 l’interface.
- Visualiser l’historique des benchmarks d’une 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)
-
Gestion des machines (devices)
- CRUD basique :
- Créer un device (ou auto-création à la réception d’un bench).
- Lire les infos d’un device.
- Modifier la description, la localisation, les tags.
- Un device représente une machine logique (hostname ou nom choisi).
- CRUD basique :
-
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_snapshotet référencées par unbenchmark.
- À chaque bench, un snapshot de l’état matériel et OS est enregistré :
-
Benchmarks
- Réception d’un JSON produit par un script Bash exécuté sur la machine.
- Enregistrement d’un
benchmarkavec :- Date/heure du run.
- Version du script client.
- Scores par catégorie :
cpu_score,memory_score,disk_score,network_score,gpu_score. global_scorecalculé selon une formule configurable (par ex. moyenne pondérée).- Détails bruts en JSON (
details_json) pour audit.
-
Liens constructeur
- Attacher à un device des liens HTTP :
- Fiche produit constructeur.
- Page support / BIOS / drivers.
- Documentation technique.
- Attacher à un device des liens HTTP :
-
Documents
- Upload de fichiers (surtout PDF) associés à un device :
- Notices / manuels.
- Factures.
- Photos / schémas.
- Stockage sur disque, références dans SQLite.
- Upload de fichiers (surtout PDF) associés à un device :
-
Dashboard Web
- Page d’accueil :
- Statistiques globales (nombre de devices, nombre total de benchmarks, date dernier bench, score moyen).
- Tableau trié par
global_scoredé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.
- Page d’accueil :
Non-objectifs (MVP)
- Pas de multi-tenant ni de gestion avancée de droits utilisateurs.
- Pas de monitoring temps réel (ce n’est pas un outil de supervision).
- Pas de support Windows/macOS dans la première version (Linux seulement).
- Pas d’agent 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 l’app via
docker-compose up -d. - Copier une commande depuis le Dashboard, l’exécuter sur une machine Linux, et voir :
- Le device apparaître (ou se mettre à jour).
- Un nouveau benchmark visible dans l’interface.
- Voir la machine triée correctement dans le dashboard par
global_score.
- Déployer l’app via
- Pouvoir attacher au moins un PDF à un device et le télécharger depuis l’interface.