Files
rpa_vision_v3/scripts/start_system_complet_09jan2026.sh
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

270 lines
8.3 KiB
Bash
Executable File

#!/bin/bash
# Script de Démarrage Système Complet - Visual Workflow Builder
# Auteur : Dom, Alice, Kiro - 09 janvier 2026
#
# Ce script démarre tous les services nécessaires pour un système
# Visual Workflow Builder entièrement fonctionnel avec toutes les API connectées.
set -e
# 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="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
echo -e "${BLUE}============================================================${NC}"
echo -e "${BLUE} DÉMARRAGE SYSTÈME COMPLET - VISUAL WORKFLOW BUILDER${NC}"
echo -e "${BLUE}============================================================${NC}"
echo -e "${GREEN}Auteur : Dom, Alice, Kiro - 09 janvier 2026${NC}"
echo -e "${GREEN}Répertoire : ${PROJECT_ROOT}${NC}"
echo ""
# Fonction pour vérifier si un port est libre
check_port() {
local port=$1
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
return 1 # Port occupé
else
return 0 # Port libre
fi
}
# Fonction pour arrêter les processus existants
stop_existing_processes() {
echo -e "${YELLOW}🔍 Vérification des processus existants...${NC}"
# Arrêter le backend s'il existe
if pgrep -f "app_lightweight.py" > /dev/null; then
echo -e "${YELLOW}⏹️ Arrêt du backend existant...${NC}"
pkill -f "app_lightweight.py" || true
sleep 2
fi
# Arrêter le frontend s'il existe
if pgrep -f "webpack.*serve" > /dev/null; then
echo -e "${YELLOW}⏹️ Arrêt du frontend existant...${NC}"
pkill -f "webpack.*serve" || true
sleep 2
fi
echo -e "${GREEN}✅ Processus existants arrêtés${NC}"
}
# Fonction pour vérifier l'environnement
check_environment() {
echo -e "${YELLOW}🔍 Vérification de l'environnement...${NC}"
# Vérifier Python
if ! command -v python3 &> /dev/null; then
echo -e "${RED}❌ Python3 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
# Vérifier Node.js
if ! command -v node &> /dev/null; then
echo -e "${RED}❌ Node.js non trouvé${NC}"
exit 1
fi
# Vérifier le répertoire frontend
if [ ! -d "visual_workflow_builder/frontend" ]; then
echo -e "${RED}❌ Répertoire frontend non trouvé${NC}"
exit 1
fi
echo -e "${GREEN}✅ Environnement validé${NC}"
}
# Fonction pour démarrer le backend
start_backend() {
echo -e "${YELLOW}🚀 Démarrage du backend Flask...${NC}"
# Vérifier que le port est libre
if ! check_port $BACKEND_PORT; then
echo -e "${RED}❌ Port $BACKEND_PORT occupé${NC}"
exit 1
fi
# Démarrer le backend en arrière-plan
cd "$PROJECT_ROOT"
source venv_v3/bin/activate && python3 visual_workflow_builder/backend/app_lightweight.py &
BACKEND_PID=$!
# Attendre que le backend soit prêt
echo -e "${YELLOW}⏳ Attente du démarrage du backend...${NC}"
for i in {1..30}; do
if curl -s http://localhost:$BACKEND_PORT/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ Backend démarré sur le port $BACKEND_PORT${NC}"
return 0
fi
sleep 1
done
echo -e "${RED}❌ Timeout - Backend non démarré${NC}"
kill $BACKEND_PID 2>/dev/null || true
exit 1
}
# Fonction pour démarrer le frontend
start_frontend() {
echo -e "${YELLOW}🚀 Démarrage du frontend React...${NC}"
# Vérifier que le port est libre
if ! check_port $FRONTEND_PORT; then
echo -e "${RED}❌ Port $FRONTEND_PORT occupé${NC}"
exit 1
fi
# Aller dans le répertoire frontend
cd "$PROJECT_ROOT/visual_workflow_builder/frontend"
# Vérifier les dépendances
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}📦 Installation des dépendances npm...${NC}"
npm install
fi
# Démarrer le frontend en arrière-plan
npm start &
FRONTEND_PID=$!
# Attendre que le frontend soit prêt
echo -e "${YELLOW}⏳ Attente du démarrage du frontend...${NC}"
for i in {1..60}; do
if curl -s http://localhost:$FRONTEND_PORT > /dev/null 2>&1; then
echo -e "${GREEN}✅ Frontend démarré sur le port $FRONTEND_PORT${NC}"
return 0
fi
sleep 2
done
echo -e "${RED}❌ Timeout - Frontend non démarré${NC}"
kill $FRONTEND_PID 2>/dev/null || true
exit 1
}
# Fonction pour valider les connexions
validate_connections() {
echo -e "${YELLOW}🔍 Validation des connexions API...${NC}"
cd "$PROJECT_ROOT"
# Lancer le test de validation
if python3 tests/integration/test_connexions_api_completes_09jan2026.py > /dev/null 2>&1; then
echo -e "${GREEN}✅ Toutes les connexions API sont fonctionnelles${NC}"
else
echo -e "${YELLOW}⚠️ Certaines API pourraient nécessiter plus de temps pour s'initialiser${NC}"
fi
}
# Fonction pour afficher le statut final
show_final_status() {
echo ""
echo -e "${BLUE}============================================================${NC}"
echo -e "${BLUE} SYSTÈME VISUAL WORKFLOW BUILDER DÉMARRÉ${NC}"
echo -e "${BLUE}============================================================${NC}"
echo ""
echo -e "${GREEN}🌐 URLs d'accès :${NC}"
echo -e " Frontend React : ${YELLOW}http://localhost:$FRONTEND_PORT${NC}"
echo -e " Backend Flask : ${YELLOW}http://localhost:$BACKEND_PORT${NC}"
echo -e " Health Check : ${YELLOW}http://localhost:$BACKEND_PORT/health${NC}"
echo ""
echo -e "${GREEN}📋 API disponibles :${NC}"
echo -e " Capture d'écran : ${YELLOW}/api/screen-capture${NC}"
echo -e " Capture réelle : ${YELLOW}/api/real-screen-capture${NC}"
echo -e " Embedding visuel : ${YELLOW}/api/visual-embedding${NC}"
echo -e " Gestion workflows : ${YELLOW}/api/workflows${NC}"
echo ""
echo -e "${GREEN}🎯 Fonctionnalités :${NC}"
echo -e " ✅ Capture d'écran ultra stable (Option A)"
echo -e " ✅ Détection d'éléments UI en temps réel"
echo -e " ✅ Création d'embeddings visuels"
echo -e " ✅ Gestion complète des workflows"
echo -e " ✅ Interface utilisateur connectée"
echo ""
echo -e "${YELLOW}⏹️ Pour arrêter le système : Ctrl+C${NC}"
echo -e "${BLUE}============================================================${NC}"
}
# Fonction de nettoyage à l'arrêt
cleanup() {
echo ""
echo -e "${YELLOW}🛑 Arrêt du système...${NC}"
# Arrêter le frontend
if [ ! -z "$FRONTEND_PID" ]; then
kill $FRONTEND_PID 2>/dev/null || true
fi
# Arrêter le backend
if [ ! -z "$BACKEND_PID" ]; then
kill $BACKEND_PID 2>/dev/null || true
fi
# Arrêter tous les processus liés
pkill -f "app_lightweight.py" 2>/dev/null || true
pkill -f "webpack.*serve" 2>/dev/null || true
echo -e "${GREEN}✅ Système arrêté proprement${NC}"
exit 0
}
# Capturer les signaux d'arrêt
trap cleanup SIGINT SIGTERM
# Fonction principale
main() {
# Aller dans le répertoire du projet
cd "$PROJECT_ROOT"
# Étapes de démarrage
stop_existing_processes
check_environment
start_backend
start_frontend
validate_connections
show_final_status
# Attendre indéfiniment (jusqu'à Ctrl+C)
while true; do
sleep 1
done
}
# Vérifier les arguments
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
echo "Usage: $0 [options]"
echo ""
echo "Options:"
echo " --help, -h Afficher cette aide"
echo " --validate Valider uniquement les connexions (sans démarrer)"
echo ""
echo "Ce script démarre le système Visual Workflow Builder complet avec :"
echo " - Backend Flask sur le port $BACKEND_PORT"
echo " - Frontend React sur le port $FRONTEND_PORT"
echo " - Toutes les API connectées et fonctionnelles"
exit 0
fi
if [ "$1" = "--validate" ]; then
echo -e "${BLUE}Mode validation uniquement${NC}"
cd "$PROJECT_ROOT"
python3 tests/integration/test_connexions_api_completes_09jan2026.py
exit $?
fi
# Lancer le système
main