namespace SchotzIadKmTracker.Api.Services; /// /// 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. /// public interface IPrecisionDistanceService { /// /// 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 /// . /// Task ObtenirAsync(CancellationToken cancellationToken = default); /// /// Définit la précision. Lève /// si la valeur n'est pas 0, 1 ou 2 (Exigence 1.6). /// Task DefinirAsync(int valeur, CancellationToken cancellationToken = default); /// /// 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. /// decimal ArrondirDistance(decimal distanceBrute, int precision); }