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é:

str

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:
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.

src.smart_watch.reporting.GenererRapportHTML._calculate_http_stats(donnees_urls: list) list[source]

Calcule les statistiques par code HTTP.

src.smart_watch.reporting.GenererRapportHTML._save_report(html_content: str) str[source]

Sauvegarde le rapport HTML et retourne le nom du fichier.