Files
rpa_vision_v3/docs/specs/tasks.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

697 lines
27 KiB
Markdown

ok # Implementation Plan - Workflow Graph Implementation
## Vue d'Ensemble
Ce plan d'implémentation transforme le design en tâches concrètes et progressives. Chaque tâche construit sur les précédentes pour implémenter l'architecture complète en 5 couches du système RPA Vision V2.
**Principe** : Implémentation incrémentale avec tests à chaque étape. Focus sur le RPA 100% Vision avec workflows sémantiques.
## Tasks
- [ ] 1. Phase 1 : Fondations - Structures de Données
- Créer les classes de base pour toutes les couches
- Implémenter sérialisation/désérialisation JSON
- _Requirements: 1.4, 1.5, 2.6, 7.6, 12.1, 12.4, 12.5_
- [ ] 1.1 Créer modèle RawSession avec sérialisation JSON
- Implémenter classe `RawSession` dans `geniusia2/core/models/raw_session.py`
- Implémenter classes `Event` et `Screenshot`
- Implémenter méthodes `to_json()` et `from_json()`
- Valider schéma "rawsession_v1"
- _Requirements: 1.4, 1.5_
- [ ]* 1.2 Écrire tests unitaires pour RawSession
- Tester sérialisation/désérialisation
- Tester ajout d'événements et screenshots
- Tester validation de schéma
- **Property 1: RawSession Serialization Round Trip**
- **Validates: Requirements 1.4, 1.5**
- [ ] 1.3 Créer modèle ScreenState avec 4 niveaux
- Implémenter classe `ScreenState` dans `geniusia2/core/models/screen_state.py`
- Implémenter classes `RawLevel`, `PerceptionLevel`, `ContextLevel`
- Implémenter méthodes `to_json()` et `from_json()`
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6_
- [ ]* 1.4 Écrire tests unitaires pour ScreenState
- Tester création des 4 niveaux
- Tester sérialisation/désérialisation
- **Property 2: ScreenState Multi-Level Consistency**
- **Validates: Requirements 2.1, 2.2, 2.3, 2.4, 2.5**
- [ ] 1.5 Créer modèle UIElement avec embeddings duaux
- Implémenter classe `UIElement` dans `geniusia2/core/models/ui_element.py`
- Implémenter classes `UIElementEmbeddings`, `VisualFeatures`
- Implémenter méthodes `to_json()` et `from_json()`
- _Requirements: 3.7_
- [ ]* 1.6 Écrire tests unitaires pour UIElement
- Tester création avec tous les attributs
- Tester sérialisation/désérialisation
- **Property 3: UIElement Detection Confidence Bounds**
- **Validates: Requirements 3.6**
- [ ] 1.7 Créer modèle StateEmbedding
- Implémenter classe `StateEmbedding` dans `geniusia2/core/models/state_embedding.py`
- Implémenter méthode `get_vector()` pour charger .npy
- Implémenter méthode `compute_similarity()`
- _Requirements: 4.7, 4.8_
- [x]* 1.8 Écrire tests unitaires pour StateEmbedding
- Tester chargement de vecteur
- Tester calcul de similarité
- **Property 4: State Embedding Normalization**
- **Property 5: State Embedding Similarity Symmetry**
- **Property 6: State Embedding Similarity Bounds**
- **Validates: Requirements 4.6, 4.7**
- [x] 1.9 Créer modèles Workflow Graph (Node, Edge, Workflow)
- Implémenter classes dans `geniusia2/core/models/workflow_graph.py`
- Implémenter `WorkflowNode`, `WorkflowEdge`, `Workflow`
- Implémenter classes de support (ScreenTemplate, Action, etc.)
- Implémenter méthodes `to_json()` et `from_json()`
- _Requirements: 5.6, 6.7, 7.6_
- [ ]* 1.10 Écrire tests unitaires pour Workflow Graph
- Tester création de nodes et edges
- Tester sérialisation/désérialisation
- **Property 12: Workflow Graph Structural Validity**
- **Property 18: Workflow JSON Serialization Round Trip**
- **Validates: Requirements 7.2, 7.6, 12.4, 12.5**
- [ ] 2. Phase 2 : Système d'Embeddings et FAISS
- Implémenter fusion multi-modale
- Implémenter gestion FAISS
- Optimiser performances
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.8, 12.3, 12.6, 15.1, 15.2_
- [x] 2.1 Implémenter FusionEngine pour fusion pondérée
- Créer classe `FusionEngine` dans `geniusia2/core/embedding/fusion_engine.py`
- Implémenter méthode `fuse()` avec fusion pondérée
- Implémenter normalisation des vecteurs
- Configurer poids par défaut (image: 0.5, text: 0.3, title: 0.1, ui: 0.1)
- _Requirements: 4.5, 4.6_
- [ ]* 2.2 Écrire tests unitaires pour FusionEngine
- Tester fusion pondérée
- Tester normalisation
- **Property 17: State Embedding Component Weights Sum**
- **Validates: Requirements 4.5**
- [x] 2.3 Implémenter FAISSManager pour indexation
- Créer classe `FAISSManager` dans `geniusia2/core/embedding/faiss_manager.py`
- Implémenter méthode `add_embedding()`
- Implémenter méthode `search_similar()`
- Implémenter sauvegarde/chargement d'index
- Gérer metadata_store pour mappings
- _Requirements: 4.8, 12.3, 12.6_
- [ ]* 2.4 Écrire tests unitaires pour FAISSManager
- Tester ajout d'embeddings
- Tester recherche de similarité
- Tester sauvegarde/chargement
- **Property 11: FAISS Index Consistency**
- **Validates: Requirements 4.8, 12.3, 12.6**
- [x] 2.5 Implémenter calculs de similarité
- Créer module `geniusia2/core/embedding/similarity.py`
- Implémenter similarité cosinus
- Implémenter distance euclidienne
- Implémenter normalisation L2
- _Requirements: 4.7_
- [ ]* 2.6 Écrire tests de performance pour embeddings
- Benchmarker temps de fusion (cible: <100ms)
- Benchmarker temps de recherche FAISS (cible: <50ms)
- **Property 19: Performance Constraint - State Embedding**
- **Validates: Requirements 15.1, 15.2**
- [x] 2.7 Implémenter StateEmbeddingBuilder
- Créer classe pour construire State Embeddings complets
- Intégrer FusionEngine
- Calculer embeddings pour image, texte, titre, UI
- Sauvegarder vecteurs en .npy
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6_
- [ ]* 2.8 Écrire tests d'intégration pour StateEmbeddingBuilder
- Tester construction complète depuis ScreenState
- Tester sauvegarde de vecteurs
- Vérifier normalisation finale
- [ ] 3. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [ ] 4. Phase 3 : Détection UI Sémantique
- Intégrer VLM pour détection
- Classifier types et rôles
- Générer embeddings duaux
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 15.3_
- [x] 4.1 Créer UIDetector avec intégration VLM
- Créer classe `UIDetector` dans `geniusia2/core/detection/ui_detector.py`
- Intégrer client VLM (Qwen 2.5-VL via Ollama)
- Implémenter détection de régions d'intérêt
- _Requirements: 3.1_
- [x] 4.2 Implémenter classification de types UI
- Ajouter méthode `classify_type()` dans UIDetector
- Supporter types: button, text_input, checkbox, radio, dropdown, tab, link, icon, table_row, menu_item
- Utiliser VLM pour classification
- _Requirements: 3.2_
- [x] 4.3 Implémenter classification de rôles sémantiques
- Ajouter méthode `classify_role()` dans UIDetector
- Supporter rôles: primary_action, cancel, submit, form_input, search_field, etc.
- Utiliser contexte visuel et textuel
- _Requirements: 3.3_
- [x] 4.4 Implémenter extraction de features visuelles
- Ajouter méthode `extract_visual_features()`
- Extraire couleur dominante, forme, taille
- Détecter présence d'icônes
- _Requirements: 3.4_
- [x] 4.5 Implémenter génération d'embeddings duaux
- Intégrer OpenCLIP pour embeddings
- Générer embedding image (crop de l'élément)
- Générer embedding texte (label détecté)
- Sauvegarder embeddings en .npy
- _Requirements: 3.5_
- [x] 4.6 Implémenter calcul de confiance de détection
- Combiner confiance VLM + confiance classification
- Filtrer éléments sous seuil (0.7)
- _Requirements: 3.6_
- [ ]* 4.7 Écrire tests unitaires pour UIDetector
- Tester détection avec screenshots de test
- Tester classification de types et rôles
- Tester génération d'embeddings
- **Property 13: UIElement Role Uniqueness Per Type**
- **Validates: Requirements 3.3**
- [ ]* 4.8 Écrire tests de performance pour détection UI
- Benchmarker temps de détection (cible: <200ms)
- Tester avec screenshots de différentes tailles
- **Validates: Requirements 15.3**
- [x] 5. Phase 4 : Construction et Matching de Workflow Graphs ✅ COMPLÉTÉ (23 Nov 2024)
- Construire graphes depuis sessions
- Matcher ScreenStates contre nodes
- Détecter patterns répétés
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7_
- [x] 5.1 Implémenter GraphBuilder pour construction automatique
- Créer classe `GraphBuilder` dans `rpa_vision_v3/core/graph/graph_builder.py`
- Implémenter méthode `build_from_session()`
- Créer ScreenStates depuis RawSession
- Calculer State Embeddings pour tous les états
- _Requirements: 11.1, 11.2, 11.3_
- [x] 5.2 Implémenter détection de patterns répétés
- Ajouter méthode `_detect_patterns()` dans GraphBuilder
- Utiliser clustering sur embeddings (DBSCAN ou K-means)
- Identifier transitions récurrentes entre clusters
- Détecter séquences avec 3+ répétitions
- _Requirements: 11.4, 11.5, 11.6, 11.7_
- [ ]* 5.3 Écrire tests pour détection de patterns
- Tester avec sessions simulées
- Vérifier détection de répétitions
- **Property 16: Pattern Detection Minimum Repetitions**
- **Validates: Requirements 11.7**
- [x] 5.4 Implémenter construction de WorkflowNodes depuis patterns
- Ajouter méthode `_build_nodes()` dans GraphBuilder
- Créer ScreenTemplate depuis cluster d'états
- Calculer embedding prototype (moyenne des embeddings)
- Extraire contraintes de fenêtre et texte requis
- Identifier éléments UI requis
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_
- [ ]* 5.5 Écrire tests pour construction de nodes
- Tester création de templates
- Tester calcul de prototypes
- **Property 14: Embedding Prototype Sample Count**
- **Validates: Requirements 5.4**
- [x] 5.6 Implémenter construction de WorkflowEdges depuis transitions
- Ajouter méthode `_build_edges()` dans GraphBuilder
- Identifier actions entre états (depuis événements RawSession)
- Créer TargetSpec avec rôles sémantiques
- Définir pre-conditions et post-conditions
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6_
- [ ]* 5.7 Écrire tests pour construction d'edges
- Tester identification d'actions
- Tester création de TargetSpec
- Vérifier contraintes
- [x] 5.8 Implémenter NodeMatcher pour matching en temps réel
- Créer classe `NodeMatcher` dans `rpa_vision_v3/core/graph/node_matcher.py`
- Implémenter méthode `match()`
- Calculer State Embedding du ScreenState actuel
- Chercher dans FAISS les prototypes similaires
- Valider contraintes (fenêtre, texte, UI)
- _Requirements: 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7_
- [ ]* 5.9 Écrire tests pour NodeMatcher
- Tester matching avec différents seuils
- Tester validation de contraintes
- Tester cas où aucun node ne match
- **Property 7: WorkflowNode Matching Consistency**
- **Validates: Requirements 9.1, 9.2, 9.3, 9.4, 9.5, 9.6**
- [x] 5.10 Implémenter méthode WorkflowNode.matches()
- Ajouter logique de matching dans WorkflowNode
- Vérifier contraintes de fenêtre
- Vérifier texte requis présent
- Vérifier éléments UI requis présents
- Vérifier similarité embedding > seuil
- Retourner (match: bool, confidence: float)
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_
- [ ]* 5.11 Écrire tests d'intégration pour workflow complet
- Tester construction depuis session → matching
- Vérifier graphe construit correctement
- Vérifier matching fonctionne sur nouveaux états
- [ ] 6. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [x] 6. Phase 6 : Action Execution ✅ COMPLÉTÉ (23 Nov 2024)
- Exécuter automatiquement les workflows construits
- Résoudre targets par rôle sémantique
- Vérifier post-conditions
- _Requirements: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 15.4_
- [x] 6.1 Créer ActionExecutor pour exécution d'actions
- Créer classe `ActionExecutor` dans `rpa_vision_v3/core/execution/action_executor.py`
- Implémenter méthode `execute_edge()`
- Vérifier pre-conditions avant exécution
- Intégrer avec pyautogui pour automation
- _Requirements: 10.5_
- [x] 6.2 Créer TargetResolver pour résolution de targets
- Créer classe `TargetResolver` dans `rpa_vision_v3/core/execution/target_resolver.py`
- Implémenter méthode `resolve_target()`
- Supporter résolution by_role, by_text, by_position
- Gérer fallback strategies
- _Requirements: 10.1_
- [x] 6.3 Implémenter recherche d'éléments par rôle sémantique
- Ajouter méthode `_find_by_role()` dans TargetResolver
- Chercher UIElements par rôle dans ScreenState
- Appliquer selection_policy (first, last, by_similarity)
- Implémenter fallback par similarité visuelle
- _Requirements: 10.1_
- [x] 6.4 Implémenter exécution d'actions mouse_click
- Ajouter méthode `_execute_click()` dans ActionExecutor
- Cliquer au centre de l'UIElement trouvé
- Appliquer click_offset si configuré
- Attendre wait_after_ms
- Logger action exécutée
- _Requirements: 10.2_
- [x] 6.5 Implémenter exécution d'actions text_input
- Ajouter méthode `_execute_text_input()` dans ActionExecutor
- Taper texte dans l'UIElement trouvé
- Gérer caractères spéciaux
- Attendre wait_after_ms
- Logger action exécutée
- _Requirements: 10.3_
- [x] 6.6 Implémenter exécution d'actions compound
- Ajouter méthode `_execute_compound()` dans ActionExecutor
- Exécuter séquence d'actions
- Gérer repeat policies (all, until_success)
- Logger chaque sous-action
- _Requirements: 10.4_
- [x] 6.7 Implémenter vérification de post-conditions
- Ajouter méthode `_verify_postconditions()` dans ActionExecutor
- Attendre changement de fenêtre si requis
- Attendre nouveaux éléments UI si requis
- Vérifier transition vers node attendu
- Timeout si post-conditions non satisfaites
- Logger résultat de vérification
- _Requirements: 10.6_
- [ ]* 6.8 Écrire tests unitaires pour ActionExecutor
- Tester recherche d'éléments par rôle
- Tester exécution de chaque type d'action
- Tester vérification de post-conditions
- **Property 8: WorkflowEdge Pre-Condition Validation**
- **Property 15: Action Execution Timeout**
- **Validates: Requirements 10.5, 10.6**
- [ ]* 6.9 Écrire tests de performance pour exécution
- Benchmarker temps d'exécution (cible: <50ms)
- **Validates: Requirements 15.4**
- [x] 6.10 Créer exemple d'exécution end-to-end
- Créer script `rpa_vision_v3/examples/test_phase6_simple.py`
- Tester exécution complète d'un workflow
- Valider avec workflow réel capturé
- Logger toutes les étapes
- [ ] 7. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [x] 8. Phase 7 : Learning System ✅ COMPLÉTÉ (23 Nov 2024)
- Gérer états d'apprentissage
- Implémenter transitions automatiques
- Système de feedback
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6_
- [x] 8.1 Implémenter LearningManager pour états d'apprentissage
- Créer classe `LearningManager` dans `rpa_vision_v3/core/learning/learning_manager.py`
- Gérer dictionnaire de workflows
- Implémenter méthode `update_workflow_stats()`
- _Requirements: 8.5_
- [x] 8.2 Implémenter transitions d'états d'apprentissage
- Ajouter méthode `_check_state_transition()` dans LearningManager
- Implémenter `_can_transition_to_coaching()` (5 observations, similarité >0.90)
- Implémenter `_can_transition_to_auto_candidate()` (10 assists, succès >0.90)
- Implémenter `_can_transition_to_auto_confirmed()` (20 exécutions, succès >0.95)
- Logger toutes les transitions avec raison
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_
- [x] 8.3 Implémenter rollback automatique
- Ajouter méthode `_should_rollback()` dans LearningManager
- Détecter confiance < 0.90 en mode AUTO_CONFIRMÉ
- Rétrograder vers COACHING
- Logger le rollback
- _Requirements: 8.6_
- [x] 8.4 Implémenter FeedbackProcessor
- Créer classe `FeedbackProcessor` dans `rpa_vision_v3/core/learning/feedback_processor.py`
- Traiter feedback utilisateur (CORRECT, INCORRECT, PARTIAL, SKIP)
- Générer suggestions d'amélioration
- Calculer statistiques et accuracy
- _Requirements: 8.5_
- [ ]* 8.5 Écrire tests pour LearningManager
- Tester transitions d'états
- Tester calcul de métriques
- Tester rollback
- **Property 9: Learning State Monotonic Progression**
- **Property 10: Learning State Rollback Condition**
- **Validates: Requirements 8.1, 8.2, 8.3, 8.4, 8.6**
- [ ]* 8.6 Écrire tests d'intégration pour apprentissage complet
- Simuler 5 observations → COACHING
- Simuler 10 assists → AUTO_CANDIDATE
- Simuler 20 exécutions → AUTO_CONFIRMÉ
- Simuler baisse de confiance → rollback
- [ ] 9. Phase 8 : Training System - Apprentissage Offline
- Collecter données d'entraînement
- Entraîner modèles offline
- Valider avant production
- _Requirements: Custom (new phase)_
- [x] 9.1 Implémenter TrainingDataCollector
- Créer classe `TrainingDataCollector` dans `rpa_vision_v3/core/training/training_data_collector.py`
- Enregistrer sessions, actions, screenshots, embeddings
- Gérer corrections utilisateur
- Export en JSON structuré
- [x] 9.2 Implémenter OfflineTrainer
- Créer classe `OfflineTrainer` dans `rpa_vision_v3/core/training/offline_trainer.py`
- Entraîner prototypes de workflows
- Optimiser seuils de similarité
- Validation croisée
- Export modèle entraîné
- [x] 9.3 Implémenter ModelValidator
- Créer classe `ModelValidator` dans `rpa_vision_v3/core/training/model_validator.py`
- Valider modèle avant production
- Calculer métriques (accuracy, precision, recall, F1)
- Comparaison avec baseline
- Recommandations de déploiement
- [x] 9.4 Créer guide d'utilisation Training System
- Créer `rpa_vision_v3/TRAINING_GUIDE.md`
- Documenter workflow en 4 phases
- Exemples de code complets
- Bonnes pratiques
- Troubleshooting
- [x] 9.5 Créer tests Training System
- Créer `rpa_vision_v3/examples/test_training_system.py`
- Tester TrainingDataCollector
- Tester OfflineTrainer
- Tester ModelValidator
- Tester workflow complet
- [ ] 10. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- Créer classe `ActionExecutor` dans `geniusia2/core/graph/action_executor.py`
- Implémenter méthode `execute_edge()`
- Vérifier pre-conditions avant exécution
- _Requirements: 10.5_
- [ ] 7.2 Implémenter recherche d'éléments par rôle sémantique
- Ajouter méthode `_find_target_element()` dans ActionExecutor
- Chercher UIElements par rôle dans ScreenState
- Appliquer selection_policy (first, last, by_similarity)
- Implémenter fallback strategies
- _Requirements: 10.1_
- [ ] 7.3 Implémenter exécution d'actions mouse_click
- Ajouter méthode `_execute_click()` dans ActionExecutor
- Cliquer au centre de l'UIElement trouvé
- Appliquer click_offset si configuré
- Attendre wait_after_ms
- _Requirements: 10.2_
- [ ] 7.4 Implémenter exécution d'actions text_input
- Ajouter méthode `_execute_text_input()` dans ActionExecutor
- Taper texte dans l'UIElement trouvé
- Gérer caractères spéciaux
- _Requirements: 10.3_
- [ ] 7.5 Implémenter exécution d'actions compound
- Ajouter méthode `_execute_compound()` dans ActionExecutor
- Exécuter séquence d'actions
- Gérer repeat policies (all, until_success)
- _Requirements: 10.4_
- [ ] 7.6 Implémenter vérification de post-conditions
- Ajouter méthode `_wait_for_postconditions()` dans ActionExecutor
- Attendre changement de fenêtre si requis
- Attendre nouveaux éléments UI si requis
- Vérifier transition vers node attendu
- Timeout si post-conditions non satisfaites
- _Requirements: 10.6_
- [ ]* 7.7 Écrire tests unitaires pour ActionExecutor
- Tester recherche d'éléments par rôle
- Tester exécution de chaque type d'action
- Tester vérification de post-conditions
- **Property 8: WorkflowEdge Pre-Condition Validation**
- **Property 15: Action Execution Timeout**
- **Validates: Requirements 10.5, 10.6**
- [ ]* 7.8 Écrire tests de performance pour exécution
- Benchmarker temps d'exécution (cible: <50ms)
- **Validates: Requirements 15.4**
- [ ] 7.9 Implémenter LearningManager pour états d'apprentissage
- Créer classe `LearningManager` dans `geniusia2/core/graph/learning_manager.py`
- Gérer dictionnaire de workflows
- Implémenter méthode `update_workflow_stats()`
- _Requirements: 8.5_
- [ ] 8.2 Implémenter transitions d'états d'apprentissage
- Ajouter méthode `_check_state_transition()` dans LearningManager
- Implémenter `_can_transition_to_coaching()` (5 observations, similarité >0.90)
- Implémenter `_can_transition_to_auto_candidate()` (10 assists, succès >0.90)
- Implémenter `_can_transition_to_auto_confirmed()` (20 exécutions, succès >0.95)
- Logger toutes les transitions avec raison
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_
- [ ] 8.3 Implémenter rollback automatique
- Ajouter méthode `_should_rollback()` dans LearningManager
- Détecter confiance < 0.90 en mode AUTO_CONFIRMÉ
- Rétrograder vers COACHING
- Logger le rollback
- _Requirements: 8.6_
- [ ]* 8.4 Écrire tests pour LearningManager
- Tester transitions d'états
- Tester calcul de métriques
- Tester rollback
- **Property 9: Learning State Monotonic Progression**
- **Property 10: Learning State Rollback Condition**
- **Validates: Requirements 8.1, 8.2, 8.3, 8.4, 8.6**
- [ ]* 8.5 Écrire tests d'intégration pour apprentissage complet
- Simuler 5 observations → COACHING
- Simuler 10 assists → AUTO_CANDIDATE
- Simuler 20 exécutions → AUTO_CONFIRMÉ
- Simuler baisse de confiance → rollback
- [ ] 9. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [x] 10. Phase 8 : Gestion des Erreurs et Robustesse ✅ COMPLÉTÉ (24 Nov 2024)
- Gérer échecs de matching
- Gérer échecs de détection
- Gérer violations de post-conditions
- Détecter changements d'UI
- _Requirements: 14.1, 14.2, 14.3, 14.4, 14.5, 14.6_
- [x] 9.1 Implémenter gestion d'échecs de matching ✅ COMPLÉTÉ
- Créé ErrorHandler centralisé dans core/execution/error_handler.py
- Logging détaillé avec screenshots et embeddings
- Calcul similarité avec tous les nodes candidats
- Génération suggestions automatiques (CREATE_NEW_NODE, UPDATE_NODE, ADJUST_THRESHOLD)
- Tracking des edges problématiques (>3 échecs)
- _Requirements: 14.1_
- [x] 9.2 Implémenter stratégies de fallback pour détection UI
- Ajouter fallback par visual similarity dans ActionExecutor
- Ajouter fallback par position approximative
- Logger tentatives de fallback
- _Requirements: 14.2_
- [x] 9.3 Implémenter gestion de violations de post-conditions
- Logger violations avec détails (attendu vs réel)
- Attendre timeout configuré
- Marquer exécution comme échec si timeout
- Incrémenter compteur d'échecs pour edge
- Marquer edge comme problématique si échecs répétés (>3)
- _Requirements: 14.3_
- [x] 9.4 Implémenter détection de changements d'UI
- Ajouter méthode `detect_ui_change()` dans NodeMatcher
- Comparer similarité actuelle vs prototype
- Détecter changement si similarité < 0.70
- Capturer screenshot pour analyse
- Mettre en pause exécution automatique
- Notifier utilisateur
- _Requirements: 14.4_
- [x] 9.5 Implémenter système de rollback
- Ajouter méthode `rollback()` dans ActionExecutor
- Stocker historique des 3 dernières actions
- Implémenter inverse pour chaque type d'action
- Logger tentatives de rollback
- _Requirements: 14.5_
- [ ]* 9.6 Écrire tests pour gestion d'erreurs
- Tester échec de matching
- Tester échec de détection UI
- Tester violation de post-conditions
- Tester détection de changement UI
- Tester rollback
- [x] 10. Phase 7 : Persistence et Storage
- Implémenter sauvegarde structurée
- Implémenter chargement avec validation
- Organiser fichiers par date et workflow
- _Requirements: 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7_
- [x] 10.1 Implémenter StorageManager pour gestion de fichiers
- Créer classe `StorageManager` dans `geniusia2/core/persistence/storage_manager.py`
- Implémenter méthode `save_raw_session()`
- Implémenter méthode `save_screen_state()`
- Implémenter méthode `save_workflow()`
- Organiser par date (YYYY-MM-DD)
- _Requirements: 12.1, 12.2, 12.4, 12.7_
- [x] 10.2 Implémenter sauvegarde d'embeddings
- Ajouter méthode `save_embedding()` dans StorageManager
- Sauvegarder vecteurs en .npy
- Ajouter à FAISS index
- Sauvegarder métadonnées
- _Requirements: 12.2, 12.3_
- [x] 10.3 Implémenter chargement avec validation
- Ajouter méthode `load_workflow()` dans StorageManager
- Valider schéma JSON
- Charger FAISS index
- Charger métadonnées
- Reconstruire objets Python
- _Requirements: 12.5, 12.6_
- [x]* 10.4 Écrire tests pour persistence
- Tester sauvegarde/chargement de tous les types
- Tester organisation de fichiers
- Tester validation de schémas
- [-] 11. Phase 8 : Optimisation et Performance
- Optimiser embeddings (batching, caching)
- Optimiser FAISS (IVF index)
- Optimiser détection UI (ROI)
- Mesurer et valider performances
- _Requirements: 15.1, 15.2, 15.3, 15.4, 15.5_
- [x] 11.1 Implémenter batch processing pour embeddings
- Ajouter méthode `compute_embeddings_batch()` dans FusionEngine
- Traiter multiples images en parallèle
- Optimiser utilisation GPU si disponible
- [x] 11.2 Implémenter caching d'embeddings
- Ajouter cache LRU pour prototypes
- Mettre en cache derniers State Embeddings
- Invalider cache intelligemment
- [x] 11.3 Optimiser FAISS avec index IVF
- Migrer vers index IVF pour >10k embeddings
- Optimiser périodiquement l'index
- Utiliser GPU si disponible
- [x] 11.4 Optimiser détection UI avec ROI
- Limiter résolution des screenshots (max 1920x1080)
- Détecter régions d'intérêt avant traitement complet
- Mettre en cache résultats pour frames similaires
- [x]* 11.5 Écrire tests de performance complets
- Benchmarker toutes les opérations
- Valider contraintes de temps
- **Property 19: Performance Constraint - State Embedding**
- **Property 20: Performance Constraint - End-to-End**
- **Validates: Requirements 15.1, 15.2, 15.3, 15.4, 15.5**
- [x] 12. Checkpoint Final - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [ ] 13. Phase 9 : Tests End-to-End et Documentation
- Tests de bout en bout complets
- Documentation utilisateur
- Guide de déploiement
- [ ] 13.1 Créer tests end-to-end pour workflow complet
- Tester capture → construction → matching → exécution
- Tester apprentissage progressif complet
- Tester robustesse aux changements UI
- Tester multi-workflows
- [ ]* 13.2 Écrire tests de validation de qualité
- Tester qualité des embeddings
- **Property 13: UIElement Role Uniqueness Per Type**
- **Validates: Requirements 13.1, 13.2, 13.3, 13.4, 13.5**
- [ ] 13.3 Créer documentation utilisateur
- Guide de démarrage rapide
- Guide d'utilisation des 5 couches
- Exemples de workflows
- FAQ et troubleshooting
- [ ] 13.4 Créer guide de déploiement
- Instructions d'installation
- Configuration requise
- Configuration des modèles
- Optimisation de production