#!/bin/bash

echo "=== 启动报告生成应用 ==="

# 清理旧进程
echo "清理旧进程..."
for port in 3002 5173; do
  pid=$(lsof -t -i:$port 2>/dev/null)
  if [ -n "$pid" ]; then
    echo "  关闭端口 $port 上的进程 (PID: $pid)"
    kill $pid 2>/dev/null
    sleep 1
    kill -0 $pid 2>/dev/null && kill -9 $pid 2>/dev/null
  fi
done
sleep 1

# 检查服务器依赖
echo "检查服务器依赖..."
cd server
if [ ! -d "node_modules" ]; then
    echo "安装服务器依赖..."
    npm install
fi
cd ..

# 检查前端依赖
echo "检查前端依赖..."
if [ ! -d "node_modules" ]; then
    echo "安装前端依赖..."
    npm install
fi

# 启动 PDF 生成服务器
echo "启动 PDF 生成服务器 (端口: 3002)..."
cd server
TARGET_URL=http://localhost:5173 nohup node src/index.js > server.log 2>&1 &
SERVER_PID=$!
cd ..

# 等待服务器就绪
echo "等待服务器启动..."
for i in $(seq 1 10); do
  if curl -s http://localhost:3002 > /dev/null 2>&1 || lsof -t -i:3002 > /dev/null 2>&1; then
    echo "服务器已启动：http://localhost:3002"
    break
  fi
  if [ $i -eq 10 ]; then
    echo "错误：服务器启动失败！查看 server/server.log"
    kill $SERVER_PID 2>/dev/null
    exit 1
  fi
  sleep 1
done

# 启动前端开发服务器
echo "启动前端开发服务器 (端口: 5173)..."
echo ""
echo "前端访问地址：http://localhost:5173"
echo "PDF 服务器地址：http://localhost:3002"
echo ""
echo "按 Ctrl+C 停止所有服务"

# 确保 Ctrl+C 能同时停止两个进程
trap "echo '停止服务...'; kill $SERVER_PID 2>/dev/null; exit" INT TERM

npm run dev
