feat: replay E2E fonctionnel — 25/25 actions, 0 retries, SomEngine via serveur

Validé sur PC Windows (DESKTOP-58D5CAC, 2560x1600) :
- 8 clics résolus visuellement (1 anchor_template, 1 som_text_match, 6 som_vlm)
- Score moyen 0.75, temps moyen 1.6s
- Texte tapé correctement (bonjour, test word, date, email)
- 0 retries, 2 actions non vérifiées (OK)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-03-31 14:04:41 +02:00
parent 5e0b53cfd1
commit a7de6a488b
79542 changed files with 6091757 additions and 1 deletions

View File

@@ -0,0 +1,44 @@
#!/bin/bash
# TEST_NOW.sh
# Script ultra-simple pour tester le serveur immédiatement
echo "🚀 RPA Vision V3 - Test Rapide"
echo "================================"
echo ""
# 1. Vérifier l'environnement
if [ ! -d "venv_v3" ]; then
echo "❌ Environnement virtuel non trouvé"
exit 1
fi
source venv_v3/bin/activate
# 2. Vérifier les dépendances
echo "📦 Vérification dépendances..."
python -c "import fastapi, flask, cryptography" 2>/dev/null
if [ $? -ne 0 ]; then
echo "⚠️ Installation des dépendances..."
pip install -q fastapi 'uvicorn[standard]' python-multipart flask cryptography
fi
echo "✅ Dépendances OK"
echo ""
# 3. Lancer les tests
echo "🧪 Lancement des tests..."
pytest tests/integration/test_server_pipeline.py -v --tb=short 2>&1 | grep -E "(PASSED|FAILED|passed|failed)"
echo ""
# 4. Démarrer le serveur
echo "🚀 Démarrage du serveur..."
echo ""
echo "📝 Commandes disponibles:"
echo " - Démarrer: ./server/start_all.sh"
echo " - Dashboard: xdg-open http://localhost:5001"
echo " - Test API: curl http://localhost:8000/api/traces/status"
echo ""
echo "📚 Documentation:"
echo " - Quick Start: QUICK_START_SERVER.md"
echo " - Guide complet: SERVER_READY_TO_TEST.md"
echo ""
echo "✅ Prêt pour les tests!"

View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Nettoyage des fichiers JSON orphelins (sessions traitées avant Phase 3)
# Ces fichiers ont déjà leurs screen_states créés, ils sont donc inutiles
echo "=== Nettoyage des JSON Orphelins ==="
echo ""
echo "Fichiers à supprimer (sessions déjà traitées) :"
find /opt/rpa_vision_v3/data/training/sessions -name "session_*.json" -type f
echo ""
read -p "Supprimer ces 9 fichiers ? (o/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Oo]$ ]]
then
echo "Suppression en cours..."
find /opt/rpa_vision_v3/data/training/sessions -name "session_*.json" -type f -delete
echo "✅ Nettoyage terminé"
echo ""
echo "Vérification :"
echo "JSON restants : $(find /opt/rpa_vision_v3/data/training/sessions -name "session_*.json" -type f | wc -l)"
echo "Screen states conservés : $(find /opt/rpa_vision_v3/data/training/screen_states -name "*.json" -type f | wc -l)"
else
echo "❌ Nettoyage annulé"
fi

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# Création du cache HuggingFace pour l'utilisateur rpa
set -e
echo "📦 Création du Cache HuggingFace"
echo "================================="
echo ""
if [ "$EUID" -ne 0 ]; then
echo "❌ Ce script doit être exécuté avec sudo"
echo "Usage: sudo bash create_hf_cache.sh"
exit 1
fi
# Créer le home directory si nécessaire
if [ ! -d "/home/rpa" ]; then
echo "📁 Création de /home/rpa..."
mkdir -p /home/rpa
fi
# Créer le répertoire cache HuggingFace
echo "📁 Création du répertoire cache HuggingFace..."
mkdir -p /home/rpa/.cache/huggingface
mkdir -p /home/rpa/.cache/huggingface/hub
mkdir -p /home/rpa/.cache/torch
# Définir les permissions correctes
echo "🔐 Configuration des permissions..."
chown -R rpa:rpa /home/rpa
chmod -R 755 /home/rpa/.cache
echo "✅ Cache HuggingFace créé et configuré"
echo ""
echo "📋 Vérification:"
ls -la /home/rpa/.cache/
echo ""
echo "✓ Prêt pour le téléchargement des modèles CLIP"

View File

@@ -0,0 +1,78 @@
#!/bin/bash
# Script de déploiement - Dashboard Fix Phase 1
# Corrections : chemins screenshots + route API screen_states
set -e
echo "=========================================="
echo "DASHBOARD FIX - PHASE 1"
echo "=========================================="
echo ""
# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
DEV_FILE="/home/dom/ai/rpa_vision_v3/web_dashboard_app.py"
PROD_FILE="/opt/rpa_vision_v3/web_dashboard/app.py"
BACKUP_DIR="/opt/rpa_vision_v3/web_dashboard"
echo -e "${YELLOW}Modifications appliquées :${NC}"
echo " 1. Fix chemin screenshots : session_dir/{session_id}/shots/*.png"
echo " 2. Ajout route /api/screen_states (liste les 236 screen_states)"
echo " 3. Ajout route /api/screen_states/<session_id> (détails par session)"
echo ""
# Vérifier que le fichier dev existe
if [ ! -f "$DEV_FILE" ]; then
echo -e "${RED}❌ Fichier dev non trouvé: $DEV_FILE${NC}"
exit 1
fi
echo -e "${YELLOW}Étape 1/4 : Sauvegarde du fichier prod...${NC}"
BACKUP_FILE="${BACKUP_DIR}/app.py.backup_phase1_$(date +%Y%m%d_%H%M%S)"
sudo cp "$PROD_FILE" "$BACKUP_FILE"
echo -e "${GREEN}✓ Sauvegarde créée : $BACKUP_FILE${NC}"
echo ""
echo -e "${YELLOW}Étape 2/4 : Déploiement du fichier modifié...${NC}"
sudo cp "$DEV_FILE" "$PROD_FILE"
sudo chown rpa:rpa "$PROD_FILE"
sudo chmod 644 "$PROD_FILE"
echo -e "${GREEN}✓ Fichier déployé${NC}"
echo ""
echo -e "${YELLOW}Étape 3/4 : Redémarrage du service dashboard...${NC}"
sudo systemctl restart rpa-vision-v3-dashboard.service
sleep 2
echo -e "${GREEN}✓ Service redémarré${NC}"
echo ""
echo -e "${YELLOW}Étape 4/4 : Vérification du service...${NC}"
if sudo systemctl is-active --quiet rpa-vision-v3-dashboard.service; then
echo -e "${GREEN}✓ Service actif${NC}"
else
echo -e "${RED}❌ Service non actif !${NC}"
echo ""
echo "Logs d'erreur :"
sudo journalctl -u rpa-vision-v3-dashboard -n 20 --no-pager
exit 1
fi
echo ""
echo "=========================================="
echo -e "${GREEN}DÉPLOIEMENT RÉUSSI !${NC}"
echo "=========================================="
echo ""
echo "Tests à effectuer :"
echo " 1. curl http://localhost:5001/api/screen_states | python3 -m json.tool | head -50"
echo " 2. curl http://localhost:5001/api/agent/sessions | python3 -m json.tool | head -50"
echo " 3. Ouvrir http://localhost:5001 dans le navigateur"
echo ""
echo "Attendu :"
echo " - Screenshots count > 0 pour les sessions non nettoyées"
echo " - /api/screen_states retourne 236 screen_states"
echo " - Aucune erreur dans les anciennes routes"
echo ""

View File

@@ -0,0 +1,218 @@
#!/bin/bash
# Script de déploiement de la correction api_tokens.py
# Basé sur le plan approuvé
set -e
echo "🚀 RPA Vision V3 - Déploiement Correction Authentification"
echo "==========================================================="
echo ""
# Vérifier qu'on est bien root ou avec sudo
if [ "$EUID" -ne 0 ]; then
echo "❌ Ce script doit être exécuté avec sudo"
echo "Usage: sudo bash deploy_fix.sh"
exit 1
fi
# ============================================================================
# ÉTAPE 1 : Sauvegarde du Code Actuel
# ============================================================================
echo "📦 ÉTAPE 1/5 : Sauvegarde du code production actuel"
echo "---------------------------------------------------"
BACKUP_DIR="/opt/rpa_vision_v3/core/security.backup_$(date +%Y%m%d_%H%M%S)"
echo "Création de la sauvegarde dans: $BACKUP_DIR"
if [ -d /opt/rpa_vision_v3/core/security ]; then
cp -r /opt/rpa_vision_v3/core/security "$BACKUP_DIR"
echo "✅ Sauvegarde créée avec succès"
else
echo "❌ Répertoire /opt/rpa_vision_v3/core/security introuvable!"
exit 1
fi
echo ""
# ============================================================================
# ÉTAPE 2 : Déploiement du Code Mis à Jour
# ============================================================================
echo "📂 ÉTAPE 2/5 : Déploiement du code mis à jour"
echo "----------------------------------------------"
SOURCE_FILE="/home/dom/ai/rpa_vision_v3/core/security/api_tokens.py"
DEST_FILE="/opt/rpa_vision_v3/core/security/api_tokens.py"
if [ ! -f "$SOURCE_FILE" ]; then
echo "❌ Fichier source introuvable: $SOURCE_FILE"
exit 1
fi
echo "Copie de $SOURCE_FILE"
echo " vers $DEST_FILE"
cp "$SOURCE_FILE" "$DEST_FILE"
echo "✅ Fichier copié"
# Correction des permissions
echo "Correction des permissions..."
chown rpa:rpa "$DEST_FILE"
chmod 644 "$DEST_FILE"
echo "✅ Permissions configurées (rpa:rpa, 644)"
echo ""
# ============================================================================
# ÉTAPE 3 : Redémarrage des Services
# ============================================================================
echo "🔄 ÉTAPE 3/5 : Redémarrage des services"
echo "---------------------------------------"
echo "Rechargement de la configuration systemd..."
systemctl daemon-reload
echo "✅ Configuration rechargée"
echo ""
SERVICES=(
"rpa-vision-v3-api.service"
"rpa-vision-v3-worker.service"
"rpa-vision-v3-dashboard.service"
)
echo "Redémarrage des services..."
for service in "${SERVICES[@]}"; do
echo -n "$service... "
if systemctl restart "$service" 2>/dev/null; then
echo "✅"
else
echo "❌ ERREUR"
echo ""
echo "Erreur lors du redémarrage de $service"
echo "Voir les logs: sudo journalctl -u $service -n 50"
exit 1
fi
done
echo ""
echo "⏳ Attente du démarrage complet (5 secondes)..."
sleep 5
echo ""
# Vérifier le statut des services
echo "Vérification du statut des services:"
for service in "${SERVICES[@]}"; do
status=$(systemctl is-active "$service" 2>/dev/null || echo "failed")
if [ "$status" = "active" ]; then
echo "$service: $status"
else
echo "$service: $status"
echo " Logs: sudo journalctl -u $service -n 20"
fi
done
echo ""
# ============================================================================
# ÉTAPE 4 : Vérification des Logs
# ============================================================================
echo "📋 ÉTAPE 4/5 : Vérification du chargement des tokens"
echo "----------------------------------------------------"
echo "Recherche de 'TokenManager initialized' dans les logs..."
TOKEN_LOG=$(journalctl -u rpa-vision-v3-api -n 100 --no-pager | grep -i "tokenmanager initialized" | tail -1)
if [ -n "$TOKEN_LOG" ]; then
echo "$TOKEN_LOG"
if echo "$TOKEN_LOG" | grep -q "2 admin tokens, 2 read-only tokens"; then
echo "✅ SUCCÈS : TokenManager a chargé 2 admin tokens et 2 read-only tokens"
elif echo "$TOKEN_LOG" | grep -q "0 admin tokens"; then
echo "❌ ÉCHEC : TokenManager affiche 0 admin tokens"
echo " Le code n'a peut-être pas été mis à jour correctement"
echo ""
echo "Vérification du fichier déployé:"
grep -n "prod_admin_token" "$DEST_FILE" | head -2
else
echo "⚠️ AVERTISSEMENT : Nombre de tokens inattendu"
echo "$TOKEN_LOG"
fi
else
echo "❌ Aucune ligne 'TokenManager initialized' trouvée dans les logs"
echo " Le service ne s'est peut-être pas démarré correctement"
echo ""
echo "Dernières lignes des logs:"
journalctl -u rpa-vision-v3-api -n 10 --no-pager
fi
echo ""
# ============================================================================
# ÉTAPE 5 : Test de l'API
# ============================================================================
echo "🌐 ÉTAPE 5/5 : Test de l'authentification API"
echo "---------------------------------------------"
echo "Test 1: Requête sans authentification (devrait retourner unauthorized)"
RESPONSE_NO_AUTH=$(curl -s http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
echo " Réponse: $RESPONSE_NO_AUTH"
if echo "$RESPONSE_NO_AUTH" | grep -q "unauthorized"; then
echo " ✅ Comportement correct (unauthorized sans token)"
else
echo " ⚠️ Réponse inattendue"
fi
echo ""
echo "Test 2: Requête avec token admin"
ADMIN_TOKEN="73cf0db73f9a5064e79afebba96c85338be65cc2060b9c1d42c3ea5dd7d4e490"
RESPONSE_WITH_AUTH=$(curl -s -H "Authorization: Bearer $ADMIN_TOKEN" http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
echo " Réponse: $RESPONSE_WITH_AUTH"
if echo "$RESPONSE_WITH_AUTH" | grep -q '"status"'; then
echo " ✅ SUCCÈS : Authentification fonctionnelle!"
echo ""
echo "════════════════════════════════════════════════════════════"
echo "✅ DÉPLOIEMENT RÉUSSI - Authentification Opérationnelle"
echo "════════════════════════════════════════════════════════════"
elif echo "$RESPONSE_WITH_AUTH" | grep -q "unauthorized"; then
echo " ❌ ÉCHEC : Authentification retourne toujours unauthorized"
echo ""
echo "════════════════════════════════════════════════════════════"
echo "❌ DÉPLOIEMENT INCOMPLET - Investigation Nécessaire"
echo "════════════════════════════════════════════════════════════"
echo ""
echo "💡 Actions de débogage:"
echo " 1. Vérifier les logs: sudo journalctl -u rpa-vision-v3-api -n 100"
echo " 2. Vérifier le code déployé: grep -n 'prod_admin_token' $DEST_FILE"
echo " 3. Restaurer si nécessaire: sudo cp -r $BACKUP_DIR /opt/rpa_vision_v3/core/security"
else
echo " ⚠️ Réponse inattendue: $RESPONSE_WITH_AUTH"
fi
echo ""
# ============================================================================
# RÉSUMÉ
# ============================================================================
echo "📊 RÉSUMÉ DU DÉPLOIEMENT"
echo "========================"
echo ""
echo "Sauvegarde: $BACKUP_DIR"
echo "Code déployé: $DEST_FILE"
echo ""
echo "Services:"
for service in "${SERVICES[@]}"; do
status=$(systemctl is-active "$service" 2>/dev/null || echo "failed")
echo " - $service: $status"
done
echo ""
if echo "$RESPONSE_WITH_AUTH" | grep -q '"status"'; then
echo "✅ Statut Global: SUCCÈS"
echo ""
echo "🎯 Prochaines étapes:"
echo " 1. Mettre à jour .env.local: bash fix_tokens_dev.sh"
echo " 2. Tester l'agent: cd agent_v0 && ./run.sh"
echo " 3. Vérifier l'upload: ls -lh /opt/rpa_vision_v3/data/training/sessions/"
else
echo "⚠️ Statut Global: ATTENTION REQUISE"
echo ""
echo "💡 Si le problème persiste, restaurer la sauvegarde:"
echo " sudo cp -r $BACKUP_DIR /opt/rpa_vision_v3/core/security"
echo " sudo systemctl restart rpa-vision-v3-*.service"
fi
echo ""

View File

@@ -0,0 +1,63 @@
#!/bin/bash
# Script de déploiement: Optimisations image preprocessing + prompt strict
# Objectif: Réduire les erreurs JSON de 1.55% à <0.5%
echo "🚀 Déploiement des optimisations VLM supplémentaires..."
echo ""
# 1. Backup du code prod actuel
echo "📦 Backup du code prod..."
sudo cp /opt/rpa_vision_v3/core/detection/ollama_client.py \
/opt/rpa_vision_v3/core/detection/ollama_client.py.backup_$(date +%Y%m%d_%H%M%S)
# 2. Déployer ollama_client.py avec les optimisations
echo "📂 Déploiement ollama_client.py..."
sudo cp /home/dom/ai/rpa_vision_v3/core/detection/ollama_client.py \
/opt/rpa_vision_v3/core/detection/ollama_client.py
# 3. Vérifier permissions
sudo chown rpa:rpa /opt/rpa_vision_v3/core/detection/ollama_client.py
sudo chmod 644 /opt/rpa_vision_v3/core/detection/ollama_client.py
echo ""
echo "✅ Fichiers déployés"
echo ""
# 4. Vérifier que les optimisations sont présentes
echo "🔍 Vérification des optimisations..."
if grep -q "Sauvegarder en JPEG qualité 90" /opt/rpa_vision_v3/core/detection/ollama_client.py; then
echo " ✅ Prétraitement image (JPEG + redimensionnement)"
else
echo " ❌ Prétraitement image NON trouvé"
fi
if grep -q "Your ONLY task is to output valid JSON" /opt/rpa_vision_v3/core/detection/ollama_client.py; then
echo " ✅ Prompt \"zéro tolérance\""
else
echo " ❌ Prompt strict NON trouvé"
fi
echo ""
echo "🔄 Redémarrage du worker..."
sudo systemctl restart rpa-vision-v3-worker.service
# Attendre que le service démarre
sleep 3
# Vérifier statut
if systemctl is-active --quiet rpa-vision-v3-worker.service; then
echo "✅ Worker redémarré avec succès"
else
echo "❌ Erreur: Worker n'a pas redémarré"
exit 1
fi
echo ""
echo "🎉 Déploiement terminé!"
echo ""
echo "📊 Optimisations actives:"
echo " - Prétraitement image: Redimensionnement max 1280px + JPEG Q90"
echo " - Prompt strict: System prompt \"zéro tolérance\" pour JSON pur"
echo ""
echo "🧪 Prêt pour session test finale!"
echo " Objectif: <0.5% erreurs JSON (baseline: 1.55%)"

View File

@@ -0,0 +1,88 @@
#!/bin/bash
# Script de déploiement: support format='json' + qwen2.5vl:7b
set -e
echo "=========================================="
echo "Déploiement: Optimisations VLM JSON"
echo "=========================================="
echo ""
echo "📋 Changements:"
echo " - Ajout support format='json' dans Ollama"
echo " - Changement modèle: qwen3-vl:8b → qwen2.5vl:7b"
echo " - Correction sauvegarde workflow (to_dict vs to_json)"
echo " - Réduction attendue erreurs JSON: 80% → <5%"
echo ""
# 1. Déployer storage_manager.py avec correction workflow
echo "1⃣ Déploiement storage_manager.py (fix workflow save)..."
sudo cp /home/dom/ai/rpa_vision_v3/core/persistence/storage_manager.py \
/opt/rpa_vision_v3/core/persistence/storage_manager.py
sudo chown rpa:rpa /opt/rpa_vision_v3/core/persistence/storage_manager.py
echo " ✅ storage_manager.py déployé"
echo ""
# 2. Déployer ollama_client.py avec format='json'
echo "2⃣ Déploiement ollama_client.py..."
sudo cp /home/dom/ai/rpa_vision_v3/core/detection/ollama_client.py \
/opt/rpa_vision_v3/core/detection/ollama_client.py
sudo chown rpa:rpa /opt/rpa_vision_v3/core/detection/ollama_client.py
echo " ✅ ollama_client.py déployé"
echo ""
# 3. Déployer ui_detector.py avec qwen2.5vl:7b
echo "3⃣ Déploiement ui_detector.py..."
sudo cp /home/dom/ai/rpa_vision_v3/core/detection/ui_detector.py \
/opt/rpa_vision_v3/core/detection/ui_detector.py
sudo chown rpa:rpa /opt/rpa_vision_v3/core/detection/ui_detector.py
echo " ✅ ui_detector.py déployé"
echo ""
# 4. Vérifier que qwen2.5vl:7b est disponible
echo "4⃣ Vérification du modèle qwen2.5vl:7b..."
if curl -s http://localhost:11434/api/tags | grep -q "qwen2.5vl:7b"; then
echo " ✅ qwen2.5vl:7b disponible"
else
echo " ⚠️ qwen2.5vl:7b non trouvé, téléchargement..."
ollama pull qwen2.5vl:7b
fi
echo ""
# 5. Redémarrer le worker
echo "5⃣ Redémarrage du worker..."
sudo systemctl restart rpa-vision-v3-worker.service
sleep 3
echo ""
# 6. Vérifier le statut
echo "6⃣ Vérification du statut..."
if sudo systemctl is-active --quiet rpa-vision-v3-worker.service; then
echo " ✅ Worker redémarré avec succès"
else
echo " ❌ Erreur: le worker n'est pas actif"
sudo systemctl status rpa-vision-v3-worker.service --no-pager | tail -10
exit 1
fi
echo ""
# 7. Vérifier les logs de démarrage
echo "7⃣ Vérification de l'initialisation..."
sleep 2
sudo journalctl -u rpa-vision-v3-worker --since "10 seconds ago" --no-pager | grep -E "(qwen|VLM initialized)" | tail -3
echo ""
echo "=========================================="
echo "✅ Déploiement terminé!"
echo "=========================================="
echo ""
echo "📊 Pour tester:"
echo " 1. Lancer une nouvelle session avec l'agent V0"
echo " 2. Surveiller les logs pour vérifier:"
echo " - Modèle chargé: qwen2.5vl:7b"
echo " - Erreurs JSON: devrait être <5%"
echo " - Vitesse: devrait être 2x plus rapide"
echo ""
echo "🔍 Commande de surveillance:"
echo " journalctl -u rpa-vision-v3-worker -f | grep -E '(JSON parse error|Detected.*UI elements|qwen)'"
echo ""

View File

@@ -0,0 +1,70 @@
#!/bin/bash
# Déploiement Option B - FAISS + GraphBuilder
# Corrections pour workflows automatiques
set -e # Stop on error
echo "=== Déploiement Option B - Workflows Automatiques ==="
echo ""
# Couleurs
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${BLUE}1. Sauvegarde des fichiers actuels${NC}"
sudo cp /opt/rpa_vision_v3/server/processing_pipeline.py \
/opt/rpa_vision_v3/server/processing_pipeline.py.backup_$(date +%Y%m%d_%H%M%S)
echo " ✓ processing_pipeline.py sauvegardé"
sudo cp /opt/rpa_vision_v3/core/graph/graph_builder.py \
/opt/rpa_vision_v3/core/graph/graph_builder.py.backup_$(date +%Y%m%d_%H%M%S)
echo " ✓ graph_builder.py sauvegardé"
echo ""
echo -e "${BLUE}2. Déploiement des corrections${NC}"
# Correction FAISS (typo dimension → dimensions)
sudo cp /home/dom/ai/rpa_vision_v3/processing_pipeline.py \
/opt/rpa_vision_v3/server/processing_pipeline.py
sudo chown rpa:rpa /opt/rpa_vision_v3/server/processing_pipeline.py
echo " ✓ processing_pipeline.py déployé (fix FAISS)"
# Correction GraphBuilder (nouvelle API ScreenTemplate)
sudo cp /home/dom/ai/rpa_vision_v3/graph_builder.py \
/opt/rpa_vision_v3/core/graph/graph_builder.py
sudo chown rpa:rpa /opt/rpa_vision_v3/core/graph/graph_builder.py
echo " ✓ graph_builder.py déployé (Option B progressive)"
echo ""
echo -e "${BLUE}3. Création du dossier prototypes${NC}"
sudo mkdir -p /opt/rpa_vision_v3/data/training/prototypes
sudo chown -R rpa:rpa /opt/rpa_vision_v3/data/training/prototypes
echo " ✓ /opt/rpa_vision_v3/data/training/prototypes créé"
echo ""
echo -e "${BLUE}4. Redémarrage du worker${NC}"
sudo systemctl restart rpa-vision-v3-worker.service
sleep 2
echo " ✓ Worker redémarré"
echo ""
echo -e "${BLUE}5. Vérification du statut${NC}"
if systemctl is-active --quiet rpa-vision-v3-worker.service; then
echo -e " ${GREEN}✓ Worker actif${NC}"
else
echo -e " ${YELLOW}⚠ Worker non actif, vérifier logs${NC}"
sudo journalctl -u rpa-vision-v3-worker -n 20 --no-pager
exit 1
fi
echo ""
echo -e "${GREEN}=== Déploiement terminé avec succès ===${NC}"
echo ""
echo "Prochaines étapes:"
echo " 1. Tester sur une nouvelle session : cd /home/dom/ai/rpa_vision_v3/agent_v0 && ./run.sh"
echo " 2. Ou reprocesser sessions existantes : bash /home/dom/ai/rpa_vision_v3/reprocess_sessions.sh"
echo ""
echo "Logs à surveiller:"
echo " journalctl -u rpa-vision-v3-worker -f | grep -E '(Embeddings|Workflow|FAISS)'"

View File

@@ -0,0 +1,84 @@
#!/bin/bash
# Diagnostic approfondi du problème d'authentification
echo "🔍 DIAGNOSTIC APPROFONDI - Authentification RPA Vision V3"
echo "=========================================================="
echo ""
echo "1⃣ VÉRIFICATION DU FICHIER DE CONFIGURATION"
echo "-------------------------------------------"
if [ -f /etc/rpa_vision_v3/rpa_vision_v3.env ]; then
echo "✅ Fichier existe: /etc/rpa_vision_v3/rpa_vision_v3.env"
echo ""
echo "Contenu des variables RPA_TOKEN:"
sudo cat /etc/rpa_vision_v3/rpa_vision_v3.env | grep "RPA_TOKEN" || echo "❌ Aucune variable RPA_TOKEN trouvée"
else
echo "❌ Fichier /etc/rpa_vision_v3/rpa_vision_v3.env introuvable!"
fi
echo ""
echo "2⃣ STATUT DES SERVICES"
echo "----------------------"
for service in rpa-vision-v3-api rpa-vision-v3-worker rpa-vision-v3-dashboard; do
status=$(systemctl is-active $service 2>/dev/null || echo "inactive")
echo "$service: $status"
done
echo ""
echo "3⃣ LOGS DE L'API (50 dernières lignes pertinentes)"
echo "--------------------------------------------------"
echo "Recherche de 'TokenManager' dans les logs:"
sudo journalctl -u rpa-vision-v3-api -n 200 --no-pager | grep -i "tokenmanager" | tail -10
echo ""
echo "Recherche de 'admin token' dans les logs:"
sudo journalctl -u rpa-vision-v3-api -n 200 --no-pager | grep -i "admin token" | tail -10
echo ""
echo "Recherche de 'unauthorized' dans les logs:"
sudo journalctl -u rpa-vision-v3-api -n 200 --no-pager | grep -i "unauthorized" | tail -5
echo ""
echo "4⃣ PROCESSUS API EN COURS"
echo "-------------------------"
ps aux | grep -E "api_upload.py|uvicorn" | grep -v grep || echo "Aucun processus API trouvé"
echo ""
echo "5⃣ TEST API DÉTAILLÉ"
echo "--------------------"
echo "Test sans authentification:"
curl -s http://localhost:8000/api/traces/status 2>/dev/null || echo "❌ API non accessible"
echo ""
echo ""
echo "Test avec token hardcodé:"
curl -s -H "Authorization: Bearer 73cf0db73f9a5064e79afebba96c85338be65cc2060b9c1d42c3ea5dd7d4e490" \
http://localhost:8000/api/traces/status 2>/dev/null || echo "❌ API non accessible"
echo ""
echo ""
echo "6⃣ VÉRIFICATION DU CODE api_tokens.py"
echo "-------------------------------------"
if [ -f /opt/rpa_vision_v3/core/security/api_tokens.py ]; then
echo "Ligne 93-96 (tokens hardcodés):"
sed -n '93,96p' /opt/rpa_vision_v3/core/security/api_tokens.py
else
echo "❌ Fichier api_tokens.py non trouvé dans /opt/rpa_vision_v3/"
fi
echo ""
echo "7⃣ RECOMMANDATIONS"
echo "------------------"
echo "Si TokenManager affiche '0 admin tokens, 0 read-only tokens':"
echo " → Le problème est dans le chargement des variables d'environnement"
echo ""
echo "Si TokenManager affiche '2 admin tokens, 2 read-only tokens':"
echo " → Le problème est dans la validation du token"
echo ""
echo "Si aucune ligne TokenManager n'apparaît:"
echo " → L'API n'a pas redémarré correctement"
echo ""
echo "✅ Diagnostic terminé"
echo ""
echo "💡 Pour forcer un redémarrage complet:"
echo " sudo systemctl daemon-reload"
echo " sudo systemctl restart rpa-vision-v3-api"
echo " sudo journalctl -u rpa-vision-v3-api -f"

View File

@@ -0,0 +1,79 @@
#!/bin/bash
# Script pour désactiver le nettoyage prématuré des screenshots
# POC/MVP : Les screenshots doivent rester jusqu'après l'apprentissage
set -e
echo "🔧 Désactivation du Nettoyage Prématuré des Screenshots"
echo "========================================================"
echo ""
if [ "$EUID" -ne 0 ]; then
echo "❌ Ce script doit être exécuté avec sudo"
echo "Usage: sudo bash disable_premature_cleanup.sh"
exit 1
fi
FILE="/opt/rpa_vision_v3/server/processing_pipeline.py"
# Créer une sauvegarde
BACKUP="${FILE}.backup_$(date +%Y%m%d_%H%M%S)"
echo "💾 Création sauvegarde: $BACKUP"
cp "$FILE" "$BACKUP"
echo "✓ Sauvegarde créée"
echo ""
# Commenter la ligne de nettoyage (ligne 164)
echo "🔧 Modification du fichier..."
sed -i '164s/^ self._cleanup_raw_files/ # DISABLED for POC\/MVP: self._cleanup_raw_files/' "$FILE"
# Vérifier la modification
if grep -q "# DISABLED for POC/MVP: self._cleanup_raw_files" "$FILE"; then
echo "✅ Ligne de nettoyage désactivée avec succès"
else
echo "❌ Erreur lors de la modification"
echo "Restauration de la sauvegarde..."
cp "$BACKUP" "$FILE"
exit 1
fi
echo ""
# Afficher le contexte
echo "📋 Contexte modifié:"
echo "-------------------"
grep -A 2 -B 2 "DISABLED for POC" "$FILE" || echo "Erreur affichage"
echo ""
# Redémarrer le worker
echo "🔄 Redémarrage du worker..."
systemctl restart rpa-vision-v3-worker.service
sleep 3
# Vérifier le statut
STATUS=$(systemctl is-active rpa-vision-v3-worker.service)
if [ "$STATUS" = "active" ]; then
echo "✅ Worker redémarré avec succès"
else
echo "❌ Worker en état: $STATUS"
echo "Voir les logs: sudo journalctl -u rpa-vision-v3-worker -n 50"
fi
echo ""
echo "✅ MODIFICATION TERMINÉE"
echo ""
echo "📝 Résumé:"
echo " - Nettoyage prématuré DÉSACTIVÉ"
echo " - Screenshots seront conservés après traitement"
echo " - Sauvegarde disponible: $BACKUP"
echo ""
echo "🎯 Prochaines étapes:"
echo " 1. Tester l'agent: cd agent_v0 && ./run.sh"
echo " 2. Vérifier les screenshots: ls -lhR /opt/rpa_vision_v3/data/training/sessions/sess_*/shots/"
echo ""
echo "💡 TODO Après POC:"
echo " - Implémenter nettoyage APRÈS apprentissage complet"
echo " - Conserver uniquement: embeddings, screen_states, workflows"
echo ""
echo "💾 Pour restaurer:"
echo " sudo cp $BACKUP $FILE"
echo " sudo systemctl restart rpa-vision-v3-worker.service"

View File

@@ -0,0 +1,78 @@
#!/bin/bash
#
# Installation des dépendances pour la capture d'écran
# Installe mss et pygetwindow si nécessaires
#
set -e
echo "============================================================"
echo "INSTALLATION DES DÉPENDANCES DE CAPTURE D'ÉCRAN"
echo "============================================================"
echo ""
# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
print_status() {
echo -e "${GREEN}[✓]${NC} $1"
}
print_info() {
echo -e "${YELLOW}[i]${NC} $1"
}
# Vérifier l'environnement virtuel
if [ ! -d "venv" ] && [ ! -d "venv_v3" ]; then
echo "Erreur: Environnement virtuel non trouvé"
echo "Exécute d'abord: python3 -m venv venv_v3"
exit 1
fi
# Activer le venv
if [ -d "venv_v3" ]; then
source venv_v3/bin/activate
print_status "Environnement venv_v3 activé"
elif [ -d "venv" ]; then
source venv/bin/activate
print_status "Environnement venv activé"
fi
# Installer mss
print_info "Installation de mss (capture d'écran rapide)..."
pip install mss>=9.0.0 --quiet
# Installer pygetwindow
print_info "Installation de pygetwindow (détection de fenêtres)..."
pip install pygetwindow>=0.0.9 --quiet
print_status "Dépendances installées avec succès"
# Vérifier l'installation
echo ""
print_info "Vérification de l'installation..."
if python -c "import mss" 2>/dev/null; then
print_status "mss est installé"
else
echo "Erreur: Impossible d'importer mss"
exit 1
fi
if python -c "import pygetwindow" 2>/dev/null; then
print_status "pygetwindow est installé"
else
echo "Erreur: Impossible d'importer pygetwindow"
exit 1
fi
echo ""
echo "============================================================"
print_status "Installation terminée avec succès!"
echo "============================================================"
echo ""
print_info "Pour tester la capture d'écran:"
echo " python examples/test_screen_capturer.py"
echo ""

View File

@@ -0,0 +1,75 @@
#!/bin/bash
# Script d'installation des dépendances pour RPA Vision V3
echo "=========================================================="
echo " Installation des dépendances - RPA Vision V3"
echo "=========================================================="
echo ""
# Vérifier Python
echo "1. Vérification de Python..."
python3 --version
if [ $? -ne 0 ]; then
echo "❌ Python 3 n'est pas installé"
exit 1
fi
echo "✓ Python 3 détecté"
echo ""
# Créer un environnement virtuel (optionnel)
read -p "Créer un environnement virtuel ? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "2. Création de l'environnement virtuel..."
python3 -m venv venv
source venv/bin/activate
echo "✓ Environnement virtuel créé et activé"
else
echo "2. Installation dans l'environnement global..."
fi
echo ""
# Mettre à jour pip
echo "3. Mise à jour de pip..."
pip install --upgrade pip
echo ""
# Installer les dépendances
echo "4. Installation des dépendances depuis requirements.txt..."
pip install -r requirements.txt
echo ""
# Vérifier les installations critiques
echo "5. Vérification des installations..."
echo " - PyTorch..."
python3 -c "import torch; print(' ✓ PyTorch version:', torch.__version__)"
echo " - OpenCLIP..."
python3 -c "import open_clip; print(' ✓ OpenCLIP installé')"
echo " - FAISS..."
python3 -c "import faiss; print(' ✓ FAISS installé')"
echo " - OpenCV..."
python3 -c "import cv2; print(' ✓ OpenCV version:', cv2.__version__)"
echo " - NumPy..."
python3 -c "import numpy; print(' ✓ NumPy version:', numpy.__version__)"
echo ""
echo "=========================================================="
echo " ✅ Installation terminée avec succès !"
echo "=========================================================="
echo ""
echo "Prochaines étapes:"
echo " 1. Tester les embedders CLIP:"
echo " python3 examples/test_clip_embedder.py"
echo ""
echo " 2. Tester le pipeline complet:"
echo " python3 examples/test_embedding_pipeline.py"
echo ""
echo " 3. Lancer les tests unitaires:"
echo " pytest tests/"
echo ""

View File

@@ -0,0 +1,59 @@
#!/bin/bash
# Installation rapide des dépendances RPA Vision V3
set -e
echo "🔧 Installation des dépendances RPA Vision V3..."
echo ""
# Vérifier si venv_v3 existe
if [ ! -d "venv_v3" ]; then
echo "📦 Création de l'environnement virtuel..."
python3 -m venv venv_v3
echo "✓ Environnement virtuel créé"
fi
# Activer venv
source venv_v3/bin/activate
echo "📦 Mise à jour de pip..."
venv_v3/bin/python3 -m pip install --upgrade pip -q
echo "📦 Installation des dépendances principales..."
venv_v3/bin/python3 -m pip install numpy>=1.24.0 Pillow>=10.0.0 scikit-learn>=1.3.0 requests>=2.31.0
echo "📦 Installation de PyTorch (CPU)..."
venv_v3/bin/python3 -m pip install torch>=2.0.0 torchvision>=0.15.0 --index-url https://download.pytorch.org/whl/cpu
echo "📦 Installation de FAISS..."
venv_v3/bin/python3 -m pip install faiss-cpu>=1.7.4
echo "📦 Installation de OpenCLIP..."
venv_v3/bin/python3 -m pip install open_clip_torch>=2.20.0 transformers>=4.30.0
echo "📦 Installation des outils de capture d'écran..."
venv_v3/bin/python3 -m pip install mss>=9.0.0 pyautogui>=0.9.54 pygetwindow>=0.0.9 opencv-python>=4.8.0
echo "📦 Installation de PyQt5 pour l'interface..."
venv_v3/bin/python3 -m pip install PyQt5>=5.15.0
echo "📦 Installation des outils de test..."
venv_v3/bin/python3 -m pip install pytest>=7.0.0 pytest-cov>=4.0.0
echo "📦 Installation de Flask pour le dashboard..."
venv_v3/bin/python3 -m pip install Flask==3.0.0
echo ""
echo "✅ Installation terminée !"
echo ""
echo "Pour utiliser l'environnement :"
echo " source venv_v3/bin/activate"
echo ""
echo "Pour lancer l'application :"
echo " ./run.sh"
echo ""
# Marquer comme installé
touch .deps_installed
deactivate

View File

@@ -0,0 +1,382 @@
#!/bin/bash
# 🚀 RPA Vision V3 - Lanceur Complet
# Auteur : Dom, Alice Kiro
# Date : 22 décembre 2024
set -e
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# Configuration
MAIN_DIR=$(pwd)
VWB_DIR="$MAIN_DIR/visual_workflow_builder"
LOGS_DIR="$MAIN_DIR/logs"
# Fonction d'affichage
print_header() {
echo -e "${PURPLE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ 🚀 RPA Vision V3 - Lanceur Complet 🚀 ║"
echo "║ Tous les services en une seule commande ║"
echo "║ 🧹 Nettoyage automatique + Backend + Frontend ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
}
# Fonction de nettoyage des processus existants
cleanup_existing_processes() {
echo -e "${BLUE}[0/6] Nettoyage des processus existants...${NC}"
local processes_killed=0
# Fonction pour tuer un processus sur un port spécifique
kill_process_on_port() {
local port=$1
local service_name=$2
local pid=$(lsof -ti:$port 2>/dev/null)
if [ ! -z "$pid" ]; then
echo -e "${YELLOW}🔍 Processus trouvé sur le port $port (PID: $pid) - $service_name${NC}"
kill -9 $pid 2>/dev/null || true
sleep 1
# Vérifier si le processus est vraiment arrêté
if ! kill -0 $pid 2>/dev/null; then
echo -e "${GREEN}✓ Processus $service_name arrêté (port $port)${NC}"
processes_killed=$((processes_killed + 1))
else
echo -e "${RED}⚠ Impossible d'arrêter le processus sur le port $port${NC}"
fi
fi
}
# Tuer les processus sur les ports utilisés
kill_process_on_port 3000 "React Dev Server"
kill_process_on_port 5001 "Flask Dashboard"
kill_process_on_port 5002 "VWB Backend"
kill_process_on_port 8000 "API REST"
# Tuer les processus webpack spécifiques (cause des problèmes TypeScript)
local webpack_pids=$(pgrep -f "webpack.*serve\|webpack-dev-server\|react-scripts.*start" 2>/dev/null || true)
if [ ! -z "$webpack_pids" ]; then
echo -e "${YELLOW}🔍 Processus webpack trouvés: $webpack_pids${NC}"
echo "$webpack_pids" | xargs -r kill -9 2>/dev/null || true
processes_killed=$((processes_killed + 1))
echo -e "${GREEN}✓ Processus webpack arrêtés${NC}"
fi
# Tuer les processus Python spécifiques
local python_pids=$(pgrep -f "python.*app\.py\|python.*server\|python.*dashboard" 2>/dev/null || true)
if [ ! -z "$python_pids" ]; then
echo -e "${YELLOW}🔍 Processus Python trouvés: $python_pids${NC}"
echo "$python_pids" | xargs -r kill -9 2>/dev/null || true
processes_killed=$((processes_killed + 1))
echo -e "${GREEN}✓ Processus Python arrêtés${NC}"
fi
# Tuer les processus Node.js spécifiques
local node_pids=$(pgrep -f "node.*start\|npm.*start" 2>/dev/null || true)
if [ ! -z "$node_pids" ]; then
echo -e "${YELLOW}🔍 Processus Node.js trouvés: $node_pids${NC}"
echo "$node_pids" | xargs -r kill -9 2>/dev/null || true
processes_killed=$((processes_killed + 1))
echo -e "${GREEN}✓ Processus Node.js arrêtés${NC}"
fi
if [ $processes_killed -gt 0 ]; then
echo -e "${GREEN}$processes_killed type(s) de processus nettoyés${NC}"
echo -e "${CYAN}⏳ Attente de 3 secondes pour la libération des ports...${NC}"
sleep 3
# Vérifier que les ports sont bien libérés
echo -e "${CYAN}🔍 Vérification de la libération des ports...${NC}"
for port in 3000 5001 5002 8000; do
if lsof -ti:$port >/dev/null 2>&1; then
echo -e "${RED}⚠ Le port $port est encore occupé${NC}"
else
echo -e "${GREEN}✓ Port $port libéré${NC}"
fi
done
else
echo -e "${GREEN}✓ Aucun processus existant à nettoyer${NC}"
fi
}
# Fonction de nettoyage (pour Ctrl+C)
cleanup() {
echo -e "\n${YELLOW}🛑 Arrêt de tous les services...${NC}"
# Arrêter tous les processus en arrière-plan
jobs -p | xargs -r kill 2>/dev/null || true
# Arrêter les services spécifiques
pkill -f "python.*server" 2>/dev/null || true
pkill -f "python.*dashboard" 2>/dev/null || true
pkill -f "npm.*start" 2>/dev/null || true
pkill -f "node.*server" 2>/dev/null || true
pkill -f "webpack.*serve" 2>/dev/null || true
echo -e "${GREEN}✓ Tous les services arrêtés${NC}"
exit 0
}
# Capturer Ctrl+C
trap cleanup SIGINT SIGTERM
# Fonction de vérification des prérequis
check_prerequisites() {
echo -e "${BLUE}[1/7] Vérification des prérequis...${NC}"
# Vérifier Python
if ! command -v python3 &> /dev/null; then
echo -e "${RED}❌ Python3 non trouvé${NC}"
exit 1
fi
# Vérifier Node.js
if ! command -v node &> /dev/null; then
echo -e "${RED}❌ Node.js non trouvé${NC}"
exit 1
fi
# Vérifier npm
if ! command -v npm &> /dev/null; then
echo -e "${RED}❌ npm non trouvé${NC}"
exit 1
fi
# Vérifier l'environnement virtuel
if [ ! -d "venv_v3" ]; then
echo -e "${RED}❌ Environnement virtuel venv_v3 non trouvé${NC}"
exit 1
fi
echo -e "${GREEN}✓ Tous les prérequis sont satisfaits${NC}"
}
# Fonction de préparation des répertoires
prepare_directories() {
echo -e "${BLUE}[2/7] Préparation des répertoires...${NC}"
# Créer le répertoire de logs
mkdir -p "$LOGS_DIR"
# Vérifier le Visual Workflow Builder
if [ ! -d "$VWB_DIR" ]; then
echo -e "${RED}❌ Visual Workflow Builder non trouvé dans $VWB_DIR${NC}"
exit 1
fi
echo -e "${GREEN}✓ Répertoires préparés${NC}"
}
# Fonction de démarrage du backend principal
start_main_backend() {
echo -e "${BLUE}[3/7] Démarrage du backend principal...${NC}"
cd "$MAIN_DIR"
source venv_v3/bin/activate
# Lancer l'API et le dashboard
./run.sh --all > "$LOGS_DIR/main_backend.log" 2>&1 &
MAIN_PID=$!
# Attendre que les services démarrent
echo -e "${YELLOW}⏳ Attente du démarrage des services principaux...${NC}"
sleep 8
# Vérifier que les services sont démarrés
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
echo -e "${GREEN}✓ API principale démarrée (port 8000)${NC}"
else
echo -e "${YELLOW}⚠ API principale en cours de démarrage...${NC}"
fi
if curl -s http://localhost:5001 > /dev/null 2>&1; then
echo -e "${GREEN}✓ Dashboard démarré (port 5001)${NC}"
else
echo -e "${YELLOW}⚠ Dashboard en cours de démarrage...${NC}"
fi
}
# Fonction de démarrage du Visual Workflow Builder
start_visual_workflow_builder() {
echo -e "${BLUE}[4/7] Démarrage du Visual Workflow Builder...${NC}"
cd "$VWB_DIR"
# Vérifier si les dépendances sont installées
if [ ! -d "frontend/node_modules" ]; then
echo -e "${YELLOW}📦 Installation des dépendances frontend...${NC}"
cd frontend
npm install > "$LOGS_DIR/npm_install.log" 2>&1
cd ..
fi
# Démarrer le backend VWB
echo -e "${CYAN}🔧 Démarrage du backend VWB...${NC}"
source ../venv_v3/bin/activate
python backend/app.py > "$LOGS_DIR/vwb_backend.log" 2>&1 &
VWB_BACKEND_PID=$!
# Attendre un peu
sleep 3
# Démarrer le frontend VWB
echo -e "${CYAN}🎨 Démarrage du frontend VWB...${NC}"
cd frontend
npm start > "$LOGS_DIR/vwb_frontend.log" 2>&1 &
VWB_FRONTEND_PID=$!
cd "$MAIN_DIR"
echo -e "${GREEN}✓ Visual Workflow Builder en cours de démarrage${NC}"
}
# Fonction de démarrage du monitoring des logs
start_log_monitoring() {
echo -e "${BLUE}[5/7] Démarrage du monitoring des logs...${NC}"
# Créer un script de monitoring des logs
cat > "$LOGS_DIR/monitor_logs.sh" << 'EOF'
#!/bin/bash
echo "🔍 Monitoring des logs RPA Vision V3"
echo "======================================"
echo ""
# Fonction pour afficher les logs avec couleurs
show_logs() {
local service=$1
local logfile=$2
local color=$3
if [ -f "$logfile" ]; then
echo -e "${color}=== $service ===${NC}"
tail -n 5 "$logfile" 2>/dev/null || echo "Pas encore de logs"
echo ""
fi
}
while true; do
clear
echo "🔍 Monitoring des logs RPA Vision V3 - $(date)"
echo "======================================"
echo ""
show_logs "API Principale" "main_backend.log" "\033[0;32m"
show_logs "VWB Backend" "vwb_backend.log" "\033[0;34m"
show_logs "VWB Frontend" "vwb_frontend.log" "\033[0;36m"
echo "Appuyez sur Ctrl+C pour arrêter le monitoring"
sleep 5
done
EOF
chmod +x "$LOGS_DIR/monitor_logs.sh"
echo -e "${GREEN}✓ Script de monitoring créé${NC}"
}
# Fonction d'affichage du statut final
show_final_status() {
echo -e "${BLUE}[6/7] Statut final des services...${NC}"
echo ""
echo -e "${PURPLE}🌐 Services Web Disponibles:${NC}"
echo -e "${GREEN} • API REST: http://localhost:8000${NC}"
echo -e "${GREEN} • Dashboard Web: http://localhost:5001${NC}"
echo -e "${GREEN} • Visual Workflow Builder: http://localhost:3000${NC}"
echo -e "${GREEN} • VWB Backend: http://localhost:5002${NC}"
echo ""
echo -e "${PURPLE}📊 Monitoring et Logs:${NC}"
echo -e "${CYAN} • Logs principaux: tail -f $LOGS_DIR/main_backend.log${NC}"
echo -e "${CYAN} • Logs VWB Backend: tail -f $LOGS_DIR/vwb_backend.log${NC}"
echo -e "${CYAN} • Logs VWB Frontend: tail -f $LOGS_DIR/vwb_frontend.log${NC}"
echo -e "${CYAN} • Monitoring interactif: $LOGS_DIR/monitor_logs.sh${NC}"
echo ""
echo -e "${PURPLE}🔧 Commandes Utiles:${NC}"
echo -e "${YELLOW} • Voir tous les logs: tail -f $LOGS_DIR/*.log${NC}"
echo -e "${YELLOW} • Tester l'API: curl http://localhost:8000/health${NC}"
echo -e "${YELLOW} • Arrêter tout: Ctrl+C dans ce terminal${NC}"
echo ""
echo -e "${GREEN}🎉 Tous les services sont démarrés !${NC}"
echo -e "${BLUE}📱 Ouvrez votre navigateur sur les URLs ci-dessus${NC}"
}
# Fonction de vérification finale des services
verify_services() {
echo -e "${BLUE}[7/7] Vérification finale des services...${NC}"
local all_services_ok=true
# Vérifier l'API REST
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
echo -e "${GREEN}✓ API REST opérationnelle (port 8000)${NC}"
else
echo -e "${RED}❌ API REST non accessible (port 8000)${NC}"
all_services_ok=false
fi
# Vérifier le Dashboard
if curl -s http://localhost:5001 > /dev/null 2>&1; then
echo -e "${GREEN}✓ Dashboard opérationnel (port 5001)${NC}"
else
echo -e "${RED}❌ Dashboard non accessible (port 5001)${NC}"
all_services_ok=false
fi
# Vérifier le VWB Backend
if curl -s http://localhost:5002/health > /dev/null 2>&1; then
echo -e "${GREEN}✓ VWB Backend opérationnel (port 5002)${NC}"
else
echo -e "${YELLOW}⚠ VWB Backend en cours de démarrage (port 5002)${NC}"
fi
# Vérifier le VWB Frontend (React)
if curl -s http://localhost:3000 > /dev/null 2>&1; then
echo -e "${GREEN}✓ VWB Frontend opérationnel (port 3000)${NC}"
else
echo -e "${YELLOW}⚠ VWB Frontend en cours de démarrage (port 3000)${NC}"
fi
if [ "$all_services_ok" = true ]; then
echo -e "${GREEN}🎉 Tous les services critiques sont opérationnels !${NC}"
else
echo -e "${YELLOW}⚠ Certains services sont encore en cours de démarrage${NC}"
echo -e "${CYAN}💡 Attendez quelques secondes et vérifiez manuellement les URLs${NC}"
fi
}
# Fonction principale
main() {
print_header
cleanup_existing_processes
check_prerequisites
prepare_directories
start_main_backend
start_visual_workflow_builder
start_log_monitoring
show_final_status
verify_services
echo -e "\n${YELLOW}⏳ Services en cours d'exécution... Appuyez sur Ctrl+C pour tout arrêter${NC}"
echo -e "${CYAN}💡 Tip: Ouvrez un autre terminal pour utiliser les commandes de monitoring${NC}"
# Attendre indéfiniment
while true; do
sleep 1
done
}
# Lancer le script principal
main "$@"

View File

@@ -0,0 +1,72 @@
#!/bin/bash
# RPA Vision V3 - Lanceur Unifié Corrigé
# Date: 6 janvier 2026
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
NC='\033[0m'
echo -e "${PURPLE}🎼 RPA Vision V3 - Lanceur Unifié Corrigé${NC}"
echo ""
# Nettoyage préventif
echo -e "${BLUE}[1/5] Nettoyage préventif...${NC}"
pkill -f "python.*server\|python.*dashboard\|python.*api_upload" 2>/dev/null || true
sleep 2
# Vérification environnement
echo -e "${BLUE}[2/5] Vérification environnement...${NC}"
if [ ! -d "venv_v3" ]; then
echo -e "${RED}❌ venv_v3 non trouvé${NC}"
exit 1
fi
source venv_v3/bin/activate
# Correction des problèmes identifiés
echo -e "${BLUE}[3/5] Application des corrections...${NC}"
python3 fix_system_complete.py --fix-only 2>/dev/null || true
# Choix du mode
MODE="${1:-gui}"
echo -e "${BLUE}[4/5] Lancement mode: $MODE${NC}"
case $MODE in
--server|server)
echo -e "${GREEN}🌐 Lancement API Server (port 8000)${NC}"
python3 server/api_upload.py
;;
--dashboard|dashboard)
echo -e "${PURPLE}📊 Lancement Dashboard (port 5001)${NC}"
python3 web_dashboard/app.py
;;
--agent|agent)
echo -e "${CYAN}📹 Lancement Agent V0${NC}"
cd agent_v0
../venv_v3/bin/python3 main.py
cd ..
;;
--all|all)
echo -e "${GREEN}🚀 Lancement complet${NC}"
python3 server/api_upload.py &
sleep 3
python3 web_dashboard/app.py &
sleep 2
echo -e "${GREEN}✅ Services démarrés${NC}"
echo "API: http://localhost:8000"
echo "Dashboard: http://localhost:5001"
wait
;;
--gui|gui|*)
echo -e "${CYAN}🖥️ Lancement GUI${NC}"
python3 run_gui.py
;;
esac
echo -e "${BLUE}[5/5] Terminé${NC}"

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Reprocessing manuel des 8 sessions
cd /opt/rpa_vision_v3
echo "=== Reprocessing Session 1/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T182507_3a3709d4
echo ""
echo "=== Reprocessing Session 2/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T204511_54e9bede
echo ""
echo "=== Reprocessing Session 3/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T212627_06be5789
echo ""
echo "=== Reprocessing Session 4/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T213215_e2f57334
echo ""
echo "=== Reprocessing Session 5/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T214146_9e38c4f7
echo ""
echo "=== Reprocessing Session 6/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T214543_1bb4e5ec
echo ""
echo "=== Reprocessing Session 7/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T220105_579f2e39
echo ""
echo "=== Reprocessing Session 8/8 ==="
sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python server/processing_pipeline.py sess_20260107T220743_6be50905
echo ""
echo "=== Reprocessing terminé ==="
echo ""
echo "Vérification des résultats:"
echo "Workflows:"
ls -lh /opt/rpa_vision_v3/data/training/workflows/*.json
echo ""
echo "Prototypes:"
ls -lh /opt/rpa_vision_v3/data/training/prototypes/*.npy
echo ""
echo "Embeddings:"
find /opt/rpa_vision_v3/data/training/embeddings -name "*.npy" | wc -l

View File

@@ -0,0 +1,82 @@
#!/bin/bash
# Reprocessing des 8 sessions existantes
# Génère embeddings + workflows rétroactivement
set -e
echo "=== Reprocessing Sessions Existantes ==="
echo ""
# Couleurs
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Trouver toutes les sessions dans screen_states
echo -e "${BLUE}Recherche des sessions à reprocesser...${NC}"
cd /opt/rpa_vision_v3/data/training/screen_states
# Extraire session_ids uniques depuis les screen_states
session_ids=$(find . -name "*.json" -exec grep -h '"session_id"' {} \; | \
sed 's/.*"session_id": "\(sess_[^"]*\)".*/\1/' | \
sort -u)
session_count=$(echo "$session_ids" | wc -l)
echo " ✓ Trouvé $session_count sessions à reprocesser"
echo ""
# Compter pour stats
total=0
success=0
failed=0
echo -e "${BLUE}Lancement du reprocessing...${NC}"
echo ""
for session_id in $session_ids; do
total=$((total + 1))
echo "[$total/$session_count] Processing $session_id..."
# Appeler le pipeline de traitement
if sudo -u rpa /opt/rpa_vision_v3/venv_v3/bin/python \
/opt/rpa_vision_v3/server/processing_pipeline.py "$session_id" 2>&1 | \
grep -E "(ScreenStates|Embeddings|Workflow)"; then
success=$((success + 1))
echo -e " ${GREEN}✓ Succès${NC}"
else
failed=$((failed + 1))
echo -e " ${YELLOW}⚠ Échec ou déjà traité${NC}"
fi
echo ""
done
echo ""
echo -e "${GREEN}=== Reprocessing Terminé ===${NC}"
echo ""
echo "Statistiques:"
echo " Total sessions : $total"
echo " Succès : $success"
echo " Échecs : $failed"
echo ""
echo "Vérification des résultats:"
echo ""
echo "Embeddings générés:"
embedding_count=$(find /opt/rpa_vision_v3/data/training/embeddings -name "*.npy" 2>/dev/null | wc -l)
echo " $embedding_count fichiers .npy"
echo ""
echo "Workflows créés:"
workflow_count=$(find /opt/rpa_vision_v3/data/training/workflows -name "*.json" 2>/dev/null | wc -l)
echo " $workflow_count fichiers .json"
ls -lh /opt/rpa_vision_v3/data/training/workflows/*.json 2>/dev/null || echo " (aucun)"
echo ""
echo "Prototypes sauvegardés:"
prototype_count=$(find /opt/rpa_vision_v3/data/training/prototypes -name "*.npy" 2>/dev/null | wc -l)
echo " $prototype_count fichiers .npy"
echo ""
echo "Pour voir les workflows dans le dashboard:"
echo " http://localhost:5001 → Onglet 'Workflows'"

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Script pour réinitialiser le status d'une session à "pending"
SESSION_ID="sess_20260108T114520_642f3fa9"
QUEUE_FILE="/opt/rpa_vision_v3/data/training/.processing_queue.json"
# Créer un fichier temporaire avec le status modifié
sudo python3 << 'EOF'
import json
queue_file = "/opt/rpa_vision_v3/data/training/.processing_queue.json"
session_id = "sess_20260108T114520_642f3fa9"
# Charger
with open(queue_file, 'r') as f:
queue = json.load(f)
# Modifier le status
for item in queue:
if item["session_id"] == session_id:
item["status"] = "pending"
item["attempts"] = 0
item["last_error"] = None
print(f"✅ Session {session_id} réinitialisée à 'pending'")
break
# Sauvegarder
with open(queue_file, 'w') as f:
json.dump(queue, f, indent=2)
print(f"📊 Queue mise à jour avec succès")
EOF

View File

@@ -0,0 +1,56 @@
#!/bin/bash
# Restart Dashboard Script
echo "🔄 Restarting RPA Vision V3 Dashboard..."
# Find and kill existing dashboard process
DASHBOARD_PID=$(pgrep -f "python.*web_dashboard/app.py")
if [ ! -z "$DASHBOARD_PID" ]; then
echo "📍 Found dashboard process: $DASHBOARD_PID"
echo "🛑 Stopping dashboard..."
kill $DASHBOARD_PID
sleep 2
# Check if still running
if pgrep -f "python.*web_dashboard/app.py" > /dev/null; then
echo "⚠️ Process still running, force killing..."
pkill -9 -f "python.*web_dashboard/app.py"
sleep 1
fi
echo "✅ Dashboard stopped"
else
echo " No dashboard process found"
fi
echo "🚀 Starting dashboard..."
# Start dashboard in background
nohup python web_dashboard/app.py > logs/dashboard.log 2>&1 &
DASHBOARD_PID=$!
sleep 3
# Check if started successfully
if pgrep -f "python.*web_dashboard/app.py" > /dev/null; then
echo "✅ Dashboard started successfully (PID: $DASHBOARD_PID)"
echo "🌐 Dashboard available at: http://127.0.0.1:5001"
echo "📊 Sessions API: http://127.0.0.1:5001/api/agent/sessions"
# Test the API
echo "🧪 Testing sessions API..."
sleep 2
SESSIONS_COUNT=$(curl -s http://127.0.0.1:5001/api/agent/sessions | jq -r '.total // 0')
echo "📈 Sessions found: $SESSIONS_COUNT"
if [ "$SESSIONS_COUNT" -gt 0 ]; then
echo "🎉 SUCCESS: Dashboard integration working!"
else
echo "⚠️ No sessions found - check logs for issues"
fi
else
echo "❌ Failed to start dashboard"
echo "📋 Check logs: tail -f logs/dashboard.log"
exit 1
fi

View File

@@ -0,0 +1,42 @@
#!/bin/bash
# Script pour redémarrer le serveur avec les variables d'environnement correctes
echo "=== Redémarrage du serveur avec .env.local ==="
# Arrêter le serveur existant
echo "Arrêt du serveur existant..."
pkill -f "api_upload.py" 2>/dev/null || echo "Aucun serveur à arrêter"
# Attendre un peu
sleep 3
# Charger les variables d'environnement depuis .env.local
if [ -f ".env.local" ]; then
echo "Chargement des variables depuis .env.local..."
export $(grep -v '^#' .env.local | xargs)
echo "Variables chargées:"
echo " RPA_TOKEN_ADMIN: ${RPA_TOKEN_ADMIN:0:16}..."
echo " RPA_TOKEN_READONLY: ${RPA_TOKEN_READONLY:0:16}..."
else
echo "❌ Fichier .env.local non trouvé!"
exit 1
fi
# Démarrer le serveur en arrière-plan
echo "Démarrage du serveur..."
cd server
python3 api_upload.py &
SERVER_PID=$!
echo "Serveur démarré avec PID: $SERVER_PID"
# Attendre que le serveur soit prêt
echo "Attente du démarrage du serveur..."
sleep 5
# Tester la connexion
echo "Test de connexion..."
curl -s -H "Authorization: Bearer $RPA_TOKEN_ADMIN" http://localhost:8000/api/traces/status
echo ""
echo "✅ Serveur redémarré avec les nouvelles variables d'environnement!"

View File

@@ -0,0 +1,108 @@
#!/bin/bash
# Script de redémarrage des services RPA Vision V3
set -e
echo "🔄 RPA Vision V3 - Redémarrage des Services"
echo "==========================================="
echo ""
# Vérifier qu'on est bien root ou avec sudo
if [ "$EUID" -ne 0 ]; then
echo "❌ Ce script doit être exécuté avec sudo"
echo "Usage: sudo bash restart_services.sh"
exit 1
fi
SERVICES=(
"rpa-vision-v3-api.service"
"rpa-vision-v3-worker.service"
"rpa-vision-v3-dashboard.service"
)
echo "📋 Services à redémarrer:"
for service in "${SERVICES[@]}"; do
echo " - $service"
done
echo ""
# Arrêter tous les services
echo "⏹️ Arrêt des services..."
for service in "${SERVICES[@]}"; do
echo -n " → Arrêt de $service... "
if systemctl stop "$service" 2>/dev/null; then
echo "✓"
else
echo "⚠ (peut-être déjà arrêté)"
fi
done
echo ""
# Attendre un peu pour que les processus se terminent proprement
echo "⏳ Attente de 3 secondes..."
sleep 3
echo ""
# Démarrer tous les services
echo "▶️ Démarrage des services..."
for service in "${SERVICES[@]}"; do
echo -n " → Démarrage de $service... "
if systemctl start "$service" 2>/dev/null; then
echo "✓"
else
echo "❌ ERREUR"
fi
done
echo ""
# Attendre que les services démarrent
echo "⏳ Attente du démarrage (5 secondes)..."
sleep 5
echo ""
# Vérifier le statut de chaque service
echo "📊 Statut des services après redémarrage:"
echo ""
for service in "${SERVICES[@]}"; do
status=$(systemctl is-active "$service" 2>/dev/null || echo "failed")
if [ "$status" = "active" ]; then
echo "$service: $status"
else
echo "$service: $status"
echo " Voir les logs: sudo journalctl -u $service -n 20"
fi
done
echo ""
# Afficher les dernières lignes des logs de l'API
echo "📋 Logs récents de l'API (recherche TokenManager):"
echo "--------------------------------------------------"
journalctl -u rpa-vision-v3-api -n 50 --no-pager | grep -i "token" | tail -10 || echo "Aucune ligne avec 'token' trouvée"
echo ""
# Test de l'endpoint API
echo "🌐 Test de l'API (sans authentification):"
echo "-----------------------------------------"
response=$(curl -s http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
echo "$response"
echo ""
# Test avec authentification
echo "🔑 Test de l'API (avec token admin):"
echo "------------------------------------"
ADMIN_TOKEN=$(grep "RPA_TOKEN_ADMIN" /etc/rpa_vision_v3/rpa_vision_v3.env | cut -d'=' -f2)
if [ -n "$ADMIN_TOKEN" ]; then
echo "Token utilisé: ${ADMIN_TOKEN:0:16}..."
response=$(curl -s -H "Authorization: Bearer $ADMIN_TOKEN" http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
echo "$response" | python3 -m json.tool 2>/dev/null || echo "$response"
else
echo "❌ Token admin non trouvé dans /etc/rpa_vision_v3/rpa_vision_v3.env"
fi
echo ""
echo "✅ Redémarrage terminé"
echo ""
echo "💡 Prochaines étapes:"
echo " 1. Vérifier que l'API répond avec le token: voir ci-dessus"
echo " 2. Si erreur 'unauthorized', vérifier les logs: sudo journalctl -u rpa-vision-v3-api -n 50"
echo " 3. Tester l'agent: cd agent_v0 && ./run.sh"

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Redémarrage du worker après modification du processing_pipeline.py
echo "🔄 Redémarrage du worker RPA Vision V3..."
systemctl restart rpa-vision-v3-worker.service
sleep 3
STATUS=$(systemctl is-active rpa-vision-v3-worker.service)
if [ "$STATUS" = "active" ]; then
echo "✅ Worker redémarré avec succès"
echo ""
echo "📋 Derniers logs:"
journalctl -u rpa-vision-v3-worker -n 10 --no-pager
else
echo "❌ Worker en état: $STATUS"
echo "Voir les logs: sudo journalctl -u rpa-vision-v3-worker -n 50"
fi

View File

@@ -0,0 +1,58 @@
#!/bin/bash
# Script pour configurer les permissions sudo pour le déploiement RPA Vision V3
set -e
USER=$(whoami)
SUDOERS_FILE="/etc/sudoers.d/rpa-vision-deploy"
echo "=== Configuration des permissions sudo pour $USER ==="
echo ""
# Créer le fichier sudoers temporaire
TEMP_FILE=$(mktemp)
cat > "$TEMP_FILE" << 'EOF'
dom ALL=(ALL) NOPASSWD: /bin/cp /home/dom/ai/rpa_vision_v3/processing_pipeline.py /opt/rpa_vision_v3/server/processing_pipeline.py
dom ALL=(ALL) NOPASSWD: /bin/cp /home/dom/ai/rpa_vision_v3/graph_builder.py /opt/rpa_vision_v3/core/graph/graph_builder.py
dom ALL=(ALL) NOPASSWD: /bin/systemctl restart rpa-vision-v3-worker.service
dom ALL=(ALL) NOPASSWD: /bin/systemctl status rpa-vision-v3-worker.service
EOF
echo "Fichier sudoers généré:"
echo "------------------------"
cat "$TEMP_FILE"
echo "------------------------"
echo ""
# Vérifier la syntaxe avec visudo
echo "Vérification de la syntaxe..."
if sudo visudo -c -f "$TEMP_FILE"; then
echo "✅ Syntaxe correcte"
echo ""
echo "Installation du fichier sudoers..."
sudo cp "$TEMP_FILE" "$SUDOERS_FILE"
sudo chmod 0440 "$SUDOERS_FILE"
echo "✅ Fichier installé: $SUDOERS_FILE"
echo ""
echo "Test des permissions..."
if sudo -n systemctl status rpa-vision-v3-worker.service >/dev/null 2>&1; then
echo "✅ Permissions sudo fonctionnelles!"
else
echo "⚠️ Test échoué, mais les permissions sont installées"
fi
else
echo "❌ Erreur de syntaxe dans le fichier sudoers!"
echo "Le fichier n'a pas été installé pour des raisons de sécurité."
exit 1
fi
# Nettoyer
rm "$TEMP_FILE"
echo ""
echo "=== Configuration terminée ==="
echo ""
echo "⚠️ IMPORTANT: Vous devrez exécuter chown manuellement après chaque cp:"
echo " sudo chown rpa:rpa /opt/rpa_vision_v3/server/processing_pipeline.py"
echo " sudo chown rpa:rpa /opt/rpa_vision_v3/core/graph/graph_builder.py"

View File

@@ -0,0 +1,117 @@
#!/bin/bash
"""
Démarre le serveur API local pour le développement sur le port 8001.
"""
set -e
echo "🚀 === DÉMARRAGE SERVEUR DÉVELOPPEMENT ==="
# Vérifier que nous sommes dans le bon répertoire
if [ ! -f "server/api_upload.py" ]; then
echo "❌ Fichier server/api_upload.py non trouvé"
echo " Veuillez exécuter ce script depuis la racine du projet"
exit 1
fi
# Vérifier l'environnement virtuel
if [ ! -d "venv_v3" ]; then
echo "❌ Environnement virtuel venv_v3 non trouvé"
echo " Veuillez créer l'environnement virtuel avec: python3 -m venv venv_v3"
exit 1
fi
# Activer l'environnement virtuel
echo "📦 Activation de l'environnement virtuel..."
source venv_v3/bin/activate
# Charger les variables d'environnement depuis .env.local
if [ -f ".env.local" ]; then
echo "📁 Chargement des variables d'environnement depuis .env.local"
export $(grep -v '^#' .env.local | xargs)
echo " ✓ RPA_TOKEN_ADMIN: ${RPA_TOKEN_ADMIN:0:16}..."
else
echo "⚠️ Fichier .env.local non trouvé, utilisation des valeurs par défaut"
fi
# Configurer le port pour éviter le conflit avec le serveur de production
export PORT=8001
export HOST=127.0.0.1
echo "🌐 Configuration serveur:"
echo " Host: $HOST"
echo " Port: $PORT"
echo " Token Admin: ${RPA_TOKEN_ADMIN:0:16}..."
# Vérifier que le port est libre
if netstat -tlnp 2>/dev/null | grep -q ":$PORT "; then
echo "❌ Port $PORT déjà utilisé"
echo " Arrêtez le processus utilisant ce port ou modifiez la variable PORT"
exit 1
fi
echo "✅ Port $PORT disponible"
# Démarrer le serveur
echo "🚀 Démarrage du serveur API..."
cd server
# Démarrer en arrière-plan et capturer le PID
python3 api_upload.py &
SERVER_PID=$!
echo " PID du serveur: $SERVER_PID"
echo " URL: http://$HOST:$PORT"
# Attendre que le serveur démarre
echo "⏳ Attente du démarrage du serveur..."
for i in {1..15}; do
sleep 1
if curl -s -f "http://$HOST:$PORT/health" >/dev/null 2>&1; then
echo "✅ Serveur démarré avec succès!"
break
elif [ $i -eq 15 ]; then
echo "❌ Le serveur n'a pas démarré dans les temps"
kill $SERVER_PID 2>/dev/null || true
exit 1
fi
echo " Tentative $i/15..."
done
# Tester l'authentification
echo "🔐 Test d'authentification..."
AUTH_RESPONSE=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $RPA_TOKEN_ADMIN" "http://$HOST:$PORT/api/traces/status")
HTTP_CODE="${AUTH_RESPONSE: -3}"
if [ "$HTTP_CODE" = "200" ]; then
echo "✅ Authentification réussie!"
# Mettre à jour .env.local avec la nouvelle URL du serveur
if [ -f "../.env.local" ]; then
sed -i "s|RPA_SERVER_URL=.*|RPA_SERVER_URL=http://$HOST:$PORT/api/traces/upload|" ../.env.local
echo "✓ URL serveur mise à jour dans .env.local"
fi
echo ""
echo "🎉 === SERVEUR DÉVELOPPEMENT PRÊT ==="
echo "✅ Serveur API: http://$HOST:$PORT"
echo "✅ Authentification: Fonctionnelle"
echo "✅ PID: $SERVER_PID"
echo ""
echo "📝 PROCHAINES ÉTAPES:"
echo "1. Démarrer l'agent v0: cd agent_v0 && python main.py"
echo "2. Capturer une session de test"
echo "3. Vérifier que l'upload fonctionne"
echo ""
echo "🛑 Pour arrêter le serveur: kill $SERVER_PID"
# Sauvegarder le PID pour pouvoir l'arrêter plus tard
echo $SERVER_PID > ../dev_server.pid
echo " PID sauvegardé dans dev_server.pid"
else
echo "❌ Authentification échouée (HTTP $HTTP_CODE)"
echo " Réponse: ${AUTH_RESPONSE%???}"
kill $SERVER_PID 2>/dev/null || true
exit 1
fi

View File

@@ -0,0 +1,138 @@
#!/bin/bash
# Script de synchronisation du mot de passe de chiffrement
# entre l'agent (.env.local) et le serveur (/etc/rpa_vision_v3/rpa_vision_v3.env)
set -e
echo "🔐 RPA Vision V3 - Synchronisation Mot de Passe Chiffrement"
echo "============================================================"
echo ""
# Vérifier qu'on est bien root ou avec sudo
if [ "$EUID" -ne 0 ]; then
echo "❌ Ce script doit être exécuté avec sudo"
echo "Usage: sudo bash sync_encryption_password.sh"
exit 1
fi
# Fichiers
DEV_ENV="/home/dom/ai/rpa_vision_v3/.env.local"
PROD_ENV="/etc/rpa_vision_v3/rpa_vision_v3.env"
echo "📂 Fichiers concernés:"
echo " - Agent (dev): $DEV_ENV"
echo " - Serveur (prod): $PROD_ENV"
echo ""
# Lire le mot de passe de l'agent
echo "🔍 Lecture du mot de passe actuel de l'agent..."
AGENT_PASSWORD=$(grep "^ENCRYPTION_PASSWORD=" "$DEV_ENV" | cut -d'=' -f2)
if [ -z "$AGENT_PASSWORD" ]; then
echo "❌ ENCRYPTION_PASSWORD non trouvé dans $DEV_ENV"
exit 1
fi
echo " Agent utilise: ${AGENT_PASSWORD:0:20}..."
echo ""
# Lire le mot de passe du serveur
echo "🔍 Lecture du mot de passe actuel du serveur..."
if [ -f "$PROD_ENV" ]; then
SERVER_PASSWORD=$(grep "^ENCRYPTION_PASSWORD=" "$PROD_ENV" 2>/dev/null | cut -d'=' -f2 || echo "")
if [ -z "$SERVER_PASSWORD" ]; then
echo " ⚠️ ENCRYPTION_PASSWORD non défini dans le fichier serveur"
else
echo " Serveur utilise: ${SERVER_PASSWORD:0:20}..."
fi
else
echo " ❌ Fichier $PROD_ENV introuvable"
exit 1
fi
echo ""
# Comparer les mots de passe
if [ "$AGENT_PASSWORD" = "$SERVER_PASSWORD" ]; then
echo "✅ Les mots de passe sont déjà identiques!"
echo ""
echo "Pas d'action nécessaire."
exit 0
fi
# Créer une sauvegarde
echo "💾 Création d'une sauvegarde..."
BACKUP_FILE="${PROD_ENV}.backup_$(date +%Y%m%d_%H%M%S)"
cp "$PROD_ENV" "$BACKUP_FILE"
echo " ✓ Sauvegarde: $BACKUP_FILE"
echo ""
# Mettre à jour le fichier serveur
echo "🔄 Synchronisation du mot de passe..."
TEMP_FILE=$(mktemp)
# Si ENCRYPTION_PASSWORD existe déjà, le remplacer, sinon l'ajouter
if grep -q "^ENCRYPTION_PASSWORD=" "$PROD_ENV"; then
# Remplacer la ligne existante
while IFS= read -r line; do
if [[ $line =~ ^ENCRYPTION_PASSWORD= ]]; then
echo "ENCRYPTION_PASSWORD=$AGENT_PASSWORD"
else
echo "$line"
fi
done < "$PROD_ENV" > "$TEMP_FILE"
else
# Ajouter la ligne
cat "$PROD_ENV" > "$TEMP_FILE"
echo "" >> "$TEMP_FILE"
echo "# Mot de passe de chiffrement (synchronisé avec agent)" >> "$TEMP_FILE"
echo "ENCRYPTION_PASSWORD=$AGENT_PASSWORD" >> "$TEMP_FILE"
fi
# Remplacer le fichier original
mv "$TEMP_FILE" "$PROD_ENV"
# Restaurer les permissions
chown root:rpa "$PROD_ENV"
chmod 640 "$PROD_ENV"
echo " ✓ Mot de passe synchronisé"
echo ""
# Redémarrer les services
echo "🔄 Redémarrage des services..."
systemctl restart rpa-vision-v3-api.service
systemctl restart rpa-vision-v3-worker.service
echo " ✓ Services redémarrés"
echo ""
# Attendre que les services démarrent
echo "⏳ Attente du démarrage (3 secondes)..."
sleep 3
echo ""
# Vérifier le statut
echo "📊 Statut des services:"
for service in rpa-vision-v3-api rpa-vision-v3-worker; do
status=$(systemctl is-active $service 2>/dev/null || echo "failed")
if [ "$status" = "active" ]; then
echo "$service: $status"
else
echo "$service: $status"
fi
done
echo ""
echo "✅ SYNCHRONISATION TERMINÉE"
echo ""
echo "📝 Vérification:"
echo " Agent: ${AGENT_PASSWORD:0:20}..."
echo " Serveur: ${AGENT_PASSWORD:0:20}..."
echo ""
echo "🎯 Prochaines étapes:"
echo " 1. Tester l'agent: cd agent_v0 && ./run.sh"
echo " 2. Vérifier l'upload: ls -lht /opt/rpa_vision_v3/data/training/sessions/"
echo ""
echo "💾 En cas de problème, restaurer:"
echo " sudo cp $BACKUP_FILE $PROD_ENV"
echo " sudo systemctl restart rpa-vision-v3-*.service"

View File

@@ -0,0 +1,80 @@
#!/bin/bash
# Script de test de l'upload depuis l'agent V0
echo "🧪 Test Upload Agent V0 → Serveur"
echo "=================================="
echo ""
echo "📋 1. Vérification de la configuration"
echo "---------------------------------------"
echo "Configuration .env.local:"
grep "RPA_TOKEN_ADMIN\|RPA_SERVER_URL" /home/dom/ai/rpa_vision_v3/.env.local | while read line; do
key=$(echo $line | cut -d'=' -f1)
value=$(echo $line | cut -d'=' -f2)
if [[ $key == *"TOKEN"* ]]; then
echo " $key=${value:0:16}..."
else
echo " $line"
fi
done
echo ""
echo "📂 2. État actuel des sessions sur le serveur"
echo "----------------------------------------------"
echo "Sessions existantes dans /opt/rpa_vision_v3/data/training/sessions/:"
session_count=$(ls /opt/rpa_vision_v3/data/training/sessions/*.json 2>/dev/null | wc -l)
echo " Nombre de sessions: $session_count"
if [ $session_count -gt 0 ]; then
echo " 5 dernières sessions:"
ls -lht /opt/rpa_vision_v3/data/training/sessions/*.json 2>/dev/null | head -5
fi
echo ""
echo "🌐 3. Test API serveur"
echo "----------------------"
TOKEN="73cf0db73f9a5064e79afebba96c85338be65cc2060b9c1d42c3ea5dd7d4e490"
response=$(curl -s -H "Authorization: Bearer $TOKEN" http://localhost:8000/api/traces/status 2>/dev/null)
echo " Réponse API: $response"
if echo "$response" | grep -q "online"; then
echo " ✅ API opérationnelle"
else
echo " ❌ API non accessible"
fi
echo ""
echo "📝 4. Instructions pour tester l'agent"
echo "---------------------------------------"
echo ""
echo "Pour tester l'agent V0, suivez ces étapes:"
echo ""
echo " 1. Ouvrir un nouveau terminal"
echo ""
echo " 2. Lancer l'agent:"
echo " cd /home/dom/ai/rpa_vision_v3/agent_v0"
echo " ./run.sh"
echo ""
echo " 3. L'agent s'ouvre dans le system tray"
echo " → Cliquer sur 'Start Capture'"
echo ""
echo " 4. Effectuer quelques actions pendant 30 secondes:"
echo " - Ouvrir une fenêtre"
echo " - Cliquer quelque part"
echo " - Taper du texte"
echo " - Fermer la fenêtre"
echo ""
echo " 5. Attendre 30 secondes (l'agent upload automatiquement)"
echo ""
echo " 6. Vérifier que les sessions sont arrivées:"
echo " ls -lht /opt/rpa_vision_v3/data/training/sessions/*.json | head -3"
echo ""
echo " 7. Si succès, vous devriez voir de nouveaux fichiers .json"
echo " avec un timestamp récent (quelques secondes)"
echo ""
echo "════════════════════════════════════════════════════════════"
echo "✅ Système prêt pour le test de l'agent"
echo "════════════════════════════════════════════════════════════"
echo ""
echo "💡 En cas de problème:"
echo " - Vérifier les logs agent: tail -f ~/agent_v0/logs/*.log"
echo " - Vérifier les logs serveur: sudo journalctl -u rpa-vision-v3-api -f"
echo ""

View File

@@ -0,0 +1,49 @@
#!/bin/bash
# Script rapide pour tester les CLIP embedders
echo "=========================================="
echo " Test CLIP Embedders - RPA Vision V3"
echo "=========================================="
echo ""
# Vérifier si on est dans le bon répertoire
if [ ! -d "rpa_vision_v3" ]; then
echo "❌ Erreur: Ce script doit être exécuté depuis la racine du projet"
exit 1
fi
# Activer le venv de geniusia2
if [ -d "geniusia2/venv" ]; then
echo "✓ Activation du venv geniusia2..."
source geniusia2/venv/bin/activate
else
echo "❌ Erreur: venv geniusia2 non trouvé"
exit 1
fi
# Lancer le test
echo ""
echo "Lancement du test CLIP..."
echo ""
cd rpa_vision_v3/examples
python3 test_clip_simple.py
exit_code=$?
cd ../..
if [ $exit_code -eq 0 ]; then
echo ""
echo "=========================================="
echo " ✅ Test CLIP réussi !"
echo "=========================================="
else
echo ""
echo "=========================================="
echo " ❌ Test CLIP échoué"
echo "=========================================="
fi
exit $exit_code

View File

@@ -0,0 +1,28 @@
#!/bin/bash
# Script de test des corrections de bugs
set -e
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ Test des Corrections - RPA Vision V3 ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
# Test 1: Vérifier que le fichier orchestrator.py a été modifié
echo -e "${BLUE}[1/3]${NC} Vérification de la correction orchestrator.py..."
if grep -q "tempfile.NamedTemporaryFile" rpa_vision_v3/gui/orchestrator.py; then
echo -e "${GREEN}${NC} Correction appliquée"
else
echo -e "${RED}${NC} Correction non trouvée"
exit 1
fi
echo ""
echo -e "${GREEN}✓ Tests terminés${NC}"

View File

@@ -0,0 +1,114 @@
#!/bin/bash
# Test rapide de l'installation
echo "🧪 Test de l'installation RPA Vision V3"
echo ""
# Activer venv
if [ -d "venv_v3" ]; then
source venv_v3/bin/activate
echo "✓ Environnement virtuel activé"
else
echo "✗ venv_v3 non trouvé. Lancez ./install_deps.sh d'abord"
exit 1
fi
echo ""
echo "📦 Vérification des modules Python..."
# Test des imports critiques
python3 << 'EOF'
import sys
modules = [
("numpy", "NumPy"),
("PIL", "Pillow"),
("sklearn", "scikit-learn"),
("torch", "PyTorch"),
("faiss", "FAISS"),
("open_clip", "OpenCLIP"),
("cv2", "OpenCV"),
("mss", "MSS"),
]
failed = []
for module, name in modules:
try:
__import__(module)
print(f" ✓ {name}")
except ImportError:
print(f" ✗ {name} - MANQUANT")
failed.append(name)
if failed:
print(f"\n❌ Modules manquants: {', '.join(failed)}")
sys.exit(1)
else:
print("\n✅ Tous les modules sont installés")
EOF
if [ $? -ne 0 ]; then
echo ""
echo "Pour installer les dépendances manquantes :"
echo " ./install_deps.sh"
exit 1
fi
echo ""
echo "🔍 Vérification des modules core..."
python3 << 'EOF'
import sys
try:
from core.models import RawSession, ScreenState, UIElement
print(" ✓ core.models")
except ImportError as e:
print(f" ✗ core.models - {e}")
sys.exit(1)
try:
from core.detection import UIDetector
print(" ✓ core.detection")
except ImportError as e:
print(f" ✗ core.detection - {e}")
sys.exit(1)
try:
from core.embedding import FusionEngine, FAISSManager
print(" ✓ core.embedding")
except ImportError as e:
print(f" ✗ core.embedding - {e}")
sys.exit(1)
try:
from core.graph import GraphBuilder, NodeMatcher
print(" ✓ core.graph")
except ImportError as e:
print(f" ✗ core.graph - {e}")
sys.exit(1)
try:
from core.execution import ActionExecutor
print(" ✓ core.execution")
except ImportError as e:
print(f" ✗ core.execution - {e}")
sys.exit(1)
print("\n✅ Tous les modules core sont fonctionnels")
EOF
if [ $? -ne 0 ]; then
exit 1
fi
echo ""
echo "🎉 Installation vérifiée avec succès !"
echo ""
echo "Prochaines étapes :"
echo " • Lancer l'application : ./run.sh"
echo " • Tester la détection : ./test_quick.sh"
echo " • Lire le guide : cat QUICK_START.md"
echo ""
deactivate

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Test des outils d'amélioration du matching
set -e
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ TEST DES OUTILS D'AMÉLIORATION DU MATCHING ║"
echo "╚══════════════════════════════════════════════════════════════╝"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
cd rpa_vision_v3 2>/dev/null || true
echo -e "\n${YELLOW}[1/3]${NC} Test analyse..."
if python3 analyze_failed_matches.py --last 5 > /dev/null 2>&1; then
echo -e " ${GREEN}${NC} Analyse OK"
else
echo " ⚠️ Pas d'échecs enregistrés (normal si premier lancement)"
fi
echo -e "\n${YELLOW}[2/3]${NC} Test monitoring..."
if python3 monitor_matching_health.py > /dev/null 2>&1; then
echo -e " ${GREEN}${NC} Monitoring OK"
else
echo " ⚠️ Monitoring non disponible"
fi
echo -e "\n${YELLOW}[3/3]${NC} Test amélioration..."
if python3 auto_improve_matching.py > /dev/null 2>&1; then
echo -e " ${GREEN}${NC} Amélioration OK"
else
echo " ⚠️ Amélioration non disponible"
fi
echo -e "\n${GREEN}${NC} Tests terminés"
echo ""
echo "Utilisation:"
echo " ./analyze_failed_matches.py --last 10"
echo " ./monitor_matching_health.py --continuous"
echo " ./auto_improve_matching.py --apply"
echo ""

View File

@@ -0,0 +1,35 @@
#!/bin/bash
# Test rapide du système de détection hybride
echo "🚀 Test Rapide - Détection UI Hybride"
echo "======================================"
echo ""
# Vérifier Ollama
echo "1. Vérification d'Ollama..."
if ! curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
echo "❌ Ollama n'est pas disponible"
echo " Lancez: ollama serve"
exit 1
fi
echo "✓ Ollama disponible"
echo ""
# Vérifier le modèle
echo "2. Vérification du modèle qwen3-vl:8b..."
if ! ollama list | grep -q "qwen3-vl:8b"; then
echo "⚠ Modèle non trouvé"
echo " Téléchargez-le: ollama pull qwen3-vl:8b"
exit 1
fi
echo "✓ Modèle disponible"
echo ""
# Lancer le test
echo "3. Lancement du test..."
echo ""
python3 examples/test_complete_real.py
echo ""
echo "======================================"
echo "Test terminé"

View File

@@ -0,0 +1,169 @@
#!/bin/bash
# 🧪 Test Complet des Services RPA Vision V3
# Auteur : Dom, Alice Kiro
# Date : 22 décembre 2024
set -e
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
print_header() {
echo -e "${PURPLE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ 🧪 Test Complet des Services RPA V3 🧪 ║"
echo "║ Vérification de tous les endpoints ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
}
# Fonction de test d'un service
test_service() {
local name=$1
local url=$2
local expected_status=${3:-200}
echo -e "${BLUE}🔍 Test de $name...${NC}"
if curl -s -o /dev/null -w "%{http_code}" "$url" | grep -q "$expected_status"; then
echo -e "${GREEN}$name : OK${NC}"
return 0
else
echo -e "${RED}$name : ÉCHEC${NC}"
return 1
fi
}
# Fonction de test avec contenu
test_service_content() {
local name=$1
local url=$2
local expected_content=$3
echo -e "${BLUE}🔍 Test de $name (contenu)...${NC}"
local response=$(curl -s "$url")
if echo "$response" | grep -q "$expected_content"; then
echo -e "${GREEN}$name : Contenu OK${NC}"
return 0
else
echo -e "${RED}$name : Contenu manquant${NC}"
echo -e "${YELLOW}Réponse reçue : ${response:0:100}...${NC}"
return 1
fi
}
# Fonction principale de test
run_tests() {
local failed=0
echo -e "${CYAN}[1/6] Test de l'API principale...${NC}"
if ! test_service "API Status Check" "http://localhost:8000/api/traces/status" "200"; then
((failed++))
fi
echo -e "${CYAN}[2/6] Test du Dashboard Web...${NC}"
if ! test_service "Dashboard" "http://localhost:5001" "200"; then
((failed++))
fi
echo -e "${CYAN}[3/6] Test du Visual Workflow Builder...${NC}"
if ! test_service_content "VWB Frontend" "http://localhost:3000" "Visual Workflow Builder"; then
((failed++))
fi
echo -e "${CYAN}[4/6] Test du Backend VWB...${NC}"
if ! test_service "VWB Backend Health" "http://localhost:5002/health" "200"; then
((failed++))
fi
echo -e "${CYAN}[5/6] Test des APIs VWB...${NC}"
if ! test_service "VWB Workflows API" "http://localhost:5002/api/workflows" "200"; then
((failed++))
fi
echo -e "${CYAN}[6/6] Test des logs...${NC}"
if [ -f "logs/main_backend.log" ] && [ -f "logs/vwb_backend.log" ] && [ -f "logs/vwb_frontend.log" ]; then
echo -e "${GREEN}✅ Fichiers de logs : OK${NC}"
else
echo -e "${RED}❌ Fichiers de logs : Manquants${NC}"
((failed++))
fi
return $failed
}
# Fonction d'affichage des résultats
show_results() {
local failed=$1
echo ""
echo -e "${PURPLE}📊 Résultats des tests${NC}"
echo "=========================="
if [ $failed -eq 0 ]; then
echo -e "${GREEN}🎉 Tous les tests sont passés avec succès !${NC}"
echo -e "${GREEN}✅ Système RPA Vision V3 entièrement opérationnel${NC}"
else
echo -e "${RED}$failed test(s) ont échoué${NC}"
echo -e "${YELLOW}⚠️ Vérifiez que tous les services sont démarrés avec ./launch_all.sh${NC}"
fi
echo ""
echo -e "${BLUE}🌐 URLs des services :${NC}"
echo -e "${CYAN} • API REST: http://localhost:8000${NC}"
echo -e "${CYAN} • Dashboard Web: http://localhost:5001${NC}"
echo -e "${CYAN} • Visual Workflow Builder: http://localhost:3000${NC}"
echo -e "${CYAN} • VWB Backend: http://localhost:5002${NC}"
}
# Fonction de diagnostic
run_diagnostics() {
echo ""
echo -e "${YELLOW}🔧 Diagnostic des services...${NC}"
echo -e "${BLUE}Processus Python actifs :${NC}"
ps aux | grep python | grep -v grep | head -5
echo -e "${BLUE}Ports en écoute :${NC}"
netstat -tlnp 2>/dev/null | grep -E ":(3000|5001|5002|8000)" || echo "Aucun port trouvé"
echo -e "${BLUE}Taille des logs :${NC}"
if [ -d "logs" ]; then
ls -lh logs/*.log 2>/dev/null || echo "Pas de fichiers de logs"
else
echo "Répertoire logs non trouvé"
fi
}
# Script principal
main() {
print_header
echo -e "${YELLOW}⏳ Attente de 3 secondes pour que les services se stabilisent...${NC}"
sleep 3
if run_tests; then
failed=$?
else
failed=$?
fi
show_results $failed
if [ $failed -gt 0 ]; then
run_diagnostics
fi
exit $failed
}
# Lancer le script
main "$@"