Spaces:
Configuration error
Configuration error
| # 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() | |
| } |