diff --git a/orchestrator.py b/orchestrator.py index cf320a8..88cf852 100644 --- a/orchestrator.py +++ b/orchestrator.py @@ -98,34 +98,13 @@ class Orchestrator: def trouver_rapport(self, extraction_path: str, ticket_id: str) -> Dict[str, Optional[str]]: """ - Cherche les rapports disponibles (JSON et/ou MD) pour un ticket - - Args: - extraction_path: Chemin vers l'extraction - ticket_id: ID du ticket - - Returns: - Dictionnaire avec {"json": chemin_json, "markdown": chemin_md} + Cherche le rapport JSON. """ - # Utiliser la méthode du TicketDataLoader pour trouver les fichiers result = self.ticket_loader.trouver_ticket(extraction_path, ticket_id) - - # S'assurer que nous avons un dictionnaire avec la structure correcte - rapports: Dict[str, Optional[str]] = {"json": None, "markdown": None} if result is None else result - - # Si on a un JSON mais pas de Markdown, générer le Markdown à partir du JSON - json_path = rapports.get("json") - if json_path and not rapports.get("markdown"): - logger.info(f"Rapport JSON trouvé sans Markdown correspondant, génération du Markdown: {json_path}") - - md_path = generer_rapport_markdown(json_path, True) - if md_path: - rapports["markdown"] = md_path - logger.info(f"Markdown généré avec succès: {md_path}") - else: - logger.warning(f"Erreur lors de la génération du Markdown") - - return rapports + if not result or not result.get("json"): + logger.warning(f"Aucun fichier JSON trouvé pour le ticket {ticket_id}") + return {"json": None} + return {"json": result.get("json")} def executer(self, ticket_specifique: Optional[str] = None): """ @@ -383,58 +362,30 @@ class Orchestrator: def _preparer_donnees_ticket(self, rapports: Dict[str, Optional[str]], ticket_id: str) -> Optional[Dict]: """ - Prépare les données du ticket à partir des rapports trouvés (JSON et/ou MD) - - Args: - rapports: Dictionnaire avec les chemins des rapports JSON et MD - ticket_id: ID du ticket - - Returns: - Dictionnaire avec les données du ticket, ou None si aucun rapport n'est trouvé + Prépare les données du ticket à partir du rapport trouvé (JSON) """ ticket_data = None - # Si aucun rapport n'est trouvé - if not rapports or (not rapports.get("json") and not rapports.get("markdown")): - logger.warning(f"Aucun rapport trouvé pour le ticket {ticket_id}") - return None - - # Privilégier le format JSON (format principal) + # Charger le fichier JSON if rapports.get("json") and rapports["json"] is not None: try: ticket_data = self.ticket_loader.charger(rapports["json"]) logger.info(f"Données JSON chargées depuis: {rapports['json']}") - print(f" Rapport JSON chargé: {os.path.basename(rapports['json'])}") + print(f" Rapport JSON chargé: {os.path.basename(rapports['json'])}") + # Ajouter une métadonnée sur le format source - if ticket_data and "metadata" not in ticket_data: + if "metadata" not in ticket_data: ticket_data["metadata"] = {} - if ticket_data: - ticket_data["metadata"]["format_source"] = "json" + ticket_data["metadata"]["format_source"] = "json" except Exception as e: logger.error(f"Erreur lors du chargement du JSON: {e}") - print(f" ERREUR: Impossible de charger le fichier JSON: {e}") - - # Fallback sur le Markdown uniquement si JSON non disponible - if not ticket_data and rapports.get("markdown") and rapports["markdown"] is not None: - try: - # Utiliser le loader pour charger les données depuis le Markdown - ticket_data = self.ticket_loader.charger(rapports["markdown"]) - logger.info(f"Données Markdown chargées depuis: {rapports['markdown']} (fallback)") - print(f" Rapport Markdown chargé (fallback): {os.path.basename(rapports['markdown'])}") - # Ajouter une métadonnée sur le format source - if ticket_data and "metadata" not in ticket_data: - ticket_data["metadata"] = {} - if ticket_data: - ticket_data["metadata"]["format_source"] = "markdown" - except Exception as e: - logger.error(f"Erreur lors du chargement du Markdown: {e}") - print(f" ERREUR: Impossible de charger le fichier Markdown: {e}") - - # Assurer que l'ID du ticket est correct - if ticket_data: - ticket_data["code"] = ticket_id - - return ticket_data + print(f" ERREUR: Impossible de charger le fichier JSON: {e}") + return None + + else: + logger.warning(f"Aucun fichier JSON trouvé pour le ticket {ticket_id}") + print(f" ERREUR: Aucun fichier JSON trouvé pour le ticket {ticket_id}") + return None def _get_timestamp(self) -> str: """Retourne un timestamp au format YYYYMMDD_HHMMSS"""