#!/bin/bash

# 启动所有服务的脚本

set -e

echo "启动税务数据中心服务..."

# 获取脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
DATA_CENTER_DIR="$PROJECT_ROOT/data_center"
cd "$DATA_CENTER_DIR"

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 检查是否在虚拟环境中
if [ -z "$VIRTUAL_ENV" ]; then
    if [ -d "backend/venv" ]; then
        echo -e "${YELLOW}激活虚拟环境...${NC}"
        source backend/venv/bin/activate
    else
        echo -e "${YELLOW}未找到虚拟环境，请先运行 ./deploy.sh${NC}"
        exit 1
    fi
fi

# 创建日志目录
mkdir -p logs

# 启动后端 API
echo -e "${GREEN}启动后端 API (端口 8002)...${NC}"
cd backend
nohup uvicorn app.main:app --host 0.0.0.0 --port 8002 > ../logs/backend.log 2>&1 &
BACKEND_PID=$!
echo $BACKEND_PID > ../logs/backend.pid
echo -e "${GREEN}✓ 后端 API 已启动 (PID: $BACKEND_PID)${NC}"

# 启动 Celery Worker
echo -e "${GREEN}启动 Celery Worker...${NC}"
nohup celery -A app.celery_app worker -l info -Q data_center_queue > ../logs/celery-worker.log 2>&1 &
WORKER_PID=$!
echo $WORKER_PID > ../logs/celery-worker.pid
echo -e "${GREEN}✓ Celery Worker 已启动 (PID: $WORKER_PID)${NC}"

# 启动 Celery Beat
echo -e "${GREEN}启动 Celery Beat...${NC}"
nohup celery -A app.celery_app beat -l info > ../logs/celery-beat.log 2>&1 &
BEAT_PID=$!
echo $BEAT_PID > ../logs/celery-beat.pid
echo -e "${GREEN}✓ Celery Beat 已启动 (PID: $BEAT_PID)${NC}"

cd ..

# 启动前端
echo -e "${GREEN}启动前端 (端口 8890)...${NC}"
cd frontend
nohup npm run dev > ../logs/frontend.log 2>&1 &
FRONTEND_PID=$!
echo $FRONTEND_PID > ../logs/frontend.pid
echo -e "${GREEN}✓ 前端已启动 (PID: $FRONTEND_PID)${NC}"

cd ..

echo -e "\n${GREEN}=========================================="
echo "所有服务已启动！"
echo "==========================================${NC}"
echo -e "前端: http://localhost:8890"
echo -e "后端 API: http://localhost:8002"
echo -e "API 文档: http://localhost:8002/docs"
echo -e ""
echo -e "日志文件位置: logs/"
echo -e "停止服务: ./stop.sh"
