HTML Generator
Le module GenererRapportHTML
est responsable de la transformation des données brutes de la base de données en un rapport HTML interactif et un résumé pour l’e-mail.
Fonctionnalités
Génération via Templates : Utilise des templates Jinja2 (
ReportTemplate.html
pour le rapport complet,SimpleReportTemplate.html
pour le résumé) pour générer le HTML.Extraction de Données : Se connecte à la base de données pour extraire l’ensemble des résultats d’une exécution via une requête SQL.
- Agrégation et StatistiquesCalcule de nombreuses statistiques après l’extraction des données :
Statistiques globales (nombre d’URLs, succès des comparaisons, etc.).
Regroupement des URLs par statut (succès, différence, erreur).
Répartition par type de lieu et par code de réponse HTTP.
Traitement des Données : Nettoie et formate les données pour l’affichage, notamment en parsant les chaînes d’erreurs pour les rendre plus lisibles.
Filtre Personnalisé : Inclut un filtre Jinja2 personnalisé,
tojson
, pour encoder les données complexes (comme des objets JSON) en base64, permettant de les intégrer de manière sûre dans le HTML pour des visualisations interactives.
Usage
La fonction generer_rapport_html
est appelée par le ReportManager, qui lui fournit le chemin vers la base de données. Elle retourne le contenu HTML du résumé et le chemin vers le fichier du rapport complet sauvegardé.
Modules
Générateur de rapport HTML pour l’analyse des extractions d’horaires.
Ce module génère des rapports HTML détaillés à partir des données stockées en base de données, avec support des comparaisons d’horaires.
- src.smart_watch.reporting.GenererRapportHTML.to_json(value) str | None [source]
Convertit une valeur en chaîne JSON encodée en base64.
Cette fonction prend une valeur de n’importe quel type et la transforme en chaîne JSON, puis l’encode en base64 pour éviter les problèmes d’échappement dans les templates HTML.
- Paramètres:
value – La valeur à convertir et encoder
- Renvoie:
Chaîne JSON encodée en base64, ou None si la valeur d’entrée est None
- Type renvoyé:
- src.smart_watch.reporting.GenererRapportHTML.generer_rapport_html(db_file: str, titre_rapport: str, model_info: Dict | None = None) Tuple[str, str] [source]
Génère un rapport HTML complet à partir des données de la base SQLite.
- Paramètres:
db_file – Chemin vers le fichier de base de données SQLite.
titre_rapport – Titre du rapport.
model_info – Informations sur le modèle utilisé.
- Renvoie:
Tuple contenant (résumé_html, chemin_fichier_html)
- Lève:
FileNotFoundError – Si le fichier de base de données n’existe pas.
RuntimeError – Si les templates ne sont pas trouvés.
- src.smart_watch.reporting.GenererRapportHTML._extract_execution_data(db_manager: DatabaseManager) dict | None [source]
Extrait les données agrégées de toutes les exécutions.
- src.smart_watch.reporting.GenererRapportHTML._extract_data_from_database(db_manager: DatabaseManager) list [source]
Extrait les données depuis la base de données.
- src.smart_watch.reporting.GenererRapportHTML._process_data(donnees_urls: list) None [source]
Traite et normalise les données extraites.
- src.smart_watch.reporting.GenererRapportHTML._process_error_chain(url: dict) None [source]
Traite la chaîne d’erreurs pour l’affichage dans le rapport.
- src.smart_watch.reporting.GenererRapportHTML._create_comparison_field(url: dict) None [source]
Crée le champ de comparaison pour le template.
- src.smart_watch.reporting.GenererRapportHTML._set_default_fields(url: dict) None [source]
Définit les valeurs par défaut pour les champs requis.
- src.smart_watch.reporting.GenererRapportHTML._calculate_global_stats(donnees_urls: list) dict [source]
Calcule les statistiques globales.
- src.smart_watch.reporting.GenererRapportHTML._group_by_status(donnees_urls: list) list [source]
Groupe les URLs par statut avec 4 catégories distinctes.
- src.smart_watch.reporting.GenererRapportHTML._calculate_type_stats(donnees_urls: list) list [source]
Calcule les statistiques par type de lieu.