#!/usr/bin/env python3 """ Script de démarrage simple pour Visual Workflow Builder Auteur : Dom, Alice, Kiro - 8 janvier 2026 """ import os import sys import subprocess import time import requests from pathlib import Path def verifier_environnement(): """Vérifie que l'environnement virtuel est activé""" print("🔍 Vérification de l'environnement...") # Vérifier Python python_path = sys.executable print(f"Python utilisé : {python_path}") if "venv_v3" not in python_path: print("⚠️ ATTENTION : Environnement virtuel venv_v3 non détecté") return False # Vérifier les dépendances critiques try: import flask import mss print(f"✅ Flask : {flask.__version__}") print("✅ MSS : Disponible") return True except ImportError as e: print(f"❌ Dépendance manquante : {e}") return False def tester_backend(): """Teste la connectivité du backend""" print("\n🔍 Test du backend...") try: response = requests.get("http://localhost:5003/api/real-demo/capture/status", timeout=5) if response.status_code == 200: print("✅ Backend accessible sur le port 5003") data = response.json() print(f" - Moniteurs détectés : {data['status']['monitors_count']}") print(f" - Capture active : {data['status']['is_capturing']}") return True else: print(f"❌ Backend répond avec le code : {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"❌ Backend inaccessible : {e}") return False def tester_frontend(): """Teste la connectivité du frontend""" print("\n🔍 Test du frontend...") try: response = requests.get("http://localhost:3000", timeout=5) if response.status_code == 200: print("✅ Frontend accessible sur le port 3000") return True else: print(f"❌ Frontend répond avec le code : {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"❌ Frontend inaccessible : {e}") return False def demarrer_services(): """Démarre les services si nécessaire""" print("\n🚀 Démarrage des services...") # Changer vers le répertoire du projet os.chdir(Path(__file__).parent) # Démarrer le backend si nécessaire if not tester_backend(): print("Démarrage du backend...") backend_cmd = [sys.executable, "backend/app.py"] subprocess.Popen(backend_cmd, env={**os.environ, "PORT": "5003"}) time.sleep(3) # Démarrer le frontend si nécessaire if not tester_frontend(): print("Démarrage du frontend...") frontend_cmd = ["npm", "start"] subprocess.Popen(frontend_cmd, cwd="frontend") time.sleep(5) def main(): """Fonction principale""" print("🎯 Visual Workflow Builder - Diagnostic et Démarrage") print("=" * 50) # Vérifications if not verifier_environnement(): print("\n❌ Environnement non conforme") sys.exit(1) # Tests de connectivité backend_ok = tester_backend() frontend_ok = tester_frontend() if backend_ok and frontend_ok: print("\n✅ Tous les services sont opérationnels !") print("\n🌐 Accès utilisateur :") print(" Frontend : http://localhost:3000") print(" Backend : http://localhost:5003") print("\n📋 Navigation :") print(" 1. Ouvrir http://localhost:3000") print(" 2. Naviguer vers 'Démonstration Réelle'") print(" 3. Sélectionner 'Capture d'Écran Réelle'") else: print("\n⚠️ Certains services ne répondent pas") demarrer_services() # Re-test après démarrage time.sleep(5) if tester_backend() and tester_frontend(): print("\n✅ Services démarrés avec succès !") else: print("\n❌ Échec du démarrage des services") sys.exit(1) if __name__ == "__main__": main()