using SchotzIadKmTracker.Api.Models.DTOs; namespace SchotzIadKmTracker.Api.Services; /// /// Logique métier du profil utilisateur (singleton Id = 1) : lecture, sauvegarde avec /// géocodage BAN de l'Adresse_Domicile et détermination de l'état de configuration (onboarding). /// public interface IProfilService { /// /// Retourne le profil (singleton Id = 1). Crée l'enregistrement à la volée s'il est absent /// afin de garantir qu'un profil vide soit toujours disponible à la lecture. /// Task GetProfilAsync(CancellationToken cancellationToken = default); /// /// Sauvegarde le profil. Géocode l'Adresse_Domicile via la BAN : en cas de succès, stocke les /// coordonnées et positionne DomicileGeocode = true (avec mise en cache de l'adresse) ; /// en cas d'échec BAN, persiste l'adresse textuelle sans coordonnées et DomicileGeocode = false /// sans lever d'exception (Requirements 10.2, 10.7, 10.8). /// Task SaveProfilAsync(SaveProfilDto dto, CancellationToken cancellationToken = default); /// /// Détermine l'état de configuration du profil (onboarding) : /// EstConfigure = true si et seulement si un Profil existe avec un Nom ET un Prénom non vides /// (après trim) ET qu'au moins un Véhicule existe (Property 31, Requirements 16.1, 16.2). /// Task GetEtatAsync(CancellationToken cancellationToken = default); }