# 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 `