#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script de test pour vérifier l'extraction JSON des rapports """ import os import sys import json import logging from agents.utils.report_utils_bis import extraire_et_traiter_json # Configuration du logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger("TestExtractionJSON") def test_extraction_json(rapport_path): """ Teste l'extraction JSON d'un rapport existant Args: rapport_path: Chemin vers le fichier JSON du rapport """ if not os.path.exists(rapport_path): logger.error(f"Le fichier {rapport_path} n'existe pas") return False try: # Charger le rapport with open(rapport_path, 'r', encoding='utf-8') as f: rapport_data = json.load(f) # Extraire le rapport complet (où se trouve le texte brut) rapport_complet = rapport_data.get("rapport_complet", "") if not rapport_complet: logger.error("Aucun rapport complet trouvé dans le fichier JSON") return False logger.info(f"Rapport chargé: {len(rapport_complet)} caractères") # Extraire le JSON avec notre nouvelle méthode rapport_traite, echanges_json, echanges_markdown = extraire_et_traiter_json(rapport_complet) # Vérifier les résultats if echanges_json is None: logger.error("Échec de l'extraction JSON") return False # Afficher le JSON extrait logger.info(f"JSON extrait avec succès: {len(json.dumps(echanges_json))} caractères") logger.info(f"Nombre d'échanges: {len(echanges_json.get('chronologie_echanges', []))}") # Afficher les échanges for i, echange in enumerate(echanges_json.get("chronologie_echanges", []), 1): logger.info(f"Échange {i}: [{echange.get('date')}] {echange.get('emetteur')} ({echange.get('type')}): {echange.get('contenu')[:50]}...") # Sauvegarder le JSON corrigé dans le rapport d'origine rapport_data["chronologie_echanges"] = echanges_json.get("chronologie_echanges", []) # Sauvegarder le rapport corrigé output_path = rapport_path.replace(".json", "_corrige.json") with open(output_path, 'w', encoding='utf-8') as f: json.dump(rapport_data, f, ensure_ascii=False, indent=2) logger.info(f"Rapport corrigé sauvegardé: {output_path}") return True except Exception as e: logger.error(f"Erreur lors du test d'extraction: {e}") import traceback traceback.print_exc() return False if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python test_extraction_json.py ") sys.exit(1) rapport_path = sys.argv[1] success = test_extraction_json(rapport_path) if success: print("\nExtraction réussie ✅") else: print("\nÉchec de l'extraction ❌")