Files
rpa_vision_v3/.kiro/specs/self-healing-workflows/tasks.md
Dom a7de6a488b feat: replay E2E fonctionnel — 25/25 actions, 0 retries, SomEngine via serveur
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>
2026-03-31 14:04:41 +02:00

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.