Validé sur PC Windows (DESKTOP-58D5CAC, 2560x1600) : - 8 clics résolus visuellement (1 anchor_template, 1 som_text_match, 6 som_vlm) - Score moyen 0.75, temps moyen 1.6s - Texte tapé correctement (bonjour, test word, date, email) - 0 retries, 2 actions non vérifiées (OK) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
10 KiB
10 KiB
Plan d'Implémentation - Workflows Auto-Réparateurs
Auteur : Dom, Alice Kiro
Date : 15 décembre 2024
-
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
- Créer le répertoire
-
2. Implémenter les modèles de données
- 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
- 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
- 2.3 Créer la dataclass RecoveryPattern
- Définir les champs de stockage des motifs
- Exigences: 4.1, 4.2
- 2.1 Créer la dataclass RecoveryContext
-
3. Implémenter le Référentiel d'Apprentissage
- 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
- 3.2 Implémenter la logique de correspondance des motifs
- Faire correspondre les motifs par workflow_id, node_id et contexte
- Exigences: 4.2
- 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
- * 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
- * 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
- * 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
- 3.1 Créer la classe LearningRepository
-
4. Implémenter le Calculateur de Confiance
- 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
- 4.2 Implémenter le scoring combiné
- Combiner le texte, la position et le succès historique
- Exigences: 1.2, 2.4, 4.3
- * 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
- * 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
- 4.1 Créer la classe ConfidenceScorer
-
5. Implémenter les Stratégies de Récupération
- 5.1 Créer l'interface de base RecoveryStrategy
- Définir les méthodes can_handle et attempt_recovery
- Exigences: 5.1, 5.3
- 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
- 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
- 5.4 Implémenter TimingAdaptationStrategy
- Appliquer un backoff exponentiel
- Suivre les tentatives de retry
- Exigences: 3.1, 3.2, 3.3, 3.4
- 5.5 Implémenter FormatTransformationStrategy
- Transformer les formats de date, téléphone et texte
- Exigences: 1.1
- 5.1 Créer l'interface de base RecoveryStrategy
-
6. Implémenter le Moteur de Guérison
- 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
- 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
- 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
- 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
- * 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
- * 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
- * 6.7 Écrire un test de propriété pour l'apprentissage
- Propriété 2: Apprentissage du succès
- Valide: Exigences 4.1, 4.3
- 6.1 Créer la classe SelfHealingEngine
-
7. Implémenter le Logger de Récupération
- 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
- 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
- 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
- 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
- * 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
- 7.1 Créer la classe RecoveryLogger
-
8. Implémenter l'Intégration d'Exécution
- 8.1 Créer la classe SelfHealingIntegration
- Intégrer avec ExecutionLoop
- Gérer les échecs d'exécution
- Exigences: Toutes
- 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
- 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
- * 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
- * 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
- 8.1 Créer la classe SelfHealingIntegration
-
9. Créer la démo et la documentation
- 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
- 9.2 Créer SELF_HEALING_IMPLEMENTATION.md
- Documentation technique complète
- Exigences: Documentation
- 9.3 Créer SELF_HEALING_QUICKSTART.md
- Guide de démarrage rapide
- Exigences: Documentation
- 9.1 Créer demo_self_healing.py
-
10. Implémenter la Guérison Progressive dans Target Resolver (Fiche #10)
- 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
- 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
- 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
- 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
- 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
- 10.1 Ajouter un compteur de tentatives de guérison au TargetResolver
-
11. Implémenter l'Intégration de Guérison dans Action Executor (Fiche #10)
- 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
- 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
- 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
- 11.1 Améliorer la boucle de retry avec activation de guérison
-
12. Créer des tests de guérison complets
- 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
- 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
- 12.1 Créer test_auto_healing_fiche10.py
-
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.