#!/bin/bash
set -e

PROJECT_NAME="salvoj"
COMPOSE_FILE="docker-compose.yml"
BASE_URL="https://www.mldong.com/deploy/mldong-salvo-jeeflow"

docker compose version >/dev/null 2>&1 || { echo "❌ 需要 Docker Compose v2"; exit 1; }

if docker compose -p "$PROJECT_NAME" ps --status running 2>/dev/null | grep -q salvoj; then
    echo "⚠️  mldong-salvo-jeeflow 已在运行"
    echo "   重新部署: docker compose -p $PROJECT_NAME down -v"
    exit 0
fi

cd "$(dirname "$0")"

if [ ! -f "$COMPOSE_FILE" ]; then
    mkdir -p ./mldong-salvo-jeeflow
    cd ./mldong-salvo-jeeflow
    echo "📥 从 ${BASE_URL} 下载配置..."
    curl -fsSL -o "$COMPOSE_FILE" "${BASE_URL}/${COMPOSE_FILE}"
fi

echo "📦 拉取镜像（API 默认生产 tag；验证候选时先 export BACKEND_IMAGE=<候选全 tag>）..."
docker compose -p "$PROJECT_NAME" pull

echo "🚀 启动栈 ..."
docker compose -p "$PROJECT_NAME" up -d

echo "⏳ 等待 MySQL ..."
for i in $(seq 1 60); do
    status=$(docker inspect --format='{{.State.Health.Status}}' salvoj-mysql 2>/dev/null || echo "unknown")
    if [ "$status" = "healthy" ]; then
        echo "✅ MySQL 就绪"
        break
    fi
    if [ "$i" -eq 60 ]; then
        echo "⚠️  MySQL 超时: docker logs salvoj-mysql"
        exit 1
    fi
    sleep 3
done

echo "⏳ 等待 API ..."
for i in $(seq 1 60); do
    body=$(curl -s -m 3 -X POST "http://127.0.0.1:28100/sys/login" \
      -H "Content-Type: application/json" \
      -d '{"userName":"superAdmin","password":"123456"}' || true)
    if echo "$body" | grep -qE '"code"[[:space:]]*:[[:space:]]*0'; then
        echo "✅ API 就绪"
        break
    fi
    if [ "$i" -eq 60 ]; then
        echo "⚠️  API 超时: docker logs salvoj-api"
        exit 1
    fi
    sleep 3
done

echo ""
echo "=== 🎉 mldong-salvo-jeeflow 部署完成 ==="
echo "  前端: http://localhost:28080"
echo "  API:  http://localhost:28100"
echo "  MySQL: localhost:28406"
echo "  登录: superAdmin / 123456"
echo ""
echo "  清理: docker compose -p $PROJECT_NAME down -v"
