#!/usr/bin/env python3
"""Redémarrage simple du serveur dashboard"""

import subprocess
import time
import requests
import sys
import os

print("\n🔄 Redémarrage du Dashboard API Server...")

# 1. Tuer les processus Python
print("\n1️⃣ Arrêt des anciens processus...")
try:
    if os.name == 'nt':  # Windows
        subprocess.run(['taskkill', '/F', '/IM', 'python.exe'], 
                      capture_output=True, check=False)
    else:
        subprocess.run(['pkill', '-f', 'dashboard_api_server'], 
                      capture_output=True, check=False)
    print("   ✅ Processus arrêtés")
except:
    print("   ⚠️ Impossible d'arrêter les processus")

time.sleep(2)

# 2. Démarrer le serveur
print("\n2️⃣ Démarrage du nouveau serveur...")
python_exe = ".venv\\Scripts\\python.exe" if os.name == 'nt' else ".venv/bin/python"

try:
    with open("dashboard_stdout.txt", "w") as stdout_file, \
         open("dashboard_stderr.txt", "w") as stderr_file:
        
        subprocess.Popen(
            [python_exe, "dashboard_api_server.py"],
            stdout=stdout_file,
            stderr=stderr_file,
            creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if os.name == 'nt' else 0
        )
    print("   ✅ Serveur lancé")
except Exception as e:
    print(f"   ❌ Erreur au lancement: {e}")
    sys.exit(1)

# 3. Attendre le démarrage
print("\n3️⃣ Attente du démarrage (7 secondes)...")
time.sleep(7)

# 4. Tester l'endpoint
print("\n4️⃣ Test de l'endpoint /api/cycle-status...")
try:
    response = requests.get("http://localhost:8889/api/cycle-status", timeout=3)
    
    if response.status_code == 200:
        print(f"   ✅ Endpoint fonctionne! Status: {response.status_code}")
        data = response.json()
        
        if data.get('success'):
            cycle = data.get('cycle', {})
            print(f"\n   🔄 Cycle: {cycle.get('simple')}")
            print(f"   📊 Barre: {cycle.get('detailed', {}).get('visual_bar')}")
            print(f"   ✅ Status: {cycle.get('detailed', {}).get('status')}")
    else:
        print(f"   ❌ Erreur HTTP {response.status_code}")
        print(f"      {response.text[:200]}")
        
except requests.exceptions.ConnectionError:
    print("   ❌ Impossible de se connecter (serveur pas encore prêt?)")
except Exception as e:
    print(f"   ❌ Erreur: {e}")

print("\n✅ Redémarrage terminé!\n")
print("   Dashboard: http://localhost:8889/dashboard.html\n")
