#!/bin/bash


set -e

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$PROJECT_ROOT"

echo "🛑 停止 HelloTax AI 本地开发环境"
echo "================================"

GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

if [ -f "apm/logs/dev-pids.txt" ]; then
    source apm/logs/dev-pids.txt

    echo -e "${YELLOW}停止本地进程...${NC}"

    if [ ! -z "$API_DOCS_PID" ] && kill -0 $API_DOCS_PID 2>/dev/null; then
        kill $API_DOCS_PID
        echo "✓ 已停止 API 文档服务 (PID: $API_DOCS_PID)"
    fi

    if [ ! -z "$BASE_PLATFORM_PID" ] && kill -0 $BASE_PLATFORM_PID 2>/dev/null; then
        kill $BASE_PLATFORM_PID
        echo "✓ 已停止 base_platform 后端 (PID: $BASE_PLATFORM_PID)"
    fi

    if [ ! -z "$SAAS_FRONTEND_PID" ] && kill -0 $SAAS_FRONTEND_PID 2>/dev/null; then
        kill $SAAS_FRONTEND_PID
        echo "✓ 已停止 saas_portal 前端 (PID: $SAAS_FRONTEND_PID)"
    fi

    if [ ! -z "$TRAINING_BACKEND_PID" ] && kill -0 $TRAINING_BACKEND_PID 2>/dev/null; then
        kill $TRAINING_BACKEND_PID
        echo "✓ 已停止训练中心后端 (PID: $TRAINING_BACKEND_PID)"
    fi

    if [ ! -z "$TRAINING_FRONTEND_PID" ] && kill -0 $TRAINING_FRONTEND_PID 2>/dev/null; then
        kill $TRAINING_FRONTEND_PID
        echo "✓ 已停止训练中心前端 (PID: $TRAINING_FRONTEND_PID)"
    fi

    if [ ! -z "$DATA_CENTER_BACKEND_PID" ] && kill -0 $DATA_CENTER_BACKEND_PID 2>/dev/null; then
        kill $DATA_CENTER_BACKEND_PID
        echo "✓ 已停止数据中心后端 (PID: $DATA_CENTER_BACKEND_PID)"
    fi

    if [ ! -z "$DATA_CENTER_CELERY_PID" ] && kill -0 $DATA_CENTER_CELERY_PID 2>/dev/null; then
        kill $DATA_CENTER_CELERY_PID
        echo "✓ 已停止数据中心 Celery Worker (PID: $DATA_CENTER_CELERY_PID)"
    fi

    if [ ! -z "$DATA_CENTER_FRONTEND_PID" ] && kill -0 $DATA_CENTER_FRONTEND_PID 2>/dev/null; then
        kill $DATA_CENTER_FRONTEND_PID
        echo "✓ 已停止数据中心前端 (PID: $DATA_CENTER_FRONTEND_PID)"
    fi

    rm apm/logs/dev-pids.txt
else
    echo -e "${YELLOW}未找到 PID 文件，尝试通过端口查找进程...${NC}"

    for port in 8500 8000 8001 8002 5174 5175 8888 8889 8890; do
        PID=$(lsof -ti:$port 2>/dev/null || true)
        if [ ! -z "$PID" ]; then
            kill $PID
            echo "✓ 已停止端口 $port 的进程 (PID: $PID)"
        fi
    done
fi

echo -e "\n${YELLOW}停止 Docker 服务...${NC}"

cd apm
docker-compose down
echo "✓ 已停止 APM 监控服务"

cd langfuse
docker-compose down
echo "✓ 已停止 Langfuse 服务"

cd "$PROJECT_ROOT"

cd base_platform
docker-compose down
echo "✓ 已停止 base_platform Docker 服务"

cd ../training_center
docker-compose down
echo "✓ 已停止训练中心 Docker 服务"

cd ../data_center
docker-compose down
echo "✓ 已停止数据中心 Docker 服务"

cd "$PROJECT_ROOT"

echo -e "\n${GREEN}================================${NC}"
echo -e "${GREEN}✓ 所有服务已停止${NC}"
echo -e "${GREEN}================================${NC}"
