doc: document models and business rules
Co-authored-by: OpenAI/GPT-5.6-Terra <vibecoder@antoineve.me> Co-authored-by: Google/Gemini-3.5-Flash <vibecoder@antoineve.me> Co-authored-by: DeepSeek/DeepSeek-v4-Pro <vibecoder@antoineve.me> Co-authored-by: DeepSeek/DeepSeek-v4-Flash <vibecoder@antoineve.me>
This commit is contained in:
@@ -4,9 +4,22 @@ def compute_km_for_entry(
|
||||
motor_vehicle_id: str | None = None,
|
||||
) -> dict[str, int]:
|
||||
"""
|
||||
Retourne un dict {vehicle_id: km} pour un profil de trajet donné.
|
||||
La clé générique 'moteur' est remplacée par motor_vehicle_id si fourni.
|
||||
Retourne {} si pas de profil (TT, CONGE, etc.).
|
||||
Calcule les distances parcourues par véhicule pour une entrée de journal donnée.
|
||||
|
||||
Cette fonction associe un profil de trajet à ses distances configurées. Si le profil
|
||||
contient une clé générique 'moteur', celle-ci est remplacée par l'identifiant réel du
|
||||
véhicule motorisé (`motor_vehicle_id`) s'il est fourni. Si aucun véhicule motorisé n'est
|
||||
fourni, la distance associée à la clé 'moteur' est ignorée.
|
||||
|
||||
Paramètres :
|
||||
journey_profile_id (str | None) : L'identifiant du profil de trajet (ex: "domicile_travail").
|
||||
Si None, retourne un dictionnaire vide.
|
||||
journeys (dict) : La configuration des trajets (généralement issue de config.toml).
|
||||
motor_vehicle_id (str | None) : L'identifiant du véhicule motorisé utilisé (ex: "citadine").
|
||||
|
||||
Retour :
|
||||
dict[str, int] : Un dictionnaire associant chaque identifiant de véhicule (ex: "velo", "citadine")
|
||||
à la distance parcourue en kilomètres.
|
||||
"""
|
||||
if not journey_profile_id:
|
||||
return {}
|
||||
@@ -23,7 +36,18 @@ def compute_km_for_entry(
|
||||
|
||||
|
||||
def compute_co2_grams(km_by_vehicle: dict[str, int], vehicles: dict) -> float:
|
||||
"""Calcule le CO2 total en grammes pour un dict {vehicle_id: km}."""
|
||||
"""
|
||||
Calcule la quantité totale de CO2 émise en grammes pour un ensemble de distances parcourues.
|
||||
|
||||
Paramètres :
|
||||
km_by_vehicle (dict[str, int]) : Un dictionnaire associant chaque identifiant de véhicule
|
||||
à la distance parcourue en kilomètres.
|
||||
vehicles (dict) : La configuration des véhicules (généralement issue de config.toml)
|
||||
contenant le taux d'émission de CO2 par kilomètre (`co2_per_km`).
|
||||
|
||||
Retour :
|
||||
float : La quantité totale de CO2 émise en grammes.
|
||||
"""
|
||||
total = 0.0
|
||||
for vehicle_id, km in km_by_vehicle.items():
|
||||
vehicle = vehicles.get(vehicle_id, {})
|
||||
@@ -36,9 +60,22 @@ def compute_frais_reels(
|
||||
total_km_moteur: float, tranches: list[dict], electric: bool = False
|
||||
) -> float:
|
||||
"""
|
||||
Calcule les frais réels fiscaux selon le barème kilométrique.
|
||||
km_max = 0 signifie "pas de limite" (dernière tranche).
|
||||
electric=True applique la majoration de 20 % pour véhicules électriques.
|
||||
Calcule le montant des frais réels déductibles selon le barème kilométrique fiscal.
|
||||
|
||||
Le calcul s'effectue tranche par tranche en fonction du kilométrage annuel total parcouru
|
||||
avec un véhicule motorisé. Une tranche avec `km_max = 0` signifie l'absence de limite
|
||||
supérieure et est conventionnellement la dernière tranche du barème.
|
||||
|
||||
Une majoration de 20 % est appliquée sur le montant final si le véhicule est électrique.
|
||||
|
||||
Paramètres :
|
||||
total_km_moteur (float) : Le kilométrage annuel total parcouru avec le véhicule motorisé.
|
||||
tranches (list[dict]) : La liste des tranches du barème kilométrique pour la puissance fiscale
|
||||
du véhicule (ex: taux, forfait, km_max).
|
||||
electric (bool) : Indique si le véhicule est électrique (applique une majoration de 20 % si True).
|
||||
|
||||
Retour :
|
||||
float : Le montant total calculé des frais réels en euros.
|
||||
"""
|
||||
if not tranches or total_km_moteur <= 0:
|
||||
return 0.0
|
||||
|
||||
Reference in New Issue
Block a user