# core/error_tree.py """ ErrorTree (Harbor) – Enregistrement et suivi des erreurs. """ import json, logging, time, uuid from pathlib import Path logger = logging.getLogger("vortex.harbor") class ErrorTree: def __init__(self, storage_path: str = "/data/error_tree.json"): self.storage_path = Path(storage_path) self.errors = [] self._load() def _load(self): if self.storage_path.exists(): with open(self.storage_path) as f: self.errors = json.load(f) logger.info(f"[Harbor] Chargé {len(self.errors)} erreurs") def _save(self): self.storage_path.parent.mkdir(parents=True, exist_ok=True) with open(self.storage_path, "w") as f: json.dump(self.errors, f, indent=2) def add_error(self, error_msg: str, code_snippet: str = "", status: str = "open"): """Enregistre une nouvelle erreur.""" error_entry = { "id": str(uuid.uuid4())[:8], "timestamp": time.time(), "error": error_msg, "code": code_snippet[:200], "status": status } self.errors.append(error_entry) self._save() logger.info(f"[Harbor] Erreur enregistrée : {error_entry['id']} — {error_msg[:100]}") def count_resolved(self) -> int: """Retourne le nombre d'erreurs avec le statut 'resolved'.""" return len([e for e in self.errors if e.get("status") == "resolved"]) def stats(self): return { "total_errors": len(self.errors), "resolved": self.count_resolved() }