# 🤖 RPA Vision V2 - MVP

Système d'automatisation robotique à apprentissage progressif utilisant la vision par ordinateur et l'IA.

## 🎯 Vue d'Ensemble

RPA Vision V2 **observe, apprend et rejoue** les interactions avec les interfaces utilisateur de manière intelligente.

### Fonctionnalités MVP

- ✅ **Capture d'événements** : Enregistre les actions clavier/souris avec screenshots
- ✅ **Détection de patterns** : Identifie les séquences répétitives (3+ fois)
- ✅ **Analyse visuelle** : Utilise CLIP, OWL-v2, DINO, YOLO pour comprendre l'interface
- ✅ **Signatures visuelles** : Crée des embeddings pour chaque action
- ✅ **Descriptions intelligentes** : Génère des descriptions avec Gemma3
- ✅ **Rejeu intelligent** : Rejoue les tâches en localisant visuellement les éléments
- ✅ **Adaptation automatique** : S'adapte aux variations d'interface

## 🚀 Installation Rapide

### 1. Prérequis

- Python 3.8+
- Ollama installé
- 8 GB RAM minimum
- Linux (testé sur Ubuntu)

### 2. Installation

```bash
# Cloner le repo
git clone <repo-url>
cd Geniusia_v2

# Installation complète
cd geniusia2
./setup.sh

# Installer FAISS (CRITIQUE)
./install_faiss.sh

# Reconstruire l'index FAISS (si des tâches existent)
cd ..
python3 rebuild_faiss_simple.py
```

### 3. Lancement

```bash
cd geniusia2
./run.sh
```

## 📖 Guide d'Utilisation

### Workflow Complet

```bash
# Démonstration complète : Capture → Apprentissage → Rejeu
python3 example_complete_workflow.py
```

### Mode Capture (Apprentissage)

1. Lancer l'application : `cd geniusia2 && ./run.sh`
2. Cliquer sur "Start"
3. Effectuer des actions répétitives (3x minimum)
4. Le système détecte les patterns et crée des tâches automatiquement

### Mode Rejeu

```bash
# Lister les tâches disponibles
python3 read_pkl.py --list

# Rejouer une tâche
python3 test_task_replay.py
```

Le système va :
1. Charger la tâche
2. Pour chaque action :
   - Capturer l'écran actuel
   - Rechercher l'élément visuellement (grille 4x4 + CLIP)
   - Exécuter l'action à la position trouvée
3. Afficher les résultats

## 🏗️ Architecture

```
geniusia2/
├── core/                      # Logique centrale
│   ├── task_replay.py        # ✨ Moteur de rejeu intelligent
│   ├── event_capture.py      # Capture d'événements
│   ├── learning_manager.py   # Apprentissage de tâches
│   ├── embeddings_manager.py # Gestion FAISS
│   ├── logger.py             # Logs (JSON simple pour MVP)
│   └── utils/
│       ├── vision_utils.py   # Analyse visuelle (CLIP, OWL-v2, etc.)
│       └── input_utils.py    # Contrôle souris/clavier
├── gui/                       # Interface PyQt5
├── data/
│   ├── user_profiles/        # Tâches apprises
│   │   └── task_XXXXX/
│   │       ├── metadata.json # Infos de la tâche
│   │       └── signatures.pkl # Actions + embeddings
│   ├── faiss_index/          # Index de recherche
│   │   ├── embeddings.index  # Index FAISS
│   │   └── metadata.pkl      # Métadonnées
│   └── logs/                 # Logs JSON
└── main.py                    # Point d'entrée

Scripts utilitaires (racine) :
├── test_task_replay.py        # Test de rejeu
├── example_complete_workflow.py # Workflow complet
├── read_pkl.py                # Lecture des .pkl
├── rebuild_faiss_simple.py    # Reconstruction index
└── diagnostic_data.py         # Diagnostic
```

## 🔧 Scripts Utilitaires

### Diagnostic

```bash
python3 diagnostic_data.py
```

Affiche :
- État de l'index FAISS
- Nombre de tâches
- État des logs

### Lecture de Tâches

```bash
# Lister toutes les tâches
python3 read_pkl.py --list

# Lire une tâche spécifique
python3 read_pkl.py task_fc1d3e52
```

### Reconstruction de l'Index FAISS

```bash
python3 rebuild_faiss_simple.py
```

Extrait les embeddings de toutes les tâches et crée l'index FAISS.

## 🎮 Modes Opérationnels

### 👀 Mode Shadow (Actuel)

**Fonctionnalités** :
- Capture des événements utilisateur
- Détection de patterns répétitifs
- Création automatique de tâches
- Génération de signatures visuelles

**Utilisation** :
1. Lancer l'app : `./run.sh`
2. Cliquer "Start"
3. Effectuer des actions répétitives
4. Les tâches sont créées automatiquement

### 🎮 Mode Rejeu (Nouveau !)

**Fonctionnalités** :
- Chargement de tâches apprises
- Recherche visuelle d'éléments (CLIP)
- Exécution adaptative d'actions
- Monitoring en temps réel

**Utilisation** :
```bash
python3 test_task_replay.py
```

### 🤝 Mode Assisté (À venir)

- Suggestions d'actions
- Validation utilisateur
- Superposition visuelle

### 🤖 Mode Autopilot (À venir)

- Exécution automatique
- Transitions de mode
- Dashboard de métriques

## 📊 Données

### Structure d'une Tâche

```
data/user_profiles/task_fc1d3e52/
├── metadata.json      # Infos générales
└── signatures.pkl     # Actions + embeddings
```

**metadata.json** :
```json
{
  "task_id": "task_fc1d3e52",
  "task_name": "Défilement rapide",
  "window_whitelist": ["Firefox"],
  "observation_count": 3,
  "mode": "shadow",
  "confidence_score": 0.0
}
```

**signatures.pkl** (binaire) :
- Liste d'actions
- Chaque action contient :
  - `embedding` : numpy array (512,) float32
  - `action_type` : "mouse_click", "scroll", etc.
  - `position` : (x, y)
  - `element_type` : "icon", "button", etc.
  - `window` : Titre de la fenêtre

### Logs

Format JSON simple (pas de chiffrement pour MVP) :

```bash
cat geniusia2/data/logs/logs_$(date +%Y-%m-%d).json | jq .
```

## 🔍 Dépendances Critiques

### FAISS (CRITIQUE)

**Pourquoi** : Recherche de similarité pour localiser les éléments

**Installation** :
```bash
cd geniusia2
./install_faiss.sh
```

Ou manuellement :
```bash
pip install faiss-cpu
```

### Ollama + Gemma3

**Pourquoi** : Génération de descriptions intelligentes

**Installation** :
```bash
# Installer Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Télécharger Gemma3
ollama pull gemma2:2b

# Démarrer Ollama
ollama serve
```

## ⚠️ Problèmes Courants

### FAISS non installé

**Symptôme** : `ModuleNotFoundError: No module named 'faiss'`

**Solution** :
```bash
cd geniusia2
./install_faiss.sh
```

### Index FAISS manquant

**Symptôme** : Pas de fichiers dans `data/faiss_index/`

**Solution** :
```bash
python3 rebuild_faiss_simple.py
```

### Ollama non démarré

**Symptôme** : Erreurs de connexion au LLM

**Solution** :
```bash
ollama serve
```

## 📈 Avancement

**Version actuelle** : MVP 0.6

| Fonctionnalité | Avancement | Statut |
|----------------|------------|--------|
| Capture d'événements | 90% | ✅ Fonctionnel |
| Analyse visuelle | 85% | ✅ Fonctionnel |
| Mémoire FAISS | 80% | ✅ Opérationnel |
| Apprentissage | 85% | ✅ Fonctionnel |
| **Rejeu intelligent** | **90%** | **✅ Fonctionnel** |
| Mode Assisté | 5% | ❌ À faire |
| Mode Autopilot | 50% | ⚠️ Partiel |
| Transitions | 10% | ❌ À faire |
| Dashboard | 20% | ⚠️ Basique |

**Avancement global** : ~60%

## 📚 Documentation

- **`DEMARRAGE_RAPIDE_MVP.md`** : Guide de démarrage complet
- **`MODIFICATIONS_MVP.md`** : Changements récents
- **`CHANGELOG_MVP.md`** : Historique des versions
- **`état_avancement_18_11.md`** : État détaillé du projet
- **`MVP_COMPLET_REJEU.md`** : Documentation du système de rejeu
- **`geniusia2/core/TASK_REPLAY_README.md`** : API de rejeu

## 🤝 Contribution

Le projet est en phase MVP. Les contributions sont bienvenues pour :

- Améliorer la recherche visuelle (multi-échelle)
- Implémenter le mode Assisté
- Ajouter des tests
- Optimiser les performances

## 📝 Licence

[À définir]

## 🆘 Support

En cas de problème :

1. Vérifier les logs : `cat geniusia2/data/logs/logs_$(date +%Y-%m-%d).json`
2. Diagnostic : `python3 diagnostic_data.py`
3. Vérifier FAISS : `python -c "import faiss; print('OK')"`

## ✅ Checklist de Démarrage

- [ ] Python 3.8+ installé
- [ ] Ollama installé et démarré
- [ ] Modèle Gemma3 téléchargé
- [ ] Environnement virtuel créé (`./setup.sh`)
- [ ] FAISS installé (`./install_faiss.sh`)
- [ ] Index FAISS créé (`python3 rebuild_faiss_simple.py`)
- [ ] Application testée (`./run.sh`)

**Prêt à l'emploi ! 🎉**
