Files
Geniusia_v2/.kiro/specs/workflow-graph-implementation/tasks.md
2026-03-05 00:20:25 +01:00

556 lines
21 KiB
Markdown

# Implementation Plan - RPA Vision V3
## Vue d'Ensemble
Plan d'implémentation complet pour RPA Vision V3 avec architecture en 5 couches.
**Principe** : Implémentation incrémentale avec tests à chaque étape. Focus sur le RPA 100% Vision avec workflows sémantiques.
## État Actuel
-**Phase 1** : Modèles de base (structures créées)
-**Phase 2** : Système d'embeddings (structures créées, embedders à implémenter)
-**Phase 3** : UI Detection avec VLM (COMPLÉTÉ - 22 Nov 2024)
-**Phase 3.5** : Optimisation Asynchrone (à faire)
-**Phase 4** : Construction de Workflow Graphs (à faire)
-**Phase 5-9** : Exécution, Apprentissage, Robustesse, etc.
## Résumé des Phases
- **Phase 1**: Modèles de base ✅ COMPLÉTÉ
- **Phase 2**: Système d'embedding ⏳ À COMPLÉTER (embedders réels)
- **Phase 3**: UI Detection avec VLM ✅ COMPLÉTÉ (22 Nov 2024)
- **Phase 3.5**: Optimisation Asynchrone 🚀 PROCHAINE
- **Phase 4**: Construction de Workflow Graphs ⏳ EN ATTENTE
- **Phase 5**: Exécution et Apprentissage ⏳ EN ATTENTE
- **Phase 6-9**: Robustesse, Persistence, Optimisation ⏳ EN ATTENTE
---
## 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_
- [ ]* 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**
- [ ] 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_
- [ ] 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**
- [ ] 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**
- [ ] 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**
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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**
- [ ] 5. Phase 4 : Construction et Matching de Workflow Graphs
- 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_
- [ ] 5.1 Implémenter GraphBuilder pour construction automatique
- Créer classe `GraphBuilder` dans `geniusia2/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_
- [ ] 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**
- [ ] 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**
- [ ] 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
- [ ] 5.8 Implémenter NodeMatcher pour matching en temps réel
- Créer classe `NodeMatcher` dans `geniusia2/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**
- [ ] 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.
- [ ] 7. Phase 5 : Exécution d'Actions et Apprentissage Progressif
- Exécuter actions par rôle sémantique
- Gérer états d'apprentissage
- Implémenter transitions automatiques
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 15.4_
- [ ] 7.1 Implémenter ActionExecutor pour exécution d'actions
- 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_
- [ ] 7.10 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_
- [ ] 7.11 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_
- [ ]* 7.12 É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**
- [ ]* 7.13 É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
- [ ] 8. Checkpoint - Vérifier que tous les tests passent
- Ensure all tests pass, ask the user if questions arise.
- [ ] 9. Phase 6 : Gestion des Erreurs et Robustesse
- 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_
- [ ] 9.1 Implémenter gestion d'échecs de matching
- Ajouter logging détaillé dans NodeMatcher
- Logger ScreenState non matché avec screenshot
- Calculer similarité avec tous les nodes
- Suggérer mise à jour ou création de node
- _Requirements: 14.1_
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ] 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_
- [ ]* 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_
- [ ] 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
- [ ] 11.2 Implémenter caching d'embeddings
- Ajouter cache LRU pour prototypes
- Mettre en cache derniers State Embeddings
- Invalider cache intelligemment
- [ ] 11.3 Optimiser FAISS avec index IVF
- Migrer vers index IVF pour >10k embeddings
- Optimiser périodiquement l'index
- Utiliser GPU si disponible
- [ ] 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
- [ ]* 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**
- [ ] 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