Files
rpa_vision_v3/.kiro/specs/agent-workflow-improvements/design.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

385 lines
13 KiB
Markdown

# Document de Conception - Améliorations Agent V0
## Vue d'Ensemble de l'Architecture
Cette conception détaille les améliorations à apporter à l'Agent V0 pour résoudre les 5 problèmes identifiés : nommage des workflows, capture d'événements incomplète, captures d'écran limitées, visibilité du traitement, et découvrabilité des workflows.
## Architecture Actuelle vs Proposée
### Architecture Actuelle
```
Agent V0
├── Capture basique (clics, scroll, hover)
├── Screenshots plein écran uniquement
├── Nommage générique des sessions
├── Upload simple vers serveur
└── Aucun feedback de traitement
```
### Architecture Proposée
```
Agent V0 Amélioré
├── Capture enrichie (clavier + contexte)
├── Screenshots intelligents (ciblés + plein écran)
├── Nommage intelligent basé sur l'analyse UI
├── Monitoring pipeline en temps réel
├── Interface de découverte des workflows
└── Intégration Visual Workflow Builder
```
## Composants de Conception
### 1. Système de Nommage Intelligent
#### 1.1 Analyseur d'Actions
```python
class ActionAnalyzer:
"""Analyse les actions capturées pour générer des noms descriptifs"""
def analyze_session(self, raw_session: RawSession) -> SessionAnalysis:
"""Analyse une session pour extraire les patterns d'actions"""
def extract_ui_elements(self, events: List[Event]) -> List[UIElement]:
"""Extrait les éléments UI interagis"""
def detect_workflow_type(self, analysis: SessionAnalysis) -> WorkflowType:
"""Détecte le type de workflow (formulaire, navigation, etc.)"""
```
#### 1.2 Générateur de Noms
```python
class WorkflowNameGenerator:
"""Génère des noms descriptifs pour les workflows"""
def generate_name(self, analysis: SessionAnalysis) -> str:
"""Génère un nom basé sur l'analyse de session"""
def suggest_alternatives(self, base_name: str) -> List[str]:
"""Propose des noms alternatifs"""
def ensure_uniqueness(self, name: str, existing_names: List[str]) -> str:
"""Assure l'unicité du nom généré"""
```
#### 1.3 Patterns de Nommage
- **Formulaires**: "Saisie_[NomFormulaire]_[Date]"
- **Navigation**: "Navigation_[Application]_vers_[Section]"
- **Recherche**: "Recherche_[Terme]_dans_[Application]"
- **Édition**: "Modification_[TypeDocument]_[Action]"
- **Générique**: "Workflow_[Application]_[Timestamp]"
### 2. Capture d'Événements Étendue
#### 2.1 Capteur de Clavier Enrichi
```python
class EnhancedKeyCaptor:
"""Capture enrichie des événements clavier"""
def capture_text_input(self, text: str, target_element: UIElement):
"""Capture la saisie de texte avec son contexte"""
def capture_keyboard_shortcut(self, keys: List[str], context: AppContext):
"""Capture les raccourcis clavier avec leur signification"""
def capture_special_keys(self, key: str, target_element: UIElement):
"""Capture les touches spéciales (Tab, Enter, etc.)"""
```
#### 2.2 Détecteur de Contexte UI
```python
class UIContextDetector:
"""Détecte le contexte des éléments UI lors des interactions"""
def get_element_context(self, position: Tuple[int, int]) -> UIElement:
"""Identifie l'élément UI à une position donnée"""
def detect_element_type(self, element: UIElement) -> ElementType:
"""Détermine le type d'élément (input, button, etc.)"""
def extract_element_properties(self, element: UIElement) -> Dict:
"""Extrait les propriétés de l'élément (texte, attributs, etc.)"""
```
### 3. Système de Captures Intelligentes
#### 3.1 Gestionnaire de Captures Ciblées
```python
class SmartScreenCapturer:
"""Système de capture d'écran intelligent"""
def capture_targeted_area(self, center: Tuple[int, int], context_size: int):
"""Capture une zone ciblée autour d'un point"""
def capture_element_context(self, element: UIElement):
"""Capture le contexte visuel d'un élément UI"""
def optimize_capture_quality(self, image: Image, importance: float):
"""Optimise la qualité selon l'importance de la capture"""
```
#### 3.2 Stratégies de Capture
- **Capture Ciblée**: Zone de 400x400px autour de l'interaction
- **Capture Contextuelle**: Zone étendue incluant les éléments voisins
- **Capture Plein Écran**: Maintenue pour le contexte global
- **Capture Adaptative**: Taille ajustée selon le type d'élément
### 4. Monitoring du Pipeline de Traitement
#### 4.1 Client de Monitoring
```python
class PipelineMonitor:
"""Monitore le traitement des sessions sur le serveur"""
def track_session_processing(self, session_id: str) -> ProcessingStatus:
"""Suit le traitement d'une session"""
def get_processing_progress(self, session_id: str) -> ProgressInfo:
"""Obtient le progrès de traitement"""
def subscribe_to_updates(self, session_id: str, callback: Callable):
"""S'abonne aux mises à jour de traitement"""
```
#### 4.2 Interface de Statut
```python
class StatusDisplay:
"""Affiche le statut de traitement dans l'interface"""
def show_processing_status(self, status: ProcessingStatus):
"""Affiche le statut actuel"""
def update_progress_bar(self, progress: float):
"""Met à jour la barre de progression"""
def show_completion_notification(self, workflow_info: WorkflowInfo):
"""Notifie la completion du traitement"""
```
### 5. Interface de Découverte des Workflows
#### 5.1 Navigateur de Workflows
```python
class WorkflowBrowser:
"""Interface de navigation et recherche des workflows"""
def list_workflows(self, filters: WorkflowFilters) -> List[WorkflowInfo]:
"""Liste les workflows avec filtres"""
def search_workflows(self, query: str) -> List[WorkflowInfo]:
"""Recherche dans les workflows"""
def get_workflow_preview(self, workflow_id: str) -> WorkflowPreview:
"""Obtient un aperçu du workflow"""
```
#### 5.2 Système de Filtres
- **Par Date**: Aujourd'hui, Cette semaine, Ce mois, Personnalisé
- **Par Type**: Formulaire, Navigation, Recherche, Édition, Autre
- **Par Application**: Groupement par application cible
- **Par Statut**: Brouillon, Prêt, En cours d'utilisation, Archivé
### 6. Intégration Visual Workflow Builder
#### 6.1 Connecteur VWB
```python
class VWBConnector:
"""Connecteur vers le Visual Workflow Builder"""
def open_workflow_in_builder(self, workflow_id: str):
"""Ouvre un workflow dans le builder"""
def sync_workflow_changes(self, workflow_id: str, changes: Dict):
"""Synchronise les modifications"""
def test_workflow_from_agent(self, workflow_id: str) -> TestResult:
"""Lance un test du workflow depuis l'agent"""
```
## Flux de Données
### 1. Flux de Capture Amélioré
```
Interaction Utilisateur
Capture Enrichie (position + contexte + métadonnées)
Analyse UI en Temps Réel
Capture Ciblée + Plein Écran
Enrichissement Métadonnées
Génération Nom Intelligent
Packaging Session + Upload
```
### 2. Flux de Monitoring
```
Upload Session
Serveur Démarre Traitement
Agent Surveille Progression
Mises à Jour Temps Réel
Notification Completion
Workflow Disponible
```
## Interfaces Utilisateur
### 1. Interface Principale Améliorée
```
┌─────────────────────────────────────────┐
│ Agent V0 - Capture Intelligente │
├─────────────────────────────────────────┤
│ ● Enregistrement: [ACTIF] │
│ 📝 Nom: "Saisie_Commande_Client" │
│ 🎯 Actions: 12 | ⌨️ Saisies: 5 │
│ 📸 Captures: 8 (6 ciblées, 2 globales) │
├─────────────────────────────────────────┤
│ [Arrêter] [Pause] [Paramètres] │
│ [Mes Workflows] [Aide] │
└─────────────────────────────────────────┘
```
### 2. Interface de Découverte
```
┌─────────────────────────────────────────┐
│ Mes Workflows │
├─────────────────────────────────────────┤
│ 🔍 [Rechercher...] 📅 [Filtres] │
├─────────────────────────────────────────┤
│ 📋 Saisie_Commande_Client │
│ Créé: 22/12/2025 | Utilisé: 3 fois │
│ [Ouvrir] [Éditer] [Dupliquer] │
├─────────────────────────────────────────┤
│ 🌐 Navigation_CRM_Contacts │
│ Créé: 21/12/2025 | Utilisé: 1 fois │
│ [Ouvrir] [Éditer] [Dupliquer] │
└─────────────────────────────────────────┘
```
### 3. Monitoring de Traitement
```
┌─────────────────────────────────────────┐
│ Traitement en Cours │
├─────────────────────────────────────────┤
│ Session: Saisie_Commande_Client │
│ ████████████░░░░ 75% │
│ │
│ ✅ Analyse des captures │
│ ✅ Détection des éléments UI │
│ 🔄 Génération du workflow │
│ ⏳ Optimisation des actions │
│ │
│ Temps estimé: 30 secondes │
└─────────────────────────────────────────┘
```
## Modèles de Données
### 1. Session Enrichie
```python
@dataclass
class EnhancedRawSession(RawSession):
"""Session avec métadonnées enrichies"""
workflow_name: str
workflow_type: WorkflowType
ui_elements_detected: List[UIElement]
text_inputs: List[TextInput]
keyboard_shortcuts: List[KeyboardShortcut]
targeted_captures: List[TargetedCapture]
quality_score: float
processing_hints: Dict[str, Any]
```
### 2. Élément UI Enrichi
```python
@dataclass
class EnhancedUIElement:
"""Élément UI avec contexte enrichi"""
position: Tuple[int, int]
size: Tuple[int, int]
element_type: ElementType
text_content: Optional[str]
attributes: Dict[str, str]
parent_context: Optional['EnhancedUIElement']
interaction_type: InteractionType
confidence_score: float
```
### 3. Capture Ciblée
```python
@dataclass
class TargetedCapture:
"""Capture d'écran ciblée avec métadonnées"""
capture_id: str
center_position: Tuple[int, int]
capture_size: Tuple[int, int]
target_element: EnhancedUIElement
context_elements: List[EnhancedUIElement]
capture_reason: CaptureReason
quality_level: QualityLevel
file_path: str
```
## Stratégies d'Implémentation
### Phase 1: Nommage Intelligent
1. Implémenter l'analyseur d'actions
2. Créer le générateur de noms
3. Intégrer dans l'interface de capture
4. Tests avec différents types de workflows
### Phase 2: Capture Enrichie
1. Étendre le capteur de clavier
2. Implémenter la détection de contexte UI
3. Intégrer les captures ciblées
4. Optimiser les performances
### Phase 3: Monitoring et Découverte
1. Créer le client de monitoring
2. Implémenter l'interface de statut
3. Développer le navigateur de workflows
4. Intégrer les filtres et recherche
### Phase 4: Intégration VWB
1. Développer le connecteur VWB
2. Implémenter la synchronisation
3. Créer l'interface d'édition
4. Tests d'intégration complets
## Considérations Techniques
### Performance
- Captures ciblées en arrière-plan pour éviter les ralentissements
- Cache des analyses UI pour éviter les recalculs
- Compression intelligente des captures selon leur importance
### Sécurité
- Chiffrement maintenu pour toutes les nouvelles données
- Anonymisation optionnelle des captures sensibles
- Validation des métadonnées avant stockage
### Compatibilité
- Support des 3 plateformes (Linux, macOS, Windows)
- Rétrocompatibilité avec les sessions existantes
- Migration progressive des fonctionnalités
## Métriques de Succès
### Métriques Quantitatives
- Temps de génération de nom < 2 secondes
- Taux de captures ciblées réussies > 95%
- Temps de découverte de workflow < 10 secondes
- Réduction de 50% des sessions incomplètes
### Métriques Qualitatives
- Satisfaction utilisateur > 4.5/5
- Adoption des nouvelles fonctionnalités > 80%
- Réduction des demandes de support
- Amélioration de la qualité des workflows générés