namespace TrajetKmTracker.Api.Services; /// /// Génération des Export_PDF (QuestPDF). Compose les services métier existants /// (résumé, profil, véhicule, barème, montants réglés) pour produire les documents. /// La génération est enveloppée dans un délai de 15 secondes ; en cas de dépassement /// ou d'erreur de rendu, une est levée /// (Exigence 7.5) — le controller la mappe vers 503 Service Unavailable. /// public interface IPdfService { /// /// Génère le rapport PDF mensuel d'un (année, mois) pour le véhicule indiqué (Exigences 7.1, /// 7.4, 7.6, 7.8, 7.10, 7.11). L'en-tête contient l'identité de l'utilisateur, le véhicule /// (plaque, puissance fiscale, coefficient et base de la tranche annuelle applicable), la /// période, l'adresse de départ du profil, le total kilométrique du mois, le total kilométrique /// annuel cumulé, le TOTAL IK du mois (km du mois × coefficient de la tranche annuelle) et le /// Montant_Regle du mois. Le corps liste les trajets (date, motif/commentaire, départ → arrivée, km). /// Le nom de fichier suggéré est trajets_MM_AAAA.pdf. /// /// /// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5). /// Task GenererRapportMensuelAsync( int annee, int mois, int vehiculeId, CancellationToken cancellationToken = default); /// /// Génère la synthèse annuelle de régularisation d'une pour le véhicule /// indiqué (Exigences 7.2, 7.4, 7.6, 7.7, 7.8, 7.12). La page de synthèse contient le nom et le /// prénom de l'utilisateur, l'année, l'adresse de domicile, le barème applicable de l'année (les /// trois tranches coefficient/base par puissance fiscale du véhicule), le véhicule et sa puissance /// fiscale, la tranche annuelle applicable ; puis pour chacun des douze mois : les kilomètres /// parcourus, le Montant_Regle (frais payé) et le Frais_Reel_Mensuel (frais réel). Les totaux /// (km annuel, total réglé, Montant_Reel, Regularisation) et la « formule réelle » sont indiqués. /// Le nom de fichier suggéré est trajets_AAAA.pdf. /// /// /// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5). /// Task GenererRapportAnnuelAsync( int annee, int vehiculeId, CancellationToken cancellationToken = default); /// /// Détermine les véhicules ayant des Trajets pour l' et génère un rapport /// annuel PDF distinct par véhicule (Exigence 7.9). Retourne un PDF par véhicule ayant des données, /// trié par identifiant de véhicule. Retourne une liste vide si aucun trajet n'existe pour l'année. /// /// /// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5). /// Task> GenererRapportsAnnuelsParVehiculeAsync( int annee, CancellationToken cancellationToken = default); /// /// Détermine les véhicules ayant des Trajets pour le couple (, /// ) et génère un rapport mensuel PDF distinct par véhicule (Exigence 7.9). /// Retourne un PDF par véhicule ayant des données, trié par identifiant de véhicule. Retourne une /// liste vide si aucun trajet n'existe pour la période. /// /// /// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5). /// Task> GenererRapportsMensuelsParVehiculeAsync( int annee, int mois, CancellationToken cancellationToken = default); }