# 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**