# Structure du projet Linux BenchTools ## Arborescence complète ``` linux-benchtools/ │ ├── backend/ # Backend FastAPI │ ├── app/ │ │ ├── api/ # Endpoints API │ │ │ ├── __init__.py │ │ │ ├── benchmark.py # POST /api/benchmark │ │ │ ├── devices.py # CRUD devices │ │ │ ├── docs.py # Upload/download documents │ │ │ └── links.py # CRUD liens constructeur │ │ │ │ │ ├── core/ # Configuration & sécurité │ │ │ ├── __init__.py │ │ │ ├── config.py # Variables d'environnement │ │ │ └── security.py # Authentification token │ │ │ │ │ ├── models/ # Modèles SQLAlchemy │ │ │ ├── __init__.py │ │ │ ├── device.py # Table devices │ │ │ ├── hardware_snapshot.py # Table hardware_snapshots │ │ │ ├── benchmark.py # Table benchmarks │ │ │ ├── manufacturer_link.py # Table manufacturer_links │ │ │ └── document.py # Table documents │ │ │ │ │ ├── schemas/ # Schémas Pydantic (validation) │ │ │ ├── __init__.py │ │ │ ├── benchmark.py # Schémas payload benchmark │ │ │ ├── device.py # Schémas device │ │ │ ├── hardware.py # Schémas hardware │ │ │ ├── document.py # Schémas document │ │ │ └── link.py # Schémas liens │ │ │ │ │ ├── db/ # Base de données │ │ │ ├── __init__.py │ │ │ ├── base.py # Déclaration base SQLAlchemy │ │ │ ├── session.py # Session & engine │ │ │ └── init_db.py # Initialisation tables │ │ │ │ │ ├── utils/ # Utilitaires │ │ │ ├── __init__.py │ │ │ └── scoring.py # Calcul scores │ │ │ │ │ ├── main.py # Point d'entrée FastAPI │ │ └── __init__.py │ │ │ ├── data/ # Base SQLite (gitignored) │ ├── Dockerfile # Image Docker backend │ ├── requirements.txt # Dépendances Python │ └── README.md │ ├── frontend/ # Interface web │ ├── index.html # Dashboard │ ├── devices.html # Liste devices │ ├── device_detail.html # Détail device │ ├── settings.html # Configuration │ │ │ ├── css/ │ │ ├── main.css # Styles principaux (Monokai) │ │ └── components.css # Composants réutilisables │ │ │ └── js/ │ ├── api.js # Appels API │ ├── dashboard.js # Logique Dashboard │ ├── devices.js # Logique liste devices │ ├── device_detail.js # Logique détail device │ ├── settings.js # Logique settings │ └── utils.js # Fonctions utilitaires │ ├── scripts/ # Scripts clients │ └── bench.sh # Script de benchmark client │ ├── uploads/ # Documents uploadés (gitignored) │ ├── tests/ # Tests │ └── data/ # Données de test │ ├── bench_full.json # Payload complet │ ├── bench_no_gpu.json # Sans GPU │ └── bench_short.json # Mode court │ ├── docker-compose.yml # Orchestration Docker ├── .env.example # Exemple variables d'env ├── .gitignore # Fichiers ignorés par Git ├── install.sh # Script d'installation ├── STRUCTURE.md # Ce fichier └── README.md # Documentation principale ├── 01_vision_fonctionnelle.md # Spécifications (existants) ├── 02_model_donnees.md ├── 03_api_backend.md ├── 04_bench_script_client.md ├── 05_webui_design.md ├── 06_backend_architecture.md ├── 08_installation_bootstrap.md ├── 09_tests_qualite.md └── 10_roadmap_evolutions.md ``` ## Description des composants ### Backend (Python/FastAPI) - **Port** : 8007 - **Base de données** : SQLite (`backend/data/data.db`) - **Auth** : Token Bearer simple - **Upload** : Documents stockés dans `uploads/` ### Frontend (HTML/CSS/JS) - **Port** : 8087 (via nginx) - **Style** : Monokai dark theme - **Framework** : Vanilla JS (pas de framework lourd) ### Script client (Bash) - **Nom** : `bench.sh` - **OS cibles** : Debian, Ubuntu, Proxmox - **Outils** : sysbench, fio, iperf3, dmidecode, lscpu, smartctl ### Docker - **2 services** : - `backend` : FastAPI + Uvicorn - `frontend` : nginx servant les fichiers statiques ## Flux de données ``` [Machine cliente] │ exécute bench.sh ↓ [Collecte hardware + Benchmarks] │ génère JSON ↓ [POST /api/benchmark] │ avec token Bearer ↓ [Backend FastAPI] │ valide + stocke SQLite ↓ [SQLite DB] │ devices, hardware_snapshots, benchmarks ↓ [Frontend] │ GET /api/devices, /api/benchmarks ↓ [Dashboard web] │ affiche classement + détails ``` ## Prochaines étapes 1. ✅ Arborescence créée 2. ⏳ Développement frontend 3. ⏳ Développement backend 4. ⏳ Script bench.sh 5. ⏳ Configuration Docker 6. ⏳ Script d'installation