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 - 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
- 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
- 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
- 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
- 1.1 Ajouter execute_workflow_step() à WorkflowPipeline
-
2. Unifier la gestion d'erreurs avec ErrorHandler
- 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
- 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
- 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
- 2.1 Créer les stratégies de récupération
-
3. Corriger les imports circulaires
- 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
- 3.2 Créer des interfaces abstraites
- ITargetResolver, IActionExecutor, IErrorHandler
- Découpler les composants avec des interfaces
- Exigences: 3.3, 8.1
- 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
- 3.1 Refactorer core/models/init.py
-
4. Standardiser les contrats de données
- 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
- 4.2 Standardiser les timestamps avec datetime
- Remplacer tous les strings par datetime objects
- Créer DataConverter.ensure_datetime()
- Exigences: 4.2, 4.5
- 4.3 Standardiser les IDs en strings
- Convertir tous les IDs numériques en strings
- Validation avec Pydantic
- Exigences: 4.3, 4.4
- 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
- * 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
- 4.1 Créer BBox standardisée avec Pydantic
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
- 5.1 Implémenter le cache de l'index spatial
-
[-] 6. Améliorer la gestion mémoire
- 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
- 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
- 6.3 Implémenter la libération des ressources GPU
- Tracking des allocations GPU
- Cleanup automatique après utilisation
- Exigences: 6.3
- 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
- 6.1 Implémenter EffectiveLRUCache
-
[-] 7. Sécuriser le système
- 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
- 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
- 7.1 Forcer la configuration sécurisée en production
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
- 8.1 Implémenter l'injection de dépendances
-
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
- 9.1 Implémenter les correlation IDs
-
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
- 10.1 Migrer toutes les constantes vers core/config.py
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
- 11.1 Valider que toutes les fonctionnalités existantes fonctionnent
-
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