# Design - Mode Assisté avec Suggestions

## Overview

Le Mode Assisté détecte quand l'utilisateur commence un workflow connu et propose de le compléter automatiquement. Le système compare les actions en cours avec les workflows sauvegardés et affiche une suggestion si la correspondance est suffisante.

## Architecture

```
User Actions → SessionManager → WorkflowMatcher → SuggestionManager → GUI
                                      ↓
                              Workflows (JSON)
```

**Flux** :
1. L'utilisateur effectue des actions
2. SessionManager crée une session en cours
3. WorkflowMatcher compare avec les workflows connus
4. Si match > 80%, SuggestionManager crée une suggestion
5. GUI affiche la suggestion avec timeout de 10s
6. Utilisateur accepte (Enter) ou rejette (Escape)
7. Si accepté, TaskReplayEngine exécute les étapes restantes

## Components

### 1. WorkflowMatcher (Nouveau)

**Responsabilité** : Comparer les actions courantes avec les workflows connus

**Méthodes** :
```python
def match_current_session(session, workflows) -> List[WorkflowMatch]:
    """Compare la session courante avec tous les workflows"""
    
def calculate_match_score(actions, workflow_steps) -> float:
    """Calcule le score de correspondance (0-1)"""
    
def find_best_match(matches) -> Optional[WorkflowMatch]:
    """Retourne le meilleur match si > 80%"""
```

**Algorithme de matching** :
- Comparer les N premières actions avec le début de chaque workflow
- Score = (actions_matching / total_actions) * position_similarity
- Position similarity : tolérance de 50px

### 2. SuggestionManager (Existant - À améliorer)

**Améliorations nécessaires** :
- Méthode `check_workflow_match()` : vérifie périodiquement les matchs
- Méthode `create_workflow_suggestion()` : crée une suggestion de workflow
- Gestion du timeout (10 secondes)
- Tracking des rejets pour ajuster la priorité

### 3. GUI Overlay (Existant - À améliorer)

**Améliorations** :
- Affichage des 3 prochaines étapes
- Boutons Enter/Escape bien visibles
- Barre de progression pendant l'exécution
- Notification de succès/échec

### 4. TaskReplayEngine (Existant)

**Utilisation** :
- Exécuter les étapes restantes du workflow
- Recherche visuelle pour chaque étape
- Feedback visuel pendant l'exécution

## Data Models

### WorkflowMatch
```python
@dataclass
class WorkflowMatch:
    workflow_id: str
    workflow_name: str
    confidence: float
    matched_steps: int
    total_steps: int
    remaining_steps: List[WorkflowStep]
```

### Suggestion (Existant - À étendre)
```python
{
    "type": "workflow",
    "workflow_id": str,
    "workflow_name": str,
    "confidence": float,
    "current_step": int,
    "remaining_steps": List[dict],
    "created_at": datetime,
    "timeout": 10.0
}
```

## Error Handling

- **Match échoue** : Continuer en mode manuel, ne pas suggérer
- **Exécution échoue** : Arrêter, notifier l'utilisateur, rollback optionnel
- **Timeout** : Dismisser la suggestion silencieusement
- **Rejet répété** : Réduire la priorité du workflow (confidence *= 0.9)

## Testing Strategy

### Unit Tests
- Test du matching avec différents workflows
- Test du calcul de score
- Test de la tolérance de position
- Test du timeout

### Integration Tests
- Test du flux complet : action → suggestion → exécution
- Test avec workflows réels de la calculatrice
- Test des rejets et acceptations

## Performance

- **Latence de détection** : < 500ms
- **Affichage suggestion** : < 1s après le match
- **Exécution par étape** : ~500ms (recherche visuelle + action)
- **Fréquence de vérification** : Toutes les 2 secondes en mode Assist
