Files
Geniusia_v2/docs/archive/old-summaries/WORKFLOW_DETECTION_FIX_SUMMARY.md
2026-03-05 00:20:25 +01:00

8.2 KiB

🎯 Résumé : Correction de la Détection de Workflows

Date : 18 novembre 2025
Objectif : Corriger les bugs empêchant la détection et la sauvegarde des workflows dans GeniusIA v2


🐛 Problèmes Identifiés

1. Bug VisionAnalysis - AttributeError

Symptôme : Erreur 'VisionAnalysis' object has no attribute 'llm_manager' à chaque action
Cause : Incohérence entre le nom de l'attribut (self.llm) et son utilisation (self.llm_manager)
Impact : Aucune analyse visuelle des actions n'était possible

2. SessionManager Non Intégré

Symptôme : Aucune session créée malgré la capture d'événements
Cause : EventCapture capturait les événements mais ne les passait pas au SessionManager
Impact : Pas de segmentation des actions en sessions

3. WorkflowDetector Non Intégré

Symptôme : Aucun workflow détecté même après répétitions
Cause : WorkflowDetector n'était pas connecté à l'Orchestrator
Impact : Pas d'analyse de patterns répétitifs

4. Absence de Persistence

Symptôme : Workflows perdus au redémarrage
Cause : Aucun mécanisme de sauvegarde sur disque
Impact : Impossible de réutiliser les workflows appris

5. Détection de Fenêtre Défaillante

Symptôme : Toutes les actions attribuées à "RPA Vision V2"
Cause : xdotool non installé, fallback xprop insuffisant
Impact : Workflows mélangés entre différentes applications


Solutions Implémentées

1. Correction VisionAnalysis

Fichier : geniusia2/core/vision_analysis.py

Changements :

  • Corrigé self.llm_managerself.llm (lignes 75, 86)
  • Ajouté gestion d'erreur robuste avec try/except imbriqués
  • Garantie qu'une signature valide est toujours retournée

Résultat : Analyse visuelle fonctionnelle sans erreurs

2. Intégration SessionManager

Fichiers :

  • geniusia2/core/orchestrator.py
  • geniusia2/core/event_capture.py
  • geniusia2/core/session_manager.py

Changements :

  • SessionManager créé dans Orchestrator et partagé avec EventCapture
  • EventCapture appelle session_manager.add_action() pour chaque événement
  • Callback _on_session_completed() ajouté dans Orchestrator
  • Suppression du double logging (SessionManager ne log plus)

Résultat : Sessions créées automatiquement avec timeout de 5 minutes

3. Intégration WorkflowDetector

Fichiers :

  • geniusia2/core/orchestrator.py
  • geniusia2/core/workflow_detector.py

Changements :

  • WorkflowDetector créé dans Orchestrator
  • Ajout de la méthode analyze_session() pour analyse incrémentale
  • Callback _on_workflow_detected() connecté au SuggestionManager
  • Groupement des sessions par fenêtre avant comparaison
  • Filtre des workflows trop courts (< 3 actions)

Résultat : Workflows détectés après 3+ répétitions similaires

4. Persistence des Workflows

Fichier : geniusia2/core/workflow_detector.py

Changements :

  • Ajout de _save_workflow() : sauvegarde en JSON
  • Ajout de _load_workflows() : chargement au démarrage
  • Ajout de update_workflow_confidence() : mise à jour après exécution
  • Répertoire : data/user_profiles/workflows/

Format JSON :

{
  "workflow_id": "workflow_20251118_184244",
  "name": "Mouse_click → Mouse_click",
  "repetitions": 10,
  "confidence": 1.0,
  "created_at": "2025-11-18T18:42:44",
  "last_seen": "2025-11-18T18:43:21",
  "steps": [
    {
      "step_id": 0,
      "action_type": "mouse_click",
      "target_description": "",
      "position": [44, 1055],
      "window": "Calculatrice"
    }
  ]
}

Résultat : Workflows persistés et rechargés automatiquement

5. Amélioration Détection de Fenêtre

Fichier : geniusia2/core/utils/image_utils.py

Changements :

  • Installation de xdotool pour détection fiable sur Linux
  • Fallback vers xprop si xdotool indisponible
  • Gestion des erreurs et timeouts

Résultat : Noms de fenêtres correctement détectés


🛠️ Outils Créés

1. Script de Monitoring

Fichier : monitor_workflows.sh

Fonctionnalité : Affiche en temps réel les sessions et workflows détectés

Usage :

./monitor_workflows.sh

2. Script de Vérification

Fichier : check_workflows.sh

Fonctionnalité : Liste tous les workflows sauvegardés avec détails

Usage :

./check_workflows.sh

3. Test de Détection de Fenêtre

Fichier : test_window_detection.py

Fonctionnalité : Teste get_active_window() en temps réel

Usage :

python3 test_window_detection.py

4. Test d'Intégration

Fichier : test_workflow_fix.py

Fonctionnalité : Vérifie que tous les composants sont correctement intégrés

Usage :

python3 test_workflow_fix.py

📊 Métriques de Performance

Avant les Corrections

  • 0 workflows détectés
  • 0 sessions créées
  • 100% d'erreurs llm_manager
  • Aucune persistence

Après les Corrections

  • Workflows détectés après 3+ répétitions
  • Sessions créées automatiquement
  • 0 erreur d'attribut
  • Persistence fonctionnelle
  • Détection de fenêtre fiable avec xdotool

🧪 Tests Effectués

Test 1 : VisionAnalysis

  • Pas d'AttributeError
  • Signatures créées avec embeddings
  • Gestion d'erreur robuste

Test 2 : SessionManager

  • Sessions créées automatiquement
  • Timeout de 5 minutes respecté
  • Groupement par fenêtre

Test 3 : WorkflowDetector

  • Détection après 3 répétitions
  • Filtrage des workflows courts
  • Groupement par fenêtre

Test 4 : Persistence

  • Sauvegarde en JSON
  • Chargement au démarrage
  • Mise à jour de confiance

📝 Configuration

Paramètres de Workflow

{
  "workflow": {
    "min_repetitions": 3,           # Nombre de répétitions minimum
    "similarity_threshold": 0.75,   # Seuil de similarité (75%)
    "min_workflow_length": 3,       # Longueur minimale (3 actions)
    "session_timeout": 300          # Timeout de session (5 minutes)
  }
}

Dépendances Système

# Linux
sudo apt install xdotool

# Vérification
xdotool getactivewindow getwindowname

🚀 Utilisation

Mode Shadow (Apprentissage)

cd geniusia2
./run.sh --mode shadow

Monitoring en Temps Réel

# Terminal 1 : GeniusIA
cd geniusia2
./run.sh --mode shadow

# Terminal 2 : Monitoring
./monitor_workflows.sh

Vérification des Workflows

./check_workflows.sh

🔮 Améliorations Futures

1. Détection 100% Vision

Objectif : Ne plus dépendre des noms de fenêtres

Approche :

  • Comparer les embeddings des screenshots au lieu des noms
  • Grouper les sessions par similarité visuelle
  • Identifier automatiquement le contexte visuel

2. Suggestions Proactives

Objectif : Suggérer des workflows avant que l'utilisateur ne les répète

Approche :

  • Analyser le contexte visuel actuel
  • Comparer avec les workflows connus
  • Suggérer le workflow le plus probable

3. Apprentissage Incrémental

Objectif : Améliorer les workflows au fil du temps

Approche :

  • Mettre à jour la confiance après chaque exécution
  • Fusionner les workflows similaires
  • Supprimer les workflows obsolètes

📚 Documentation Créée

  1. Spec Complète : .kiro/specs/workflow-detection-fix/

    • requirements.md : Exigences détaillées
    • design.md : Architecture et propriétés de correction
    • tasks.md : Plan d'implémentation
  2. Scripts de Test :

    • test_workflow_fix.py
    • test_window_detection.py
    • monitor_workflows.sh
    • check_workflows.sh
  3. Ce Document : Résumé complet de la correction


Conclusion

Statut : Tous les bugs critiques corrigés

Fonctionnalités Opérationnelles :

  • Capture d'événements
  • Segmentation en sessions
  • Détection de workflows
  • Persistence sur disque
  • Détection de fenêtres

Prochaine Étape : Tester en conditions réelles avec différentes applications (Calculatrice, Firefox, OnlyOffice, etc.)


Auteur : Kiro AI Assistant
Date : 18 novembre 2025
Version : GeniusIA v2.0