Files
serv_benchmark/docs/01_vision_fonctionnelle.md
2025-12-14 10:40:54 +01:00

5.0 KiB
Raw Blame History

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.