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.

identical

indique si les horaires comparés sont identiques.

Type:

bool

differences

description textuelle des différences trouvées.

Type:

str

details

détails supplémentaires sur les différences.

Type:

Dict[str, Any]

identical: bool
differences: str
details: Dict[str, Any]
__init__(identical: bool, differences: str, details: Dict[str, Any]) None
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.

Paramètres:

slot (Dict[str, Any]) – dictionnaire du créneau horaire.

Renvoie:

dictionnaire du créneau horaire normalisé.

Type renvoyé:

Dict[str, Any]

static normalize_day_schedule(day_data: Any) Dict[str, Any][source]

Normalise les données d’un jour d’ouverture et trie les créneaux.

Paramètres:

day_data (Dict[str, Any]) – dictionnaire des informations du jour.

Renvoie:

dictionnaire normalisé avec les clés « ouvert » et « creneaux ».

Type renvoyé:

Dict[str, Any]

static normalize_special_schedules(schedules: Dict[str, Any]) Dict[str, Any][source]

Normalise un dictionnaire d’horaires spéciaux.

Paramètres:

schedules (Dict[str, Any]) – dictionnaire des horaires spéciaux.

Renvoie:

dictionnaire des horaires spéciaux normalisés.

Type renvoyé:

Dict[str, Any]

class src.smart_watch.core.ComparateurHoraires.HorairesComparator[source]

Bases : object

Comparateur principal d’horaires d’ouverture.

__init__() None[source]

Initialise le comparateur d’horaires.

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:
  • schedule1 (Dict[str, Any]) – horaires d’ouverture du premier établissement.

  • schedule2 (Dict[str, Any]) – horaires d’ouverture du second établissement.

Renvoie:

résultat de la comparaison.

Type renvoyé:

ComparisonResult

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.

Paramètres:

horaires (Dict[str, Any]) – dictionnaire contenant les périodes et horaires.

Renvoie:

True si l’établissement est considéré comme fermé, False sinon.

Type renvoyé:

bool

_compare_period(period1: Dict[str, Any], period2: Dict[str, Any], period_name: str) str[source]

Compare deux périodes horaires.

Paramètres:
  • period1 (Dict[str, Any]) – première période à comparer.

  • period2 (Dict[str, Any]) – deuxième période à comparer.

  • period_name (str) – nom de la période (“jours_feries”, etc.).

Renvoie:

description textuelle des différences.

Type renvoyé:

str

_compare_weekly_period(period1: Dict[str, Any], period2: Dict[str, Any]) str[source]

Compare deux périodes hebdomadaires.

Paramètres:
  • period1 (Dict[str, Any]) – première période hebdomadaire.

  • period2 (Dict[str, Any]) – deuxième période hebdomadaire.

Renvoie:

description textuelle des différences.

Type renvoyé:

str

_compare_day_schedule(day1: Any, day2: Any, day_name: str) str[source]

Compare les horaires d’un jour donné.

Paramètres:
  • day1 (Dict[str, Any]) – horaires du premier jour.

  • day2 (Dict[str, Any]) – horaires du second jour.

  • day_name (str) – nom du jour.

Renvoie:

description textuelle des différences.

Type renvoyé:

str

_compare_time_slots(slots1: List[Dict[str, Any]], slots2: List[Dict[str, Any]]) str[source]

Compare deux listes de créneaux horaires.

Paramètres:
  • slots1 (List[Dict[str, Any]]) – première liste de créneaux.

  • slots2 (List[Dict[str, Any]]) – seconde liste de créneaux.

Renvoie:

description textuelle des créneaux ajoutés et supprimés.

Type renvoyé:

str

_slot_to_string(slot: Dict[str, Any]) str[source]

Convertit un créneau horaire en chaîne de caractères.

Paramètres:

slot (Dict[str, Any]) – dictionnaire du créneau horaire.

Renvoie:

Représentation textuelle du créneau.

Type renvoyé:

str

_compare_special_schedules(schedules1: Dict[str, Any], schedules2: Dict[str, Any]) str[source]

Compare deux dictionnaires d’horaires spécifiques.

Paramètres:
  • schedules1 (Dict[str, Any]) – premier dictionnaire d’horaires.

  • schedules2 (Dict[str, Any]) – second dictionnaire d’horaires.

Renvoie:

description textuelle des différences.

Type renvoyé:

str

_compare_special_period(period1: Dict[str, Any], period2: Dict[str, Any]) str[source]

Compare les horaires spécifiques de deux périodes.

Paramètres:
  • period1 (Dict[str, Any]) – première période.

  • period2 (Dict[str, Any]) – seconde période.

Renvoie:

description textuelle des différences.

Type renvoyé:

str