123 lines
5.0 KiB
Markdown
Executable File
123 lines
5.0 KiB
Markdown
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)
|
||
|
||
1. **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).
|
||
|
||
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 d’un JSON produit par un script Bash exécuté sur la machine.
|
||
- Enregistrement d’un `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 d’accueil :
|
||
- 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 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`.
|
||
- Pouvoir attacher au moins un PDF à un device et le télécharger depuis l’interface.
|