- 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>
270 lines
8.3 KiB
Bash
Executable File
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 |