#!/bin/bash
# 健壮的服务启动脚本

set -e

LOG_FILE="/var/log/kaopeilian_start.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

cd /root/aiedu

log "=== 开始启动考培练系统服务 ==="

# 1. 检查Docker服务
log "1. 检查Docker服务状态..."
if ! systemctl is-active --quiet docker; then
    log "启动Docker服务..."
    systemctl start docker
    sleep 10
fi

# 2. 清理可能的问题容器
log "2. 清理问题容器..."
docker compose down --remove-orphans 2>/dev/null || true

# 3. 分步启动服务（避免前端构建失败影响其他服务）
log "3. 启动基础服务..."
docker compose up -d mysql redis
sleep 30

log "4. 启动后端服务..."
docker compose up -d backend
sleep 20

log "5. 尝试构建前端..."
if docker compose build frontend; then
    log "前端构建成功，启动前端服务..."
    docker compose up -d frontend
else
    log "前端构建失败，使用旧镜像启动..."
    docker compose up -d frontend || log "前端启动失败，跳过前端服务"
fi

log "6. 启动Nginx..."
docker compose up -d nginx

# 7. 检查服务状态
log "7. 检查服务状态..."
sleep 20
docker compose ps

# 8. 健康检查
log "8. 执行健康检查..."
if curl -f -s https://aiedu.ireborn.com.cn/health > /dev/null; then
    log "✅ 后端服务正常"
else
    log "❌ 后端服务异常"
fi

if curl -f -s -I https://aiedu.ireborn.com.cn > /dev/null; then
    log "✅ 前端服务正常"
else
    log "❌ 前端服务异常"
fi

log "=== 服务启动完成 ==="
