""" Modèles partagés pour le système d'auto-healing - Fiche #22 Modèles de données partagés entre CircuitBreaker et AutoHealManager pour éviter les imports circulaires. Auteur: Dom, Alice Kiro - 23 décembre 2024 """ from dataclasses import dataclass from datetime import datetime from typing import Dict, Any @dataclass class SimpleFailureEvent: """Événement d'échec simple pour le CircuitBreaker""" timestamp: datetime workflow_id: str step_id: str failure_type: str def to_dict(self) -> Dict[str, Any]: """Convertir en dictionnaire""" return { 'timestamp': self.timestamp.isoformat(), 'workflow_id': self.workflow_id, 'step_id': self.step_id, 'failure_type': self.failure_type } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'SimpleFailureEvent': """Créer SimpleFailureEvent depuis un dictionnaire""" return cls( timestamp=datetime.fromisoformat(data['timestamp']), workflow_id=data['workflow_id'], step_id=data['step_id'], failure_type=data['failure_type'] )