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>
237 lines
10 KiB
Markdown
237 lines
10 KiB
Markdown
# 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** |