Files
MadJax 7e80427e09 Precision configurable des distances (arrondi superieur 0/1/2 decimales)
- Nouveau parametre global Precision_Distance (sous-menu Application de la
  Page_Parametrage, entre Compte et Vehicules), persiste via une entite
  singleton ParametresApplication, expose par GET/PUT /api/parametres-application
- Arrondi superieur (ceiling) applique a l'affichage et aux agregats : trajet
  simple, aller/retour (arrondi puis doublement), totaux jour/mois/annee,
  carte, export PDF et bareme kilometrique - jamais a la distance brute stockee
- Refonte du Montant_Previsionnel : le montant mensuel (80%) porte desormais
  sur le seul mois affiche (tranche determinee par le cumul annuel) ; nouvelle
  ligne Montant_Previsionnel_Annuel (100%, sans minoration, sur le cumul)
- Backend : PrecisionDistanceService (ArrondirDistance), integration dans
  ResumeService/TotauxService/RemboursementService/MontantRegleService,
  migration EF Core ; 7 tests de propriete (FsCheck) + tests existants, 62/62 verts
- Frontend : ParametresApplicationService (signal partage), composant de
  parametrage, fonction miroir arrondirDistance, adaptation de la liste des
  trajets, du panneau des totaux, de la carte et des montants regles
- Specs : nouvelle spec precision-distances-km (requirements/design/tasks) ;
  mise a jour de requirements.md, design.md et design-requirements.md de
  schotziad-km-tracker (Requirement 22, renvois croises, Montant_Previsionnel)
- Suppression du fichier chromium .deb suivi par erreur dans le depot
2026-09-25 12:02:52 +02:00

30 lines
1.3 KiB
C#
Raw Permalink 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>
/// Lecture/écriture de la configuration globale Precision_Distance, et fonction utilitaire
/// pure d'arrondi supérieur (ceiling) réutilisée par tous les points de calcul de distance.
/// </summary>
public interface IPrecisionDistanceService
{
/// <summary>
/// Retourne la précision courante (0, 1 ou 2). Crée la ligne singleton avec la valeur
/// par défaut (2) si elle est absente (Exigence 1.2), sur le même modèle que
/// <see cref="IProfilService"/>.
/// </summary>
Task<int> ObtenirAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Définit la précision. Lève <see cref="Exceptions.PrecisionDistanceInvalideException"/>
/// si la valeur n'est pas 0, 1 ou 2 (Exigence 1.6).
/// </summary>
Task<int> DefinirAsync(int valeur, CancellationToken cancellationToken = default);
/// <summary>
/// Arrondit une distance brute (km) au supérieur (ceiling) à la précision indiquée.
/// Fonction pure, sans effet de bord, sans accès base — utilisable partout où une
/// distance doit être affichée ou agrégée (Exigences 3.2–3.5, 4.2).
/// Formule : Ceiling(distanceBrute × 10^precision) / 10^precision.
/// </summary>
decimal ArrondirDistance(decimal distanceBrute, int precision);
}