Files
rpa_vision_v3/.kiro/specs/workflow-composition/tasks.md
Dom a7de6a488b feat: replay E2E fonctionnel — 25/25 actions, 0 retries, SomEngine via serveur
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>
2026-03-31 14:04:41 +02:00

10 KiB

Implementation Plan - Workflow Composition

  • 1. Créer les modèles de données de base

    • 1.1 Créer les dataclasses de configuration (ChainConfig, LoopConfig, ConditionalNode, etc.)
      • Fichier: core/workflow/composition_models.py
      • Inclure les méthodes to_dict() et from_dict() pour chaque classe
      • Requirements: 1.6, 6.6, 7.6, 8.6
    • * 1.2 Écrire le test property-based pour la sérialisation round-trip
      • Property 1: Round-trip de sérialisation
      • Validates: Requirements 1.6, 2.6, 6.6, 7.6, 8.6, 9.4
  • 2. Implémenter le DependencyGraph

    • 2.1 Créer la classe DependencyGraph
      • Fichier: core/workflow/dependency_graph.py
      • Méthodes: add_dependency, remove_dependency, get_dependencies, get_dependents
      • Requirements: 5.1, 5.4
    • 2.2 Implémenter la détection de dépendances circulaires
      • Méthode: has_circular_dependency avec algorithme DFS
      • Requirements: 5.3
    • * 2.3 Écrire le test property-based pour la validation des dépendances
      • Property 13: Validation des dépendances
      • Validates: Requirements 5.2, 5.3
  • 3. Implémenter le GlobalVariableManager

    • 3.1 Créer la classe GlobalVariableManager
      • Fichier: core/workflow/global_variable_manager.py
      • Méthodes: set_global, get_global, transfer_to_workflow, get_final_state
      • Requirements: 9.1, 9.2, 9.3
    • 3.2 Implémenter la gestion des conflits de variables
      • Logger les overrides, garder la valeur la plus récente
      • Requirements: 9.5
    • * 3.3 Écrire les tests property-based pour les variables
      • Property 2: Propagation des variables dans les chaînes
      • Validates: Requirements 1.2, 9.1, 9.5
    • * 3.4 Écrire le test property-based pour la lecture avec défaut
      • Property 21: Lecture de variable avec défaut
      • Validates: Requirements 9.2
  • 4. Checkpoint - Vérifier que tous les tests passent

    • Ensure all tests pass, ask the user if questions arise.
  • 5. Implémenter le LoopExecutor

    • 5.1 Créer la classe LoopExecutor
      • Fichier: core/workflow/loop_executor.py
      • Méthodes: start_loop, execute_iteration, should_continue, increment_counter
      • Requirements: 6.1, 6.2, 6.3, 6.4
    • 5.2 Implémenter la garde de sécurité (1000 itérations max)
      • Lever LoopSafetyLimitError et logger un warning
      • Requirements: 6.5
    • * 5.3 Écrire le test property-based pour l'incrémentation du compteur
      • Property 14: Incrémentation du compteur de boucle
      • Validates: Requirements 6.2
    • * 5.4 Écrire le test property-based pour la terminaison à la limite
      • Property 15: Terminaison de boucle à la limite
      • Validates: Requirements 6.3
    • * 5.5 Écrire le test property-based pour la garde de sécurité
      • Property 16: Garde de sécurité des boucles
      • Validates: Requirements 6.5
  • 6. Implémenter le ConditionalEvaluator

    • 6.1 Créer la classe ConditionalEvaluator
      • Fichier: core/workflow/conditional_evaluator.py
      • Méthodes: evaluate_condition, evaluate_node
      • Intégration avec TargetResolver existant
      • Requirements: 7.1, 7.4, 7.5
    • 6.2 Implémenter l'évaluation ordonnée des branches
      • Tester les branches par ordre de priorité, retourner la première qui match
      • Requirements: 7.2
    • 6.3 Implémenter la gestion de la branche par défaut
      • Exécuter le défaut ou lever NoMatchingBranchError
      • Requirements: 7.3
    • * 6.4 Écrire le test property-based pour l'ordre d'évaluation
      • Property 17: Ordre d'évaluation des branches conditionnelles
      • Validates: Requirements 7.2
    • * 6.5 Écrire le test property-based pour la branche par défaut
      • Property 18: Branche par défaut ou erreur
      • Validates: Requirements 7.3
  • 7. Checkpoint - Vérifier que tous les tests passent

    • Ensure all tests pass, ask the user if questions arise.
  • 8. Implémenter le SubWorkflowRegistry

    • 8.1 Créer la classe SubWorkflowRegistry
      • Fichier: core/workflow/subworkflow_registry.py
      • Méthodes: register, create_reference, execute_reference, get_dependents
      • Intégration avec DependencyGraph
      • Requirements: 2.1, 2.4
    • 8.2 Implémenter le retour de contrôle après exécution
      • Sauvegarder le contexte parent, exécuter le sous-workflow, restaurer
      • Requirements: 2.2
    • 8.3 Implémenter la propagation d'erreur
      • Capturer les erreurs du sous-workflow avec contexte complet
      • Requirements: 2.5
    • * 8.4 Écrire le test property-based pour le retour de contrôle
      • Property 5: Retour de contrôle après sous-workflow
      • Validates: Requirements 2.1, 2.2
    • * 8.5 Écrire le test property-based pour la propagation d'erreur
      • Property 6: Propagation d'erreur de sous-workflow
      • Validates: Requirements 2.5
  • 9. Implémenter le WorkflowChainer

    • 9.1 Créer la classe WorkflowChainer
      • Fichier: core/workflow/workflow_chainer.py
      • Méthodes: add_chain, validate_chain, execute_chain
      • Intégration avec GlobalVariableManager
      • Requirements: 1.1, 1.2, 1.3
    • 9.2 Implémenter la validation de compatibilité
      • Vérifier que l'état final de A est compatible avec l'état initial de B
      • Requirements: 1.4
    • 9.3 Implémenter le log unifié
      • Maintenir un ExecutionLogger partagé entre tous les workflows de la chaîne
      • Requirements: 1.5
    • * 9.4 Écrire le test property-based pour la validation de compatibilité
      • Property 3: Validation de compatibilité de chaînage
      • Validates: Requirements 1.4
    • * 9.5 Écrire le test property-based pour le log unifié
      • Property 4: Log unifié complet
      • Validates: Requirements 1.5
  • 10. Checkpoint - Vérifier que tous les tests passent

    • Ensure all tests pass, ask the user if questions arise.
  • 11. Implémenter le WorkflowMerger

    • 11.1 Créer la classe WorkflowMerger
      • Fichier: core/workflow/workflow_merger.py
      • Méthodes: calculate_similarity, find_merge_candidates, merge, get_unique_paths
      • Requirements: 3.1, 3.4, 3.5
    • 11.2 Implémenter la préservation des chemins uniques
      • Extraire tous les chemins de A et B, les combiner dans le résultat
      • Requirements: 3.2
    • 11.3 Implémenter la combinaison des statistiques
      • Fusionner les stats d'apprentissage des deux sources
      • Requirements: 3.3
    • * 11.4 Écrire le test property-based pour la détection de similarité
      • Property 7: Détection de similarité pour fusion
      • Validates: Requirements 3.1
    • * 11.5 Écrire le test property-based pour la préservation des chemins
      • Property 8: Préservation des chemins lors de la fusion
      • Validates: Requirements 3.2
    • * 11.6 Écrire le test property-based pour la combinaison des stats
      • Property 9: Combinaison des statistiques lors de la fusion
      • Validates: Requirements 3.3
  • 12. Implémenter le SequenceExtractor

    • 12.1 Créer la classe SequenceExtractor
      • Fichier: core/workflow/sequence_extractor.py
      • Méthodes: find_common_sequences, extract_as_subworkflow, replace_with_references
      • Intégration avec SubWorkflowRegistry
      • Requirements: 4.1, 4.4
    • 12.2 Implémenter le remplacement par références
      • Remplacer les séquences originales par des ReferenceNodes
      • Requirements: 4.2
    • 12.3 Implémenter la priorisation
      • Marquer haute priorité les séquences dans 3+ workflows
      • Requirements: 4.3
    • * 12.4 Écrire le test property-based pour la détection de séquences
      • Property 10: Détection de séquences communes
      • Validates: Requirements 4.1
    • * 12.5 Écrire le test property-based pour le remplacement
      • Property 11: Remplacement par références après extraction
      • Validates: Requirements 4.2
    • * 12.6 Écrire le test property-based pour la priorisation
      • Property 12: Priorisation des séquences fréquentes
      • Validates: Requirements 4.3
  • 13. Checkpoint - Vérifier que tous les tests passent

    • Ensure all tests pass, ask the user if questions arise.
  • 14. Implémenter le TriggerManager

    • 14.1 Créer la classe TriggerManager
      • Fichier: core/workflow/trigger_manager.py
      • Méthodes: register_trigger, fire_trigger, handle_concurrent_triggers
      • Support pour ScheduleTrigger, FileTrigger, VisualTrigger
      • Requirements: 8.1, 8.2, 8.3
    • 14.2 Implémenter le passage du contexte de déclenchement
      • Créer TriggerContext avec timestamp, file_path, detected_element
      • Requirements: 8.4
    • 14.3 Implémenter la gestion des déclenchements concurrents
      • Mode concurrent ou queue selon configuration
      • Requirements: 8.5
    • * 14.4 Écrire le test property-based pour le contexte de déclenchement
      • Property 19: Passage du contexte de déclenchement
      • Validates: Requirements 8.4
    • * 14.5 Écrire le test property-based pour la concurrence
      • Property 20: Gestion des déclenchements concurrents
      • Validates: Requirements 8.5
  • 15. Implémenter le ExecutionLogger unifié

    • 15.1 Créer/étendre la classe ExecutionLogger
      • Fichier: core/workflow/execution_logger.py
      • Support pour les logs multi-workflows avec contexte de chaîne
      • Méthode get_final_variable_state
      • Requirements: 1.5, 9.3
    • * 15.2 Écrire le test property-based pour la préservation de l'état final
      • Property 22: Préservation de l'état final des variables
      • Validates: Requirements 9.3
  • 16. Intégration avec le système existant

    • 16.1 Intégrer les nouveaux composants dans WorkflowGraph
      • Ajouter les champs pour loops, conditionals, references
      • Mettre à jour to_dict() et from_dict()
      • Requirements: 1.6, 2.6, 6.6, 7.6
    • 16.2 Intégrer avec ExecutionLoop
      • Ajouter le support pour LoopExecutor et ConditionalEvaluator
      • Requirements: 6.2, 7.2
    • 16.3 Mettre à jour la CLI pour les nouvelles fonctionnalités
      • Commandes pour chaîner, créer des sous-workflows, configurer des triggers
      • Requirements: 1.1, 2.1, 8.1
  • 17. Checkpoint final - Vérifier que tous les tests passent

    • Ensure all tests pass, ask the user if questions arise.