llm_ticket3/test_extraction_json.py
2025-04-11 08:45:52 +02:00

86 lines
3.0 KiB
Python
Executable File

#!/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 <chemin_rapport>")
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 ❌")