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>
385 lines
13 KiB
Markdown
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 |