#!/bin/bash

# LM Studio Web - Startup Script
# Lance le serveur web (frontend) et le serveur MCP (backend image generation)

set -e  # Exit on any error

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
BLUE='\033[0;34m'

echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║   LM Studio Web Chat - Démarrage              ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}"

# 1. Check ComfyUI
echo -e "\n${YELLOW}[1/3] Vérification de ComfyUI...${NC}"
if lsof -Pi :8188 -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo -e "   ${GREEN}✓ ComfyUI est en cours d'exécution sur le port 8188${NC}"
else
    echo -e "   ${RED}✗ ComfyUI n'est PAS en cours d'exécution${NC}"
    echo -e "   ${YELLOW}→ Veuillez démarrer ComfyUI d'abord :${NC}"
    echo -e "   ${YELLOW}  cd /chemin/vers/ComfyUI && python main.py${NC}"
    echo -e "   ${YELLOW}  (ComfyUI doit écouter sur http://127.0.0.1:8188)${NC}"
    exit 1
fi

# 2. Start Web Server (frontend)
echo -e "\n${YELLOW}[2/3] Démarrage du serveur web (frontend)...${NC}"
cd "$(dirname "$0")"
if lsof -Pi :8084 -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo -e "   ${YELLOW}⚠ Le port 8084 est déjà occupé${NC}"
    echo -e "   ${YELLOW}→ Le serveur web semble déjà en cours d'exécution${NC}"
else
    python3 -m http.server 8084 > server.log 2>&1 &
    SERVER_PID=$!
    echo $SERVER_PID > .web_server.pid
    sleep 1
    if ps -p $SERVER_PID > /dev/null; then
        echo -e "   ${GREEN}✓ Serveur web démarré sur http://localhost:8084${NC}"
        echo -e "   ${GREEN}  PID: $SERVER_PID${NC}"
    else
        echo -e "   ${RED}✗ Échec du démarrage du serveur web${NC}"
        cat server.log
        exit 1
    fi
fi

# 3. Start MCP Server (backend)
echo -e "\n${YELLOW}[3/3] Démarrage du serveur MCP (backend image)...${NC}"
cd backend
if lsof -Pi :8085 -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo -e "   ${YELLOW}⚠ Le port 8085 est déjà occupé${NC}"
    echo -e "   ${YELLOW}→ Le serveur MCP semble déjà en cours d'exécution${NC}"
else
    uvicorn mcp_server:app --reload --port 8085 > mcp_server.log 2>&1 &
    MCP_PID=$!
    echo $MCP_PID > .mcp_server.pid
    sleep 2
    if ps -p $MCP_PID > /dev/null; then
        echo -e "   ${GREEN}✓ Serveur MCP démarré sur http://localhost:8085${NC}"
        echo -e "   ${GREEN}  PID: $MCP_PID${NC}"
    else
        echo -e "   ${RED}✗ Échec du démarrage du serveur MCP${NC}"
        cat mcp_server.log
        exit 1
    fi
fi

# Summary
echo -e "\n${GREEN}╔════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║   Tous les services sont démarrés !            ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════════════╝${NC}"
echo ""
echo "🌐 Interface web: http://localhost:8084"
echo "🔧 MCP API: http://localhost:8085"
echo ""
echo "Pour arrêter les serveurs:"
echo "  ${YELLOW}./stop.sh${NC}   ou   ${YELLOW}pkill -f 'start.sh'${NC}"
echo ""
echo "📝 Logs:"
echo "  • Serveur web: $(pwd)/server.log"
echo "  • Serveur MCP: $(pwd)/backend/mcp_server.log"
echo ""
