# Plan d'Implémentation - Workflows Auto-Réparateurs **Auteur :** Dom, Alice Kiro **Date :** 15 décembre 2024 - [x] 1. Configurer la structure du module de guérison - Créer le répertoire `core/healing/` avec ses sous-répertoires - Définir les interfaces de base et les modèles de données - _Exigences: Toutes_ - [x] 2. Implémenter les modèles de données - [x] 2.1 Créer la dataclass RecoveryContext - Définir tous les champs requis avec les types appropriés - _Exigences: 1.1, 2.1, 3.1_ - [x] 2.2 Créer la dataclass RecoveryResult - Définir les champs de résultat incluant success, new_element, strategy_used - _Exigences: 1.3, 2.3, 3.4_ - [x] 2.3 Créer la dataclass RecoveryPattern - Définir les champs de stockage des motifs - _Exigences: 4.1, 4.2_ - [x] 3. Implémenter le Référentiel d'Apprentissage - [x] 3.1 Créer la classe LearningRepository - Implémenter le stockage et la récupération des motifs - Persistance basée sur JSON - _Exigences: 4.1, 4.2_ - [x] 3.2 Implémenter la logique de correspondance des motifs - Faire correspondre les motifs par workflow_id, node_id et contexte - _Exigences: 4.2_ - [x] 3.3 Implémenter le suivi des succès - Incrémenter le compteur de succès lors de la réutilisation - Décrémenter la confiance en cas d'échec - _Exigences: 4.3, 4.4_ - [x]* 3.4 Écrire un test de propriété pour le stockage des motifs - **Propriété 2: Stockage des motifs d'apprentissage** - **Valide: Exigences 4.1** - [x]* 3.5 Écrire un test de propriété pour la réutilisation des motifs - **Propriété 5: Cohérence de la réutilisation des motifs** - **Valide: Exigences 4.2, 4.3** - [x]* 3.6 Écrire un test de propriété pour l'élagage - **Propriété 10: Exactitude de l'élagage du référentiel** - **Valide: Exigences 4.4** - [x] 4. Implémenter le Calculateur de Confiance - [x] 4.1 Créer la classe ConfidenceScorer - Implémenter le calcul de similarité textuelle - Implémenter le calcul de similarité de position - _Exigences: 1.2, 2.4_ - [x] 4.2 Implémenter le scoring combiné - Combiner le texte, la position et le succès historique - _Exigences: 1.2, 2.4, 4.3_ - [x]* 4.3 Écrire un test de propriété pour la plage de confiance - **Propriété 3: Validité du score de confiance** - **Valide: Exigences 1.2, 2.4** - [x]* 4.4 Écrire un test de propriété pour la similarité des éléments - **Propriété 9: Validité du score de similarité des éléments** - **Valide: Exigences 1.2, 2.4** - [x] 5. Implémenter les Stratégies de Récupération - [x] 5.1 Créer l'interface de base RecoveryStrategy - Définir les méthodes can_handle et attempt_recovery - _Exigences: 5.1, 5.3_ - [x] 5.2 Implémenter SemanticVariantsStrategy - Générer des variantes sémantiques - Essayer les variantes par ordre de similarité - _Exigences: 1.1, 1.2, 1.3_ - [x] 5.3 Implémenter SpatialFallbackStrategy - Étendre la région de recherche de manière incrémentale - Sélectionner le meilleur candidat par confiance - _Exigences: 2.1, 2.2, 2.3, 2.4_ - [x] 5.4 Implémenter TimingAdaptationStrategy - Appliquer un backoff exponentiel - Suivre les tentatives de retry - _Exigences: 3.1, 3.2, 3.3, 3.4_ - [x] 5.5 Implémenter FormatTransformationStrategy - Transformer les formats de date, téléphone et texte - _Exigences: 1.1_ - [x] 6. Implémenter le Moteur de Guérison - [x] 6.1 Créer la classe SelfHealingEngine - Orchestrer les stratégies de récupération - Prioriser basé sur le succès historique - _Exigences: 5.1, 5.3_ - [x] 6.2 Implémenter la sélection de stratégie - Filtrer les stratégies par can_handle - Ordonner par taux de succès historique - _Exigences: 5.3_ - [x] 6.3 Implémenter la boucle de tentative de récupération - Essayer les stratégies jusqu'au succès ou épuisement - Respecter la limite max_recovery_time - _Exigences: 3.3, 5.3_ - [x] 6.4 Implémenter l'apprentissage du succès - Stocker les motifs réussis - Mettre à jour les scores de confiance - _Exigences: 1.3, 4.1, 4.3_ - [x]* 6.5 Écrire un test de propriété pour les tentatives max - **Propriété 1: Application des tentatives de récupération max** - **Valide: Exigences 3.3** - [x]* 6.6 Écrire un test de propriété pour les limites de temps - **Propriété 4: Limites de temps de récupération** - **Valide: Exigences 3.3** - [x]* 6.7 Écrire un test de propriété pour l'apprentissage - **Propriété 2: Apprentissage du succès** - **Valide: Exigences 4.1, 4.3** - [x] 7. Implémenter le Logger de Récupération - [x] 7.1 Créer la classe RecoveryLogger - Enregistrer toutes les tentatives de récupération - Suivre les métriques par stratégie - _Exigences: 6.1, 6.2, 6.3_ - [x] 7.2 Implémenter la collecte de métriques - Compter les succès/échecs par stratégie - Calculer les taux de succès - _Exigences: 6.2_ - [x] 7.3 Implémenter la génération d'insights - Générer des insights actionnables - Identifier les motifs dans les échecs - _Exigences: 6.4_ - [x] 7.4 Implémenter les alertes - Détecter les échecs répétés - Alerter sur les faibles taux de succès - _Exigences: 6.3_ - [x]* 7.5 Écrire un test de propriété pour la complétude du logging - **Propriété 8: Complétude du logging de récupération** - **Valide: Exigences 6.1, 6.3** - [x] 8. Implémenter l'Intégration d'Exécution - [x] 8.1 Créer la classe SelfHealingIntegration - Intégrer avec ExecutionLoop - Gérer les échecs d'exécution - _Exigences: Toutes_ - [x] 8.2 Implémenter les mises à jour de définition de workflow - Mettre à jour le workflow avec les corrections réussies - Persister les changements - _Exigences: 1.4, 2.3_ - [x] 8.3 Implémenter la gestion de configuration - Configuration de guérison par workflow - Activation/désactivation de stratégie - _Exigences: 5.1, 5.2, 5.3, 5.4_ - [x]* 8.4 Écrire un test de propriété pour les mises à jour de workflow - **Propriété 6: Mises à jour de définition de workflow** - **Valide: Exigences 1.4, 2.3** - [x]* 8.5 Écrire un test de propriété pour les seuils de sécurité - **Propriété 7: Application des seuils de sécurité** - **Valide: Exigences 5.2** - [x] 9. Créer la démo et la documentation - [x] 9.1 Créer demo_self_healing.py - Démontrer toutes les stratégies de guérison - Montrer le monitoring et les insights - _Exigences: Toutes_ - [x] 9.2 Créer SELF_HEALING_IMPLEMENTATION.md - Documentation technique complète - _Exigences: Documentation_ - [x] 9.3 Créer SELF_HEALING_QUICKSTART.md - Guide de démarrage rapide - _Exigences: Documentation_ - [ ] 10. Implémenter la Guérison Progressive dans Target Resolver (Fiche #10) - [x] 10.1 Ajouter un compteur de tentatives de guérison au TargetResolver - Initialiser le compteur healing_attempt dans __init__ - Créer la méthode _healing_profile() pour les niveaux de tolérance - _Exigences: 7.1, 7.2_ - [x] 10.2 Implémenter le système d'alias de rôles - Définir les constantes ROLE_ALIASES et TYPE_ALIASES - Améliorer _resolve_by_role avec l'expansion d'alias - _Exigences: 7.3_ - [x] 10.3 Améliorer la correspondance de texte floue - Faire accepter à _find_element_by_text un min_ratio configurable - Appliquer les seuils flous du profil de guérison - _Exigences: 7.2, 7.4_ - [x] 10.4 Améliorer la recherche spatiale avec des multiplicateurs de padding - Appliquer pad_mul aux calculs ROI dans _build_anchor_and_roi_and_container - Mettre à l'échelle les zones de recherche spatiale basées sur la tentative de guérison - _Exigences: 7.4_ - [x] 10.5 Ajouter des métadonnées de guérison aux détails de résolution - Inclure healing_attempt, healing_profile dans ResolvedTarget - Suivre les alias de rôles et les seuils utilisés - _Exigences: 7.5_ - [ ]* 10.6 Écrire un test de propriété pour la progression de guérison - **Propriété 1: Progression des tentatives de guérison** - **Valide: Exigences 7.2, 7.3, 7.4** - [ ]* 10.7 Écrire un test de propriété pour l'expansion d'alias de rôle - **Propriété 3: Expansion d'alias de rôle** - **Valide: Exigences 7.3** - [x] 11. Implémenter l'Intégration de Guérison dans Action Executor (Fiche #10) - [x] 11.1 Améliorer la boucle de retry avec activation de guérison - Incrémenter target_resolver.healing_attempt pendant les retries - Appliquer un backoff exponentiel entre les tentatives de guérison - _Exigences: 8.1, 8.2, 8.3_ - [x] 11.2 Implémenter la gestion du compteur de guérison - Réinitialiser healing_attempt à 0 en cas de succès - Assurer un nettoyage approprié dans les blocs finally - _Exigences: 8.4_ - [x] 11.3 Ajouter la collecte de métriques de guérison - Enregistrer les niveaux de tentative de guérison et les résultats - Enregistrer toutes les tentatives de guérison quand les retries max sont atteints - _Exigences: 8.5_ - [ ]* 11.4 Écrire un test de propriété pour la réinitialisation du compteur - **Propriété 2: Réinitialisation du compteur de guérison** - **Valide: Exigences 8.4** - [ ]* 11.5 Écrire un test de propriété pour le timing de backoff - **Propriété 6: Cohérence du timing de backoff** - **Valide: Exigences 8.2** - [x] 12. Créer des tests de guérison complets - [x] 12.1 Créer test_auto_healing_fiche10.py - Tester les scénarios de progression de guérison - Tester la résolution d'alias de rôle avec des doublons - Tester la relaxation des seuils flous - _Exigences: 7.1, 7.2, 7.3, 7.4_ - [x] 12.2 Créer des scénarios de test d'intégration - Guérison de bout en bout avec changements d'UI - Séquences de guérison multi-tentatives - Mesure de l'impact sur les performances - _Exigences: Toutes_ - [ ]* 12.3 Écrire un test de propriété pour les métriques de guérison - **Propriété 7: Enregistrement des métriques de guérison** - **Valide: Exigences 7.5** - [x] 13. Point de contrôle final - S'assurer que tous les tests passent - S'assurer que tous les tests passent, demander à l'utilisateur si des questions se posent.