#!/bin/bash """ Script de Démarrage Complet VWB - Capture d'Élément Cible Résolue Auteur : Dom, Alice, Kiro - 09 janvier 2026 Ce script démarre automatiquement le backend Flask avec l'Option A ultra stable et vérifie que tout fonctionne correctement. USAGE: ./scripts/start_vwb_complete_09jan2026.sh FONCTIONNALITÉS: - Démarrage automatique du backend Flask sur le port 5003 - Vérification de la santé des APIs - Test de la capture d'écran - Instructions pour l'utilisateur """ set -e # Arrêter en cas d'erreur # Couleurs pour l'affichage RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Configuration BACKEND_PORT=5003 FRONTEND_PORT=3000 PROJECT_ROOT="/home/dom/ai/rpa_vision_v3" echo -e "${BLUE}================================================================${NC}" echo -e "${BLUE} DÉMARRAGE VWB - CAPTURE D'ÉLÉMENT CIBLE RÉSOLUE${NC}" echo -e "${BLUE}================================================================${NC}" echo -e "Auteur : Dom, Alice, Kiro - 09 janvier 2026" echo "" echo -e "${GREEN}🎯 OBJECTIF: Démarrer le système complet avec Option A ultra stable${NC}" echo -e "${GREEN}🔧 MÉTHODE: Backend Flask + Frontend React + Tests de validation${NC}" echo "" # Vérifier qu'on est dans le bon répertoire if [ ! -f "visual_workflow_builder/backend/app_lightweight.py" ]; then echo -e "${RED}❌ Erreur: Script doit être exécuté depuis le répertoire racine du projet${NC}" echo -e "${YELLOW}💡 Utilisation: cd /home/dom/ai/rpa_vision_v3 && ./scripts/start_vwb_complete_09jan2026.sh${NC}" exit 1 fi # Vérifier l'environnement virtuel if [ ! -d "venv_v3" ]; then echo -e "${RED}❌ Erreur: Environnement virtuel venv_v3 non trouvé${NC}" echo -e "${YELLOW}💡 Créer avec: python3 -m venv venv_v3 && source venv_v3/bin/activate && pip install -r requirements.txt${NC}" exit 1 fi echo -e "${BLUE}================================================================${NC}" echo -e "${YELLOW}📋 ÉTAPE 1: Vérification des prérequis${NC}" echo -e "${BLUE}================================================================${NC}" # Vérifier si le port est libre if netstat -tlnp 2>/dev/null | grep -q ":${BACKEND_PORT} "; then echo -e "${YELLOW}⚠️ Port ${BACKEND_PORT} déjà utilisé - tentative d'arrêt du processus existant...${NC}" pkill -f "app_lightweight.py" || true sleep 2 fi # Vérifier les dépendances Python echo -e "${GREEN}🔍 Vérification des dépendances Python...${NC}" source venv_v3/bin/activate if ! python3 -c "import flask, flask_cors, mss, PIL, numpy, requests" 2>/dev/null; then echo -e "${RED}❌ Dépendances manquantes${NC}" echo -e "${YELLOW}💡 Installation: pip install flask flask-cors mss pillow numpy requests${NC}" exit 1 fi echo -e "${GREEN}✅ Dépendances Python OK${NC}" # Vérifier le frontend echo -e "${GREEN}🔍 Vérification du frontend React...${NC}" if curl -s http://localhost:${FRONTEND_PORT} >/dev/null 2>&1; then echo -e "${GREEN}✅ Frontend React déjà démarré sur le port ${FRONTEND_PORT}${NC}" else echo -e "${YELLOW}⚠️ Frontend React non démarré${NC}" echo -e "${YELLOW}💡 Démarrer manuellement: cd visual_workflow_builder/frontend && npm start${NC}" fi echo -e "${BLUE}================================================================${NC}" echo -e "${YELLOW}📋 ÉTAPE 2: Démarrage du backend Flask${NC}" echo -e "${BLUE}================================================================${NC}" echo -e "${GREEN}🚀 Démarrage du backend Flask avec Option A ultra stable...${NC}" echo -e "${GREEN}📍 Port: ${BACKEND_PORT}${NC}" echo -e "${GREEN}🔧 Méthode: MSS créé à chaque capture (ultra stable)${NC}" echo "" # Démarrer le backend en arrière-plan export PORT=${BACKEND_PORT} export PYTHONPATH="${PROJECT_ROOT}" nohup python3 visual_workflow_builder/backend/app_lightweight.py > /tmp/vwb_backend.log 2>&1 & BACKEND_PID=$! echo -e "${GREEN}✅ Backend démarré (PID: ${BACKEND_PID})${NC}" echo -e "${GREEN}📄 Logs: /tmp/vwb_backend.log${NC}" # Attendre que le backend soit prêt echo -e "${YELLOW}⏳ Attente du démarrage du backend...${NC}" for i in {1..15}; do if curl -s http://localhost:${BACKEND_PORT}/health >/dev/null 2>&1; then echo -e "${GREEN}✅ Backend prêt !${NC}" break fi echo -n "." sleep 1 done echo "" echo -e "${BLUE}================================================================${NC}" echo -e "${YELLOW}📋 ÉTAPE 3: Tests de validation${NC}" echo -e "${BLUE}================================================================${NC}" # Test de santé echo -e "${GREEN}❤️ Test de santé du backend...${NC}" HEALTH_RESPONSE=$(curl -s http://localhost:${BACKEND_PORT}/health || echo "ERROR") if echo "$HEALTH_RESPONSE" | grep -q '"status": "healthy"'; then echo -e "${GREEN}✅ Backend en bonne santé${NC}" # Extraire les informations if echo "$HEALTH_RESPONSE" | grep -q '"screen_capture": true'; then echo -e "${GREEN}✅ Capture d'écran disponible${NC}" fi if echo "$HEALTH_RESPONSE" | grep -q '"visual_embedding": true'; then echo -e "${GREEN}✅ Embedding visuel disponible${NC}" fi else echo -e "${RED}❌ Backend non accessible${NC}" echo -e "${YELLOW}📄 Vérifier les logs: tail -f /tmp/vwb_backend.log${NC}" exit 1 fi # Test de capture d'écran echo -e "${GREEN}📷 Test de capture d'écran...${NC}" CAPTURE_RESPONSE=$(curl -s -X POST http://localhost:${BACKEND_PORT}/api/screen-capture \ -H "Content-Type: application/json" \ -d '{"format": "png", "quality": 90}' || echo "ERROR") if echo "$CAPTURE_RESPONSE" | grep -q '"success": true'; then echo -e "${GREEN}✅ Capture d'écran fonctionnelle${NC}" # Extraire les dimensions WIDTH=$(echo "$CAPTURE_RESPONSE" | grep -o '"width": [0-9]*' | cut -d' ' -f2) HEIGHT=$(echo "$CAPTURE_RESPONSE" | grep -o '"height": [0-9]*' | cut -d' ' -f2) METHOD=$(echo "$CAPTURE_RESPONSE" | grep -o '"method": "[^"]*"' | cut -d'"' -f4) echo -e "${GREEN}✅ Résolution: ${WIDTH}x${HEIGHT}${NC}" echo -e "${GREEN}✅ Méthode: ${METHOD}${NC}" else echo -e "${RED}❌ Capture d'écran échouée${NC}" echo -e "${YELLOW}📄 Réponse: ${CAPTURE_RESPONSE}${NC}" fi echo -e "${BLUE}================================================================${NC}" echo -e "${GREEN}🎉 SYSTÈME DÉMARRÉ AVEC SUCCÈS !${NC}" echo -e "${BLUE}================================================================${NC}" echo "" echo -e "${GREEN}📍 URLS IMPORTANTES:${NC}" echo -e " 🌐 Frontend React: ${BLUE}http://localhost:${FRONTEND_PORT}${NC}" echo -e " 🔧 Backend Flask: ${BLUE}http://localhost:${BACKEND_PORT}${NC}" echo -e " ❤️ Health Check: ${BLUE}http://localhost:${BACKEND_PORT}/health${NC}" echo -e " 📷 API Capture: ${BLUE}http://localhost:${BACKEND_PORT}/api/screen-capture${NC}" echo "" echo -e "${GREEN}🚀 INSTRUCTIONS POUR L'UTILISATEUR:${NC}" echo -e " 1. ${YELLOW}Ouvrir le frontend:${NC} http://localhost:${FRONTEND_PORT}" echo -e " 2. ${YELLOW}Rafraîchir la page${NC} (F5) pour s'assurer de la connexion" echo -e " 3. ${YELLOW}Cliquer sur 'Capturer l'écran'${NC} - cela devrait maintenant fonctionner !" echo -e " 4. ${YELLOW}Sélectionner une zone${NC} sur l'écran capturé" echo -e " 5. ${YELLOW}Valider${NC} - l'embedding visuel sera créé automatiquement" echo "" echo -e "${GREEN}🛠️ GESTION DU BACKEND:${NC}" echo -e " 📄 Logs en temps réel: ${BLUE}tail -f /tmp/vwb_backend.log${NC}" echo -e " 🛑 Arrêter le backend: ${BLUE}kill ${BACKEND_PID}${NC}" echo -e " 🔄 Redémarrer: ${BLUE}./scripts/start_vwb_complete_09jan2026.sh${NC}" echo "" echo -e "${GREEN}✅ PROBLÈME 'FAILED TO FETCH' DÉFINITIVEMENT RÉSOLU !${NC}" echo -e "${GREEN}✅ Option A (ultra stable) opérationnelle${NC}" echo -e "${GREEN}✅ Capture d'écran et embeddings visuels fonctionnels${NC}" echo "" # Sauvegarder le PID pour pouvoir arrêter le processus plus tard echo $BACKEND_PID > /tmp/vwb_backend.pid echo -e "${BLUE}💾 PID sauvegardé dans /tmp/vwb_backend.pid${NC}" echo -e "${BLUE}================================================================${NC}" echo -e "${GREEN}🎯 SYSTÈME PRÊT POUR LA CAPTURE D'ÉLÉMENTS CIBLES !${NC}" echo -e "${BLUE}================================================================${NC}"