Files
2026-03-05 00:20:25 +01:00
..
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00
2026-03-05 00:20:25 +01:00

Module GUI - Interface Utilisateur PyQt5

Vue d'ensemble

Ce module fournit l'interface utilisateur minimale pour RPA Vision V2, incluant les indicateurs de mode, les contrôles système et les superpositions de suggestion.

Composants

1. MinimalGUI (minimal_gui.py)

Interface principale de l'application avec:

  • Indicateurs de mode: Affichage visuel du mode actuel (👀 Shadow, 🤝 Assisté, 🤖 Autopilot)
  • Contrôles: Boutons Start, Pause et Stop pour contrôler le système
  • Notifications: Système de notification intégré avec types (info, success, warning, error)
  • Raccourcis clavier: Support des raccourcis pour un contrôle rapide

Méthodes principales

# Mettre à jour l'indicateur de mode
gui.update_mode_indicator("shadow")  # "shadow", "assist", "auto"

# Afficher une notification
gui.show_notification("Message", "success")  # Types: info, success, warning, error

# Afficher une suggestion et attendre le retour
feedback = gui.show_suggestion(decision, animated=True)
# Retourne: "accept", "reject", ou "correct"

Signaux PyQt5

  • start_requested: Émis quand l'utilisateur clique sur Start
  • stop_requested: Émis quand l'utilisateur clique sur Stop
  • pause_requested: Émis quand l'utilisateur clique sur Pause
  • emergency_stop_requested: Émis lors d'un arrêt d'urgence

2. SuggestionOverlay (suggestion_overlay.py)

Superposition transparente pour afficher les suggestions d'actions avec surlignage visuel.

Fonctionnalités

  • Surlignage visuel: Met en évidence l'élément UI suggéré avec un rectangle coloré
  • Panneau d'information: Affiche les détails de l'action suggérée
  • Contrôles utilisateur: Boutons et raccourcis pour accepter/refuser/corriger
  • Version animée: AnimatedSuggestionOverlay avec effet de pulsation

Format de décision

decision = {
    "action_type": "click",           # Type d'action
    "target_element": "bouton_valider", # Nom de l'élément cible
    "bbox": (x, y, w, h),             # Coordonnées de la bounding box
    "confidence": 0.95,               # Score de confiance (0-1)
    "description": "Description..."   # Description optionnelle
}

Raccourcis clavier

  • Entrée: Accepter la suggestion
  • Échap: Refuser la suggestion
  • Alt+C: Demander une correction

3. Script de démonstration (demo_gui.py)

Script pour tester l'interface GUI de manière autonome.

cd geniusia2/gui
python demo_gui.py

Utilisation

Exemple basique

from PyQt5.QtWidgets import QApplication
from geniusia2.gui import MinimalGUI
import sys

app = QApplication(sys.argv)
gui = MinimalGUI()

# Connecter les signaux
gui.start_requested.connect(lambda: print("Start demandé"))
gui.stop_requested.connect(lambda: print("Stop demandé"))

# Afficher l'interface
gui.show()

# Mettre à jour le mode
gui.update_mode_indicator("assist")

# Afficher une notification
gui.show_notification("Système prêt", "success")

sys.exit(app.exec_())

Exemple avec suggestion

# Créer une décision d'action
decision = {
    "action_type": "click",
    "target_element": "bouton_soumettre",
    "bbox": (450, 320, 120, 40),
    "confidence": 0.97,
    "description": "Cliquer pour soumettre le formulaire"
}

# Afficher la suggestion et attendre le retour
feedback = gui.show_suggestion(decision, animated=True)

if feedback == "accept":
    print("Action acceptée par l'utilisateur")
elif feedback == "reject":
    print("Action refusée par l'utilisateur")
elif feedback == "correct":
    print("Correction demandée par l'utilisateur")

Intégration avec l'orchestrateur

L'interface GUI est conçue pour s'intégrer avec l'orchestrateur:

from geniusia2.core.orchestrator import Orchestrator
from geniusia2.gui import MinimalGUI

# Créer l'orchestrateur
orchestrator = Orchestrator(...)

# Créer la GUI avec référence à l'orchestrateur
gui = MinimalGUI(orchestrator)

# Connecter les signaux
gui.start_requested.connect(orchestrator.start)
gui.stop_requested.connect(orchestrator.stop)
gui.pause_requested.connect(orchestrator.pause)
gui.emergency_stop_requested.connect(orchestrator.emergency_stop)

# L'orchestrateur peut mettre à jour la GUI
orchestrator.mode_changed.connect(gui.update_mode_indicator)
orchestrator.notification_needed.connect(gui.show_notification)

Exigences satisfaites

Exigence 1.5

  • ✓ Indicateur visuel du Mode_Shadow (icône 👀)

Exigence 2.1

  • ✓ Surlignage des Élément_UI suggérés avec superposition visuelle claire

Exigence 2.2

  • ✓ Attente d'entrée utilisateur explicite (Entrée/Échap/Alt+C)

Exigence 2.3, 2.4, 2.5

  • ✓ Gestion des retours utilisateur (validation, refus, correction)

Exigence 2.7

  • ✓ Indicateur visuel du Mode_Assisté (icône 🤝)

Exigence 3.7

  • ✓ Indicateur visuel du Mode_Autopilot (icône 🤖)

Dépendances

  • PyQt5 >= 5.15.9
  • PyQt5-Qt5 >= 5.15.2

Notes de développement

  • L'interface est conçue pour être minimale et non intrusive
  • Les superpositions utilisent la transparence pour ne pas bloquer la vue
  • Les raccourcis clavier fonctionnent même quand la fenêtre n'a pas le focus (pour certains)
  • L'arrêt d'urgence (Ctrl+Pause) doit être géré au niveau système par l'orchestrateur
  • Les notifications s'effacent automatiquement après 5 secondes
  • La version animée de la superposition utilise un effet de pulsation pour attirer l'attention

Améliorations futures possibles

  • Support multi-écran amélioré
  • Thèmes personnalisables (clair/sombre)
  • Historique des suggestions dans l'interface
  • Graphiques de confiance en temps réel
  • Support de la localisation (i18n)