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