CustomJsonToOSM
Ce module convertit les horaires d’ouverture du format JSON personnalisé de SmartWatch vers la spécification opening_hours d’OpenStreetMap.
Fonctionnalités
Conversion des horaires hebdomadaires compressés (ex: Mo-Fr).
Prise en charge des périodes spéciales : vacances, jours fériés, dates spécifiques.
Analyse des dates en français et anglais.
Gestion des créneaux multiples et occurrences (ex: 1er mardi du mois).
Détection des fermetures définitives.
Usage
La classe JsonToOsmConverter
est utilisée dans :
la classe
LLMProcessor
du module llm_processor, pour convertir le JSON structuré extrait par le LLM au format OSM.
Module
- class src.smart_watch.utils.CustomJsonToOSM.ConversionResult(osm_periods: Dict[str, str])[source]
Bases :
object
Conteneur pour les résultats de conversion avec métadonnées.
- class src.smart_watch.utils.CustomJsonToOSM.TimeSlot(start: str, end: str, occurence: int | List[int] | None = None)[source]
Bases :
object
Représente un créneau horaire avec validation.
- class src.smart_watch.utils.CustomJsonToOSM.OSMDayMapper[source]
Bases :
object
Gère le mappage et la validation des noms de jours.
- DAY_MAPPING = {'dimanche': 'Su', 'jeudi': 'Th', 'lundi': 'Mo', 'mardi': 'Tu', 'mercredi': 'We', 'samedi': 'Sa', 'vendredi': 'Fr'}
- DAY_ORDER = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
- class src.smart_watch.utils.CustomJsonToOSM.DateParser[source]
Bases :
object
Gère l’analyse des dates avec prise en charge de plusieurs formats.
- MONTH_MAPPING = {'aout': 'August', 'août': 'August', 'avr': 'Apr', 'avril': 'April', 'dec': 'Dec', 'decembre': 'December', 'déc': 'Dec', 'décembre': 'December', 'fev': 'Feb', 'fevrier': 'February', 'fév': 'Feb', 'février': 'February', 'jan': 'Jan', 'janvier': 'January', 'juil': 'Jul', 'juillet': 'July', 'juin': 'June', 'mai': 'May', 'mar': 'Mar', 'mars': 'March', 'nov': 'Nov', 'novembre': 'November', 'oct': 'Oct', 'octobre': 'October', 'sep': 'Sep', 'sept': 'Sep', 'septembre': 'September'}
- class src.smart_watch.utils.CustomJsonToOSM.JsonToOsmConverter[source]
Bases :
object
Convertisseur d’horaires d’ouverture OpenStreetMap.
- _process_time_slots(slots: List[Dict]) List[TimeSlot] [source]
Traite et valide les créneaux horaires.
- _process_daily_hours(day_data: Dict) List[Dict] | None [source]
Traite les horaires pour un jour donné. Retourne une liste de dicts {occurence, slot_str}.
- _process_weekly_schedule(schedule: Dict) str [source]
Traite les données d’horaires hebdomadaires avec gestion des occurences.
- _process_special_days(special_data: Dict, period_key: str) str [source]
Traite les jours spéciaux (jours fériés, exceptions) en distinguant leur type.
- _has_valid_source_in_period(period_data: Dict) bool [source]
Vérifie si une période contient des données source valides.
- convert_to_osm(data: Dict) ConversionResult [source]
Méthode principale de conversion.
- Paramètres:
data – Données JSON en entrée
- Renvoie:
ConversionResult avec les périodes OSM
- _convert_by_periods(data: Dict) Dict[str, str] [source]
Convertit les données par périodes individuelles.
- convert_file(input_file: str | Path, output_file: Path | str | None = None) Dict[str, ConversionResult] [source]
Convertit un fichier JSON entier.
- Paramètres:
input_file – Chemin du fichier JSON en entrée
output_file – Chemin optionnel du fichier de sortie
- Renvoie:
Dictionnaire des résultats de conversion par identifiant