Comparateur d’Horaires
Le module ComparateurHoraires
effectue une comparaison de deux structures d’horaires au format JSON personnalisé.
Usage
La classe HorairesComparator
est utilisée dans ComparisonProcessor pour comparer les horaires extraits avec ceux présents en base de données.
Fonctionnalités
Normalise les données avant la comparaison (tri des créneaux, gestion des occurrences spéciales).
Compare les horaires par périodes distinctes (vacances scolaires, jours fériés).
Détecte les différences précises : changements de statut, modification de créneaux, etc.
Génère un rapport détaillé des différences constatées.
Modules
- class src.smart_watch.core.ComparateurHoraires.ComparisonResult(identical: bool, differences: str, details: Dict[str, Any])[source]
Bases :
object
Représente le résultat d’une comparaison d’horaires.
- class src.smart_watch.core.ComparateurHoraires.ScheduleNormalizer[source]
Bases :
object
Classe utilitaire pour la normalisation des horaires et des créneaux horaires.
- Cette classe propose des méthodes statiques permettant de :
normaliser un créneau horaire (début, fin, occurrence).
normaliser les horaires d’un jour (ouverture, liste des créneaux).
normaliser les horaires spéciaux (jours fériés, exceptions).
- Méthodes:
- normalize_time_slot(slot: Dict) -> Dict:
normalise un créneau horaire en structurant les champs “debut”, “fin” et “occurence”.
- normalize_day_schedule(day_data: Dict) -> Dict:
normalise les horaires d’un jour, en structurant l’ouverture et en triant les créneaux.
- normalize_special_schedules(schedules: Dict) -> Dict:
normalise les horaires spéciaux, en gérant les exceptions et les jours particuliers.
- static normalize_time_slot(slot: Dict[str, Any]) Dict[str, Any] [source]
Normalise un créneau horaire.
Assure la présence des clés “debut”, “fin” et “occurence”. Les valeurs par défaut pour “debut” et “fin” sont des chaînes vides. La clé “occurence” est triée si elle est une liste.
- class src.smart_watch.core.ComparateurHoraires.HorairesComparator[source]
Bases :
object
Comparateur principal d’horaires d’ouverture.
- compare_schedules(schedule1: Dict[str, Any], schedule2: Dict[str, Any]) ComparisonResult [source]
Compare deux horaires d’ouverture et retourne le résultat de la comparaison.
Cette méthode analyse les horaires d’ouverture de deux établissements, en tenant compte des fermetures définitives et des différences pour chaque période d’ouverture. Elle retourne un objet ComparisonResult contenant le statut d’identité, les différences détectées et des détails sur la comparaison.
- Paramètres:
- Renvoie:
résultat de la comparaison.
- Type renvoyé:
- Lève:
Exception – En cas d’erreur lors de la comparaison.
- _is_permanently_closed(horaires: Dict[str, Any]) bool [source]
Détermine si un ensemble d’horaires indique une fermeture permanente.
- _compare_period(period1: Dict[str, Any], period2: Dict[str, Any], period_name: str) str [source]
Compare deux périodes horaires.
- _compare_weekly_period(period1: Dict[str, Any], period2: Dict[str, Any]) str [source]
Compare deux périodes hebdomadaires.
- _compare_day_schedule(day1: Any, day2: Any, day_name: str) str [source]
Compare les horaires d’un jour donné.
- _compare_time_slots(slots1: List[Dict[str, Any]], slots2: List[Dict[str, Any]]) str [source]
Compare deux listes de créneaux horaires.
- _slot_to_string(slot: Dict[str, Any]) str [source]
Convertit un créneau horaire en chaîne de caractères.
- _compare_special_schedules(schedules1: Dict[str, Any], schedules2: Dict[str, Any]) str [source]
Compare deux dictionnaires d’horaires spécifiques.