===============
Stack technique
===============
Voici un aperçu des technologies employées.
Langage du projet
=================
`Python `__
Langage unique du projet.
Framework et bibliothèques principales
======================================
Traitement de données
---------------------
`Polars `__
Pour le chargement et la manipulation de données tabulaires.
`SQLAlchemy `__
Pour la gestion de la base de données SQLite.
`SQLite `__
Pour stocker les résultats d'extraction et les métadonnées.
Web scraping et traitement HTML
-------------------------------
`BeautifulSoup4 `__
Parseur HTML/XML pour extraire le contenu des pages web de manière robuste.
`Requests `__
Bibliothèque HTTP pour récupérer le contenu des pages web.
`html2text `__
Conversion du HTML en Markdown pour faciliter le traitement par les modèles de langage.
Intelligence artificielle
-------------------------
`OpenAI API `__
Interface standardisée pour communiquer avec les modèles de langage.
`Mistral AI `__
Proposé en tant qu'alternative aux interfaces compatibles OpenAI. Utilise la librairie `mistralai` native.
`Embeddings `__
Utilisés pour filtrer le contenu Markdown. Fonctionne avec un modèle accessible via la même API compatible OpenAI que le LLM.
Configuration et environnement
------------------------------
`python-dotenv `__
Gestion des variables d'environnement via fichiers ``.env`` pour une configuration flexible.
`Pydantic `__
`Dataclasses `__
Validation et typage des données.
Parallélisme et performance
---------------------------
`ThreadPoolExecutor `__
Traitement parallèle des URLs pour accélérer la récupération du contenu web.
Logging et monitoring
---------------------
`Logging standard Python `__
Système de journalisation centralisé avec rotation automatique des fichiers.
Gestion d'erreurs centralisée
Capture et traitement uniforme des exceptions avec contexte détaillé.
`CodeCarbon `__
Mesure les émissions de CO2 des appels aux modèles de langage pour un suivi de l'impact environnemental.
Communication
-------------
`SMTP (smtplib) `__
Envoi automatique des rapports par email avec support SSL/TLS.
`Jinja2 `__
Moteur de templates pour la génération de rapports HTML personnalisés.
Déploiement
===========
`Docker `__
Conteneurisation pour un déploiement simplifié et reproductible.
`GitHub Actions `__
CI/CD pour le déploiement Docker et de la documentation.
`Sphinx `__
`Read the Docs Theme `__
Génération automatique de documentation technique à partir du code.
Formats de données
==================
`CSV `__
Format d'entrée pour les listes d'établissements et données de référence.
`JSON `__
Format intermédiaire pour les horaires extraits par les LLMs.
`OSM (OpenStreetMap) `__
Format de sortie standardisé pour les horaires d'ouverture.
`HTML `__
Format de rapport final avec visualisations interactives.