Initial commit
This commit is contained in:
353
docs/guides/README_MVP.md
Normal file
353
docs/guides/README_MVP.md
Normal file
@@ -0,0 +1,353 @@
|
||||
# 🤖 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 ! 🎉**
|
||||
Reference in New Issue
Block a user