diff --git a/docs/onboarding.md b/docs/onboarding.md new file mode 100644 index 0000000..7c79511 --- /dev/null +++ b/docs/onboarding.md @@ -0,0 +1,275 @@ +# Guide d'intégration (Onboarding) pour les développeurs + +Bienvenue sur le projet **Tableau de bord pro** ! Ce guide est conçu pour t'aider à prendre en main rapidement l'application, comprendre son architecture, ses règles métier et savoir comment y apporter des modifications courantes. + +--- + +## 1. Objectif fonctionnel + +Le **Tableau de bord pro** est une application web personnelle permettant de suivre : +- **Le temps de travail quotidien** : saisie des heures travaillées, des types de journées (travail, télétravail, garde, astreinte, formation, RTT, congé, maladie, férié) et des commentaires associés. +- **Les déplacements professionnels** : calcul automatique des distances parcourues par véhicule, estimation des émissions de CO₂ et calcul des frais réels déductibles selon le barème kilométrique fiscal officiel. +- **Le solde des congés et RTT** : suivi annuel des jours posés et du solde restant par rapport aux quotas alloués. +- **Les rapports d'activité** : bilans annuels et mensuels compilant les kilomètres, le CO₂, les frais réels et la répartition des types de journées. + +--- + +## 2. Prérequis et démarrage local + +### Prérequis +- **Python 3.11+** installé sur ta machine. + +### Démarrage local +Pour lancer l'application en mode développement, exécute les commandes suivantes dans ton terminal : + +```bash +# 1. Créer l'environnement virtuel Python +python -m venv .venv + +# 2. Activer l'environnement virtuel et installer les dépendances +.venv/bin/pip install -r requirements.txt + +# 3. Lancer le serveur de développement Flask +.venv/bin/python run.py +``` + +L'application est alors accessible localement à l'adresse suivante : [http://localhost:5000](http://localhost:5000). + +--- + +## 3. Architecture de l'application + +L'application est construite avec le framework **Flask** en utilisant le *Factory Pattern* (via la fonction `create_app` dans `app/__init__.py`). + +### Structure des dossiers et fichiers clés +- `run.py` : Point d'entrée pour lancer le serveur de développement. +- `config.toml` : Fichier de configuration statique (véhicules, trajets, barèmes fiscaux). +- `app/` : Code source de l'application. + - `__init__.py` : Initialisation de Flask, configuration de la base de données, enregistrement des blueprints et des filtres Jinja2. + - `config_loader.py` : Interface de lecture du fichier `config.toml`. + - `models.py` : Définition des modèles de données SQLAlchemy (SQLite). + - `business/` : Logique métier pure, **sans dépendance à Flask** (facile à tester) : + - `time_calc.py` : Calculs de durées, de soldes d'heures et statistiques de temps. + - `travel_calc.py` : Calculs de distances, d'émissions de CO₂ et de frais réels. + - `leave_calc.py` : Calculs de congés et RTT consommés. + - `routes/` : Contrôleurs Flask gérant les requêtes HTTP et le rendu des templates : + - `dashboard.py` : Page d'accueil et vue d'ensemble. + - `entries.py` : Gestion (CRUD) des entrées de temps. + - `reports.py` : Génération des rapports annuels et mensuels. + - `templates/` : Fichiers HTML utilisant Jinja2. +- `tests/` : Tests unitaires et d'intégration (pytest). + +### Technologies Frontend +- **Tailwind CSS (via CDN)** : Utilisé pour le style. Les variables de design et les classes personnalisées (comme `.card`, `.btn-primary`, etc.) sont définies directement dans la balise `