namespace SchotzIadKmTracker.Api.Services;
///
/// Résultat d'un calcul de distance orchestré par .
/// Porte les coordonnées résolues des adresses de départ et d'arrivée, la distance
/// éventuellement calculée (routière via ORS ou orthodromique via Haversine), la
/// géométrie GeoJSON de l'itinéraire lorsqu'elle est disponible, et un éventuel
/// avertissement lorsque la distance n'a pas pu être calculée.
///
/// Latitude résolue du point de départ (null si non résoluble).
/// Longitude résolue du point de départ (null si non résoluble).
/// Latitude résolue du point d'arrivée (null si non résoluble).
/// Longitude résolue du point d'arrivée (null si non résoluble).
///
/// Distance en kilomètres, arrondie à 2 décimales et bornée entre 0,01 et 99 999,99 km ;
/// null lorsque la distance n'a pas pu être calculée (aucune coordonnée résoluble).
///
///
/// Géométrie GeoJSON de l'itinéraire routier (fournie par ORS) ; null en cas de
/// fallback Haversine ou d'absence de calcul.
///
///
/// Vrai lorsque la distance n'a pas pu être calculée faute de coordonnées résolubles ;
/// dans ce cas l'appelant stocke une distance nulle avec un avertissement.
///
/// Message d'avertissement associé, ou null.
public record DistanceCalculationResult(
double? DepartLatitude,
double? DepartLongitude,
double? ArriveeLatitude,
double? ArriveeLongitude,
decimal? DistanceKm,
string? GeometrieJson,
bool Avertissement,
string? Message);