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>
223 lines
10 KiB
Markdown
223 lines
10 KiB
Markdown
# 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. |