Files
SchotzIAD/backend/SchotzIadKmTracker.Api/Services/IPdfService.cs
T
MadJax 0e6a97ca61 Renommage : TrajetKmTracker -> SchotzIadKmTracker (backend, specs, frontend)
- Backend : projets, solution, namespaces et références
  TrajetKmTracker.Api/.Tests -> SchotzIadKmTracker.Api/.Tests
  (dossiers, .csproj, .sln, .http, namespaces C#). GUID UserSecretsId préservé.
- Specs : dossier .kiro/specs/trajet-km-tracker -> schotziad-km-tracker
  et mise à jour des références internes (chemins, tags de propriétés).
- Frontend : projet Angular trajet-km-tracker -> schotziad-km-tracker
  (package.json, angular.json, chemin dist, Dockerfile), titre applicatif
  'SchotzIAD KM Tracker'.
- Docker et scripts (backend/Dockerfile, frontend/Dockerfile, run-dev.sh) mis à jour.
- Suppression du fichier résiduel package.json.bak.

Backend (solution) et frontend (build production) compilent sans erreur.
2026-09-14 07:50:26 +02:00

66 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace SchotzIadKmTracker.Api.Services;
/// <summary>
/// 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 <see cref="Exceptions.PdfGenerationException"/> est levée
/// (Exigence 7.5) — le controller la mappe vers <c>503 Service Unavailable</c>.
/// </summary>
public interface IPdfService
{
/// <summary>
/// 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 <c>trajets_MM_AAAA.pdf</c>.
/// </summary>
/// <exception cref="Exceptions.PdfGenerationException">
/// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5).
/// </exception>
Task<PdfResult> GenererRapportMensuelAsync(
int annee, int mois, int vehiculeId, CancellationToken cancellationToken = default);
/// <summary>
/// Génère la synthèse annuelle de régularisation d'une <paramref name="annee"/> 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 <c>trajets_AAAA.pdf</c>.
/// </summary>
/// <exception cref="Exceptions.PdfGenerationException">
/// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5).
/// </exception>
Task<PdfResult> GenererRapportAnnuelAsync(
int annee, int vehiculeId, CancellationToken cancellationToken = default);
/// <summary>
/// Détermine les véhicules ayant des Trajets pour l'<paramref name="annee"/> 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.
/// </summary>
/// <exception cref="Exceptions.PdfGenerationException">
/// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5).
/// </exception>
Task<IReadOnlyList<PdfResult>> GenererRapportsAnnuelsParVehiculeAsync(
int annee, CancellationToken cancellationToken = default);
/// <summary>
/// Détermine les véhicules ayant des Trajets pour le couple (<paramref name="annee"/>,
/// <paramref name="mois"/>) 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.
/// </summary>
/// <exception cref="Exceptions.PdfGenerationException">
/// Levée en cas de dépassement du délai de 15 s ou d'échec de rendu (Exigence 7.5).
/// </exception>
Task<IReadOnlyList<PdfResult>> GenererRapportsMensuelsParVehiculeAsync(
int annee, int mois, CancellationToken cancellationToken = default);
}