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>
This commit is contained in:
270
scripts/start_system_complet_09jan2026.sh
Executable file
270
scripts/start_system_complet_09jan2026.sh
Executable file
@@ -0,0 +1,270 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user