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>
This commit is contained in:
Dom
2026-03-31 14:04:41 +02:00
parent 5e0b53cfd1
commit a7de6a488b
79542 changed files with 6091757 additions and 1 deletions

View File

@@ -0,0 +1,237 @@
# Plan d'Implémentation - Corrections Critiques RPA Vision V3
**Auteur :** Dom, Alice Kiro
**Date :** 20 décembre 2024
## PRIORITÉ 1 - CRITIQUE (À faire immédiatement)
- [-] 1. Intégrer ActionExecutor dans WorkflowPipeline
- [x] 1.1 Ajouter execute_workflow_step() à WorkflowPipeline
- Implémenter la méthode d'exécution intégrée
- Connecter avec TargetResolver et ActionExecutor
- Gérer le cycle complet : match → action → exécution → résultat
- _Exigences: 1.1, 1.2, 1.4_
- [x] 1.2 Intégrer la gestion d'erreurs dans l'exécution
- Utiliser ErrorHandler pour toutes les erreurs d'exécution
- Implémenter les stratégies de retry et recovery
- _Exigences: 1.3, 2.1_
- [x] 1.3 Créer ExecutionResult avec métadonnées complètes
- Inclure correlation_id, performance_metrics, recovery_applied
- Assurer la traçabilité complète de l'exécution
- _Exigences: 1.4, 9.1_
- [ ]* 1.4 Écrire un test de propriété pour l'intégration WorkflowPipeline-ActionExecutor
- **Propriété 1: Intégration WorkflowPipeline-ActionExecutor**
- **Valide: Exigences 1.1, 1.2**
- [x] 2. Unifier la gestion d'erreurs avec ErrorHandler
- [x] 2.1 Créer les stratégies de récupération
- SpatialFallbackStrategy pour TargetNotFoundError
- SemanticVariantStrategy pour UIElementChangedError
- RetryWithBackoffStrategy pour NetworkError
- DataNormalizationStrategy pour ValidationError
- _Exigences: 2.2, 2.3_
- [x] 2.2 Implémenter ErrorHandler centralisé
- Mapper les types d'erreurs aux stratégies
- Gérer l'escalade après échec des récupérations
- Logger toutes les tentatives de récupération
- _Exigences: 2.1, 2.4, 2.5_
- [x] 2.3 Appliquer ErrorHandler dans tous les composants critiques
- TargetResolver, ActionExecutor, WorkflowPipeline
- Remplacer les try/catch isolés par des appels à ErrorHandler
- _Exigences: 2.1_
- [ ]* 2.4 Écrire un test de propriété pour la gestion d'erreurs unifiée
- **Propriété 2: Gestion d'erreurs unifiée**
- **Valide: Exigences 2.1, 2.2**
- [x] 3. Corriger les imports circulaires
- [x] 3.1 Refactorer core/models/__init__.py
- Utiliser des imports lazy avec TYPE_CHECKING
- Créer des fonctions get_* pour les imports différés
- _Exigences: 3.2, 3.4_
- [x] 3.2 Créer des interfaces abstraites
- ITargetResolver, IActionExecutor, IErrorHandler
- Découpler les composants avec des interfaces
- _Exigences: 3.3, 8.1_
- [x] 3.3 Tester l'absence d'imports circulaires
- Script de validation des imports
- Test automatisé dans la CI
- _Exigences: 3.1, 3.5_
- [ ]* 3.4 Écrire un test de propriété pour l'absence d'imports circulaires
- **Propriété 3: Absence d'imports circulaires**
- **Valide: Exigences 3.1, 3.3**
- [x] 4. Standardiser les contrats de données
- [x] 4.1 Créer BBox standardisée avec Pydantic
- Format exclusif (x, y, width, height)
- Validation automatique des coordonnées
- Méthodes de conversion from_xyxy(), to_tuple()
- _Exigences: 4.1, 4.4_
- [x] 4.2 Standardiser les timestamps avec datetime
- Remplacer tous les strings par datetime objects
- Créer DataConverter.ensure_datetime()
- _Exigences: 4.2, 4.5_
- [x] 4.3 Standardiser les IDs en strings
- Convertir tous les IDs numériques en strings
- Validation avec Pydantic
- _Exigences: 4.3, 4.4_
- [x] 4.4 Migrer tous les composants vers les nouveaux contrats
- UIElement, ScreenState, ResolvedTarget
- Assurer la compatibilité ascendante pendant la migration
- _Exigences: 4.1, 4.2, 4.3_
- [x]* 4.5 Écrire des tests de propriété pour la cohérence des contrats
- **Propriété 4: Cohérence des contrats de données BBox**
- **Propriété 5: Cohérence des timestamps**
- **Valide: Exigences 4.1, 4.2**
## PRIORITÉ 2 - IMPORTANT (Cette semaine)
- [ ] 5. Optimiser les performances
- [ ] 5.1 Implémenter le cache de l'index spatial
- Cache par signature d'écran dans TargetResolver
- Éviter la reconstruction à chaque résolution
- _Exigences: 5.1_
- [ ] 5.2 Implémenter le lazy loading des embeddings
- WeakValueDictionary pour le cache des embeddings
- Chargement à la demande depuis le disque
- _Exigences: 5.2_
- [ ] 5.3 Implémenter le cache des modèles ML
- Cache persistant des modèles chargés
- Éviter les rechargements multiples
- _Exigences: 5.3_
- [ ] 5.4 Optimiser les calculs redondants
- Cache intelligent pour les calculs de distance/alignement
- Réutilisation entre les résolutions d'ancres
- _Exigences: 5.4_
- [ ]* 5.5 Écrire un test de propriété pour la réutilisation de l'index spatial
- **Propriété 6: Réutilisation de l'index spatial**
- **Valide: Exigences 5.1**
- [-] 6. Améliorer la gestion mémoire
- [x] 6.1 Implémenter EffectiveLRUCache
- Limites de taille ET de mémoire effectives
- Éviction basée sur l'utilisation mémoire réelle
- _Exigences: 6.1_
- [x] 6.2 Créer MemoryManager pour le nettoyage automatique
- Surveillance de l'utilisation mémoire
- Nettoyage préventif à 80% du seuil
- Registry des ressources avec cleanup automatique
- _Exigences: 6.2, 6.4_
- [x] 6.3 Implémenter la libération des ressources GPU
- Tracking des allocations GPU
- Cleanup automatique après utilisation
- _Exigences: 6.3_
- [x] 6.4 Ajouter le cleanup à l'arrêt du système
- Libération propre de toutes les ressources
- Garbage collection forcé
- _Exigences: 6.5_
- [ ]* 6.5 Écrire des tests de propriété pour la gestion mémoire
- **Propriété 7: Limites effectives des caches LRU**
- **Propriété 8: Libération des ressources GPU**
- **Valide: Exigences 6.1, 6.3**
- [-] 7. Sécuriser le système
- [x] 7.1 Forcer la configuration sécurisée en production
- Validation des clés de chiffrement non-par-défaut
- Refus de démarrage avec configuration insécurisée
- _Exigences: 7.1, 7.5_
- [x] 7.2 Implémenter la validation des inputs utilisateur
- Protection contre les injections SQL/NoSQL
- Validation des chemins de fichiers
- Sanitization des données loggées
- _Exigences: 7.2, 7.3, 7.4_
- [ ]* 7.3 Écrire un test de propriété pour la validation des inputs
- **Propriété 9: Validation des inputs de sécurité**
- **Valide: Exigences 7.2**
## PRIORITÉ 3 - AMÉLIORATION (Prochaine itération)
- [ ] 8. Découpler les composants
- [ ] 8.1 Implémenter l'injection de dépendances
- Container DI simple pour les composants principaux
- Configuration des dépendances via interfaces
- _Exigences: 8.2_
- [ ] 8.2 Créer des interfaces abstraites complètes
- Toutes les interactions inter-composants via interfaces
- Faciliter le mocking pour les tests
- _Exigences: 8.1, 8.3_
- [ ]* 8.3 Écrire un test de propriété pour les interfaces abstraites
- **Propriété 10: Interfaces abstraites pour le découplage**
- **Valide: Exigences 8.1**
- [ ] 9. Améliorer l'observabilité
- [ ] 9.1 Implémenter les correlation IDs
- UUID unique pour chaque opération
- Propagation à travers tous les composants
- _Exigences: 9.1_
- [ ] 9.2 Standardiser les niveaux de logging
- Cohérence des niveaux DEBUG/INFO/WARNING/ERROR
- Structured logging avec contexte
- _Exigences: 9.2_
- [ ] 9.3 Ajouter les métriques de performance
- Collecte automatique des métriques de timing
- Métriques de succès/échec par composant
- _Exigences: 9.3_
- [ ] 9.4 Implémenter les traces d'erreur complètes
- Stack traces avec contexte d'exécution
- Chaînage des erreurs et récupérations
- _Exigences: 9.4_
- [ ]* 9.5 Écrire un test de propriété pour les correlation IDs
- **Propriété 11: Correlation IDs uniques**
- **Valide: Exigences 9.1**
- [ ] 10. Centraliser la configuration
- [ ] 10.1 Migrer toutes les constantes vers core/config.py
- Identifier et migrer les constantes hardcodées
- Grouper par domaine fonctionnel
- _Exigences: 10.1_
- [ ] 10.2 Rendre les paramètres ML configurables
- Seuils, poids, hyperparamètres externalisés
- Configuration par environnement
- _Exigences: 10.2_
- [ ] 10.3 Implémenter la validation de configuration
- Validation Pydantic de toute la configuration
- Valeurs par défaut documentées
- _Exigences: 10.3, 10.5_
- [ ] 10.4 Adapter la configuration par environnement
- Profils dev/staging/production
- Override automatique selon ENVIRONMENT
- _Exigences: 10.4_
- [ ]* 10.5 Écrire un test de propriété pour la centralisation des constantes
- **Propriété 12: Centralisation des constantes**
- **Valide: Exigences 10.1**
## VALIDATION ET INTÉGRATION
- [ ] 11. Tests de non-régression
- [ ] 11.1 Valider que toutes les fonctionnalités existantes fonctionnent
- Exécuter la suite de tests complète
- Vérifier les contrats d'API existants
- _Toutes les exigences_
- [ ] 11.2 Valider les performances
- Benchmarks avant/après les corrections
- Assurer qu'aucune dégradation n'est introduite
- _Exigences: 5.5_
- [ ] 11.3 Tests d'intégration de bout en bout
- Workflows complets avec les corrections appliquées
- Scénarios réels de production
- _Toutes les exigences_
- [ ] 12. 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.
## NOTES IMPORTANTES
### Préservation de la Qualité
- **Chaque correction doit préserver les fonctionnalités existantes**
- **Tests de non-régression obligatoires avant chaque merge**
- **Validation des performances à chaque étape**
### Ordre d'Exécution
- **Priorité 1 doit être complétée avant Priorité 2**
- **Tests de propriétés exécutés en parallèle du développement**
- **Validation continue avec les tests existants**
### Gestion des Risques
- **Backup des composants critiques avant modification**
- **Rollback plan pour chaque correction majeure**
- **Monitoring continu pendant le déploiement**