
# 10 – Roadmap & évolutions futures pour Linux BenchTools

Objectif : lister les évolutions possibles de l’application, organisées par phases, avec une vision
à court, moyen et long terme. Ce fichier sert de base pour prioriser les développements.

---

# 1. Vision globale

Linux BenchTools doit évoluer depuis un simple serveur de benchmarks centralisés vers :

- Un **inventaire matériel dynamique** de ton parc.
- Un **historique de performance** exploitable (avant/après upgrade, changement de config, etc.).
- Un **outil d’aide à la décision** (quelle machine est la plus adaptée pour tel usage).
- Un **hub de diagnostics** (détection de régression de perf, disques fragiles, réseau bridé…).

---

# 2. Phase 1 – MVP (déjà spécifiée dans les fichiers 01 → 09)

Fonctionnalités :

- Réception de benchmarks via `bench.sh`
- Stockage dans SQLite
- Dashboard avec classement des machines
- Détail device + historique de benchmarks
- Liens constructeur
- Upload de documents (PDF, images)
- Script d’installation (Docker / compose)

Objectif :  
Avoir une base utilisable **en production perso** sur ton infra maison.

---

# 3. Phase 2 – Améliorations UX & stabilité

## 3.1. Frontend

- Tri avancé sur les colonnes (score, date dernier bench, hostname).
- Filtre par tags, type de machine (bare-metal / VM / SBC).
- Ajout d’icônes simples (type machine, OS, réseau 1G/2.5G/10G…).
- Page “Benchmarks” globale (tous les benchmarks, filtrables par device).

## 3.2. Backend

- Meilleure gestion des erreurs côté API (messages clairs, codes cohérents).
- Pagination plus fine (page_size configurable).
- Logging structuré (JSON logs optionnels).
- Limitation taille payload JSON (protection simple).

## 3.3. Script client

- Mode “dry-run” (afficher JSON sans l’envoyer).
- Mode “debug” (log détaillé des commandes).

---

# 4. Phase 3 – Historisation avancée & graphes

## 4.1. Graphes dans la WebUI

- Sur page device :
  - Graphique du **global_score** sur le temps.
  - Graphiques séparés :
    - CPU score vs temps
    - Mémoire score vs temps
    - Disque score vs temps
    - Réseau score vs temps
- Lib JS possible :
  - Chart.js ou ECharts (simple, self-hosté).

## 4.2. Comparaison de benchmarks

- Comparer 2 benchmarks d’un même device :
  - Afficher les différences (avant/après ajout RAM, changement SSD…).
- Comparer 2 devices :
  - Table des scores côte-à-côte.
  - Exemple d’usage :
    - “Quelle machine est la meilleure candidate pour un nouveau service Docker ?”

---

# 5. Phase 4 – Détection de régressions & alertes

## 5.1. Détection automatique

- Calcul d’un “baseline” par device :
  - par exemple moyenne des N meilleurs scores.
- Lors d’un nouveau bench :
  - si le score est inférieur de X% à la baseline → marquer en **WARNING**.
- Indicateurs :
  - CPU plus lent
  - Disque sensiblement plus lent (fragilité SSD/HDD)
  - Réseau plus lent (câble / switch / config ?)

## 5.2. Alertes

- Marquage visuel dans la WebUI (icône warning).
- Export JSON ou webhook Webhook simple :
  - POST vers un endpoint externe (ex: Home Assistant, Node-RED, etc.)
- Intégration possible :
  - Appel HTTP vers Home Assistant pour créer une notification.

---

# 6. Phase 5 – Intégrations externes

## 6.1. Intégration Gitea / Git

- Stocker le dépôt `bench.sh` dans une forge (déjà le cas).
- Ajouter :
  - Liens vers la version exacte du script qui a généré tel bench.
- Option :
  - Webhook Gitea → déclencher bench sur un device après un changement de config.

## 6.2. Intégration Home Assistant

- Exposer certains indicateurs via une API ou MQTT :
  - Dernier score par device
  - Warn/alert sur régression
- Dashboard HA :
  - Carte des machines avec état “OK / Warning / Error”.

## 6.3. Intégration Prometheus / Grafana (option)

- Exporter métriques (nombre de devices, benchs, scores moyens) via `/metrics`.
- Visualisation dans Grafana.

---

# 7. Phase 6 – Extensions techniques

## 7.1. Support multi-OS

- Extension `bench.sh` pour :
  - Linux non-Debian (Arch, Fedora)
  - macOS (optionnel)
  - Windows (PowerShell script séparé)

## 7.2. Agents “semi-persistants”

- Mode où un service systemd sur certains serveurs :
  - exécute un bench toutes les X semaines.
  - envoie automatiquement les données au backend.

## 7.3. Export / Import

- Export complet de :
  - devices
  - benchmarks
  - hardware_snapshots
- Formats :
  - JSON
  - CSV (pour certains tableaux)
- Import depuis un ancien fichier → migration facile vers nouvelle instance.

---

# 8. Phase 7 – UX & ergonomie avancées

- Tags et “groupes” de devices (ex: “serveurs prod”, “lab”, “RPi”, “Proxmox nodes”).
- Vues filtrées :
  - Vue “serveurs”
  - Vue “VM Proxmox”
  - Vue “SBC (RPi, OPi, etc.)”
- Possibilité de nommer des “profils” :
  - ex: “Profil NVR”, “Profil VM/Proxmox”, “Profil PC Gaming”
  - et voir les devices qui matchent le mieux chaque profil en fonction de leur score.

---

# 9. Idées long terme (si tu veux pousser très loin)

- Auto-détection hardware via une petite API agent qui tourne sur les machines en continu (au-delà du script ponctuel).
- Benchmark réseau multi-nœuds :
  - topologie logical de ton réseau
  - latences et débits entre plusieurs points.
- Vue “Carte du réseau” :
  - affichage graphique des performances entre différentes machines.
- Plugins :
  - Ajouter une API plugin pour créer ses propres tests (ex: bench spécifique Docker, base de données, etc.).

---

# 10. Priorisation suggérée

1. **Stabiliser MVP** (Phase 1 + tests fichier 09)
2. UX de base + tri / filtre (Phase 2)
3. Graphes d’historique (Phase 3)
4. Détection régressions + petites alertes (Phase 4)
5. Intégrations Home Assistant / Prometheus (Phase 5)
6. Support multi-OS (Phase 6)
7. Développements avancés (Phase 7+8)

---

# 11. TODO résumé par phase

- Phase 1 :
  - Implémenter API, DB, bench.sh, WebUI minimal, Docker, install.sh
- Phase 2 :
  - Tri, filtres, ergonomie
- Phase 3 :
  - Graphes (global_score, composantes)
- Phase 4 :
  - Baselines, détection de régression, marquage visuel
- Phase 5 :
  - Webhooks / MQTT / intégration HA
- Phase 6 :
  - Scripts bench pour autres OS
- Phase 7 :
  - Vues avancées, cartes réseau, plugins

Ce document pourra servir de base à un Kanban (Gitea, Kanboard, etc.) en créant une tâche par élément de la roadmap.
