#!/bin/bash


# 检查是否有 sudo 权限
if ! sudo -n true 2>/dev/null; then
    echo "⚠️  需要 sudo 权限来执行此脚本"
    echo "请确保您有 sudo 权限，或者以 root 用户运行"
    exit 1
fi

# 脚本开始
echo "🚀 开始安装 Sailors 应用..."
echo "📋 系统信息: $(lsb_release -d | cut -f2) ($(uname -m))"

# 检查系统版本（Ubuntu 24）
OS_VERSION=$(lsb_release -rs 2>/dev/null || echo "unknown")
if [[ ! "$OS_VERSION" =~ ^24\. ]]; then
    echo "⚠️  警告: 此脚本针对 Ubuntu 24 优化，当前系统版本: $OS_VERSION"
    if [[ -t 0 ]]; then
        # 交互模式
        read -p "是否继续? (y/N): " -n 1 -r
        echo
        if [[ ! $REPLY =~ ^[Yy]$ ]]; then
            exit 1
        fi
    else
        # 非交互模式，自动继续
        echo "   非交互模式，自动继续..."
    fi
fi

# Docker 版本配置
DOCKER_VERSION="26.1.4"

# 检查并安装 Docker（如果已存在则跳过）
if command -v docker &>/dev/null; then
    INSTALLED_VERSION=$(docker --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
    echo "✅ Docker 已安装: $(docker --version)"
    if [[ ! "$INSTALLED_VERSION" =~ ^26\. ]]; then
        echo "⚠️  当前 Docker 版本为 $INSTALLED_VERSION，建议版本为 26.x"
    fi
else
    echo "📦 开始安装 Docker $DOCKER_VERSION..."
    
    # 更新包索引并安装依赖
    echo "🔄 更新包索引并安装依赖..."
    sudo apt-get update -y
    sudo apt-get install -y \
        ca-certificates \
        curl \
        gnupg \
        lsb-release \
        apt-transport-https \
        software-properties-common

    # 尝试多个 Docker 镜像源
    DOCKER_SOURCES=(
        "https://download.docker.com/linux/ubuntu"
        "https://mirrors.aliyun.com/docker-ce/linux/ubuntu"
        "https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu"
    )
    
    DOCKER_KEYS=(
        "https://download.docker.com/linux/ubuntu/gpg"
        "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg"
        "https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg"
    )
    
    DOCKER_INSTALLED=false
    
    for i in "${!DOCKER_SOURCES[@]}"; do
        SOURCE="${DOCKER_SOURCES[$i]}"
        KEY_URL="${DOCKER_KEYS[$i]}"
        
        echo "🔑 尝试镜像源 $((i+1))/${#DOCKER_SOURCES[@]}: ${SOURCE}"
        
        # 清理之前的配置
        sudo rm -f /etc/apt/keyrings/docker.gpg
        sudo rm -f /etc/apt/sources.list.d/docker.list
        
        # 添加 Docker GPG key
        sudo mkdir -p /etc/apt/keyrings
        if curl -fsSL "$KEY_URL" | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 2>/dev/null; then
            sudo chmod a+r /etc/apt/keyrings/docker.gpg
            
            # 添加 Docker 仓库
            echo \
              "deb [arch=$(dpkg --print-architecture) \
              signed-by=/etc/apt/keyrings/docker.gpg] \
              ${SOURCE} \
              $(lsb_release -cs) stable" \
              | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
            
            # 更新包索引
            if sudo apt-get update -y 2>/dev/null; then
                # 查找完整版本号
                echo "🔍 查找 Docker $DOCKER_VERSION 版本..."
                FULL_VERSION=$(apt-cache madison docker-ce 2>/dev/null | awk -v ver="$DOCKER_VERSION" '$3 ~ ver {print $3; exit}')
                
                if [[ -n "$FULL_VERSION" ]]; then
                    echo "✅ 找到版本: $FULL_VERSION (源: ${SOURCE})"
                    # 安装指定版本
                    if sudo apt-get install -y \
                        docker-ce=$FULL_VERSION \
                        docker-ce-cli=$FULL_VERSION \
                        containerd.io \
                        docker-buildx-plugin \
                        docker-compose-plugin 2>/dev/null; then
                        DOCKER_INSTALLED=true
                        echo "✅ Docker 安装成功 (使用源: ${SOURCE})"
                        break
                    fi
                else
                    echo "⚠️  未找到指定版本，尝试安装最新稳定版本..."
                    if sudo apt-get install -y \
                        docker-ce \
                        docker-ce-cli \
                        containerd.io \
                        docker-buildx-plugin \
                        docker-compose-plugin 2>/dev/null; then
                        DOCKER_INSTALLED=true
                        echo "✅ Docker 安装成功 (使用源: ${SOURCE}, 最新版本)"
                        break
                    fi
                fi
            fi
        fi
        
        echo "⚠️  镜像源 $((i+1)) 失败，尝试下一个..."
    done
    
    if [[ "$DOCKER_INSTALLED" == "false" ]]; then
        echo "❌ 所有 Docker 镜像源都失败，无法安装 Docker"
        exit 1
    fi

    # 启动并设置开机自启
    echo "🚀 启动 Docker 服务..."
    sudo systemctl start docker
    sudo systemctl enable docker

    # 验证 Docker 安装
    if ! docker --version &>/dev/null; then
        echo "❌ Docker 安装失败或无法启动"
        exit 1
    fi
    echo "✅ Docker 安装成功: $(docker --version)"
    
    # 将当前用户添加到 docker 组（可选，避免每次使用 sudo）
    if [[ -n "${SUDO_USER:-}" ]]; then
        echo "👤 将用户 $SUDO_USER 添加到 docker 组..."
        sudo usermod -aG docker "$SUDO_USER" || true
    fi
fi

# 检查并安装 docker-compose（优先使用新版插件）
echo "🔍 检查 docker-compose..."
if docker compose version &>/dev/null 2>&1; then
    echo "✅ docker compose 插件已安装: $(docker compose version | head -1)"
    DOCKER_COMPOSE_CMD="docker compose"
elif command -v docker-compose &>/dev/null; then
    echo "✅ docker-compose 已安装: $(docker-compose --version)"
    DOCKER_COMPOSE_CMD="docker-compose"
else
    echo "📦 安装 docker-compose..."
    # 尝试安装新版插件
    if sudo apt-get install -y docker-compose-plugin 2>/dev/null; then
        if docker compose version &>/dev/null 2>&1; then
            echo "✅ docker compose 插件安装成功"
            DOCKER_COMPOSE_CMD="docker compose"
        else
            # 回退到独立版本
            sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
                -o /usr/local/bin/docker-compose
            sudo chmod +x /usr/local/bin/docker-compose
            DOCKER_COMPOSE_CMD="docker-compose"
        fi
    else
        # 安装独立版本
        sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
            -o /usr/local/bin/docker-compose
        sudo chmod +x /usr/local/bin/docker-compose
        DOCKER_COMPOSE_CMD="docker-compose"
    fi
    
    if ! $DOCKER_COMPOSE_CMD version &>/dev/null 2>&1; then
        echo "❌ docker-compose 安装失败"
        exit 1
    fi
    echo "✅ docker-compose 安装成功"
fi

# 优化系统配置
echo "⚙️  优化系统配置..."

add_or_update_sysctl_conf() {
    local key="$1"
    local value="$2"
    local file="/etc/sysctl.conf"

    if sudo grep -q "^$key" "$file" 2>/dev/null; then
        sudo sed -i "s|^$key.*|$key = $value|g" "$file"
        echo "  ✓ 更新: $key = $value"
    else
        echo "$key = $value" | sudo tee -a "$file" > /dev/null
        echo "  ✓ 添加: $key = $value"
    fi
}

# 修改系统参数，确保 vm.overcommit_memory=1
if ! sudo grep -q 'vm.overcommit_memory=1' /etc/sysctl.conf 2>/dev/null; then
    echo 'vm.overcommit_memory=1' | sudo tee -a /etc/sysctl.conf > /dev/null
    echo "  ✓ 添加: vm.overcommit_memory=1"
fi
sudo sysctl vm.overcommit_memory=1 > /dev/null 2>&1 || true

# 网络优化参数
add_or_update_sysctl_conf "net.ipv4.tcp_max_tw_buckets" "20000"
add_or_update_sysctl_conf "net.core.somaxconn" "65535"
add_or_update_sysctl_conf "net.ipv4.tcp_max_syn_backlog" "262144"
add_or_update_sysctl_conf "net.core.netdev_max_backlog" "30000"
# 注意：net.ipv4.tcp_tw_recycle 在 Linux 4.12+ 内核中已被移除，不再设置
add_or_update_sysctl_conf "fs.file-max" "6815744"
add_or_update_sysctl_conf "net.netfilter.nf_conntrack_max" "2621440"
add_or_update_sysctl_conf "net.ipv4.ip_local_port_range" "10240 65000"
add_or_update_sysctl_conf "net.ipv4.tcp_fin_timeout" "30"
add_or_update_sysctl_conf "net.ipv4.tcp_keepalive_time" "1200"
add_or_update_sysctl_conf "net.ipv4.tcp_keepalive_probes" "3"
add_or_update_sysctl_conf "net.ipv4.tcp_keepalive_intvl" "15"

# 应用系统参数
echo "🔄 应用系统参数..."
sudo sysctl -p > /dev/null 2>&1 || true

echo "✅ 系统配置优化完成"

# 创建必要的目录
echo "📁 创建必要的目录..."
mkdir -p initdb
mkdir -p app
mkdir -p public

# 生成 SQL 初始化文件（覆盖已存在的文件）
echo "📝 生成数据库初始化文件..."

# 如果存在 build/sql/sailors.sql，则使用它，否则使用内嵌的 SQL
if [[ -f "build/sql/sailors.sql" ]]; then
    echo "  ✓ 使用并覆盖: build/sql/sailors.sql -> initdb/sailors.sql"
    cp -f build/sql/sailors.sql initdb/sailors.sql
else
    echo "  ✓ 使用内嵌 SQL 定义（覆盖已存在的文件）"
    cat > initdb/sailors.sql <<'EOF'
/*
 Navicat Premium Dump SQL

 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 110802 (11.8.2-MariaDB-ubu2404)
 Source Host           : localhost:3306
 Source Schema         : sailors

 Target Server Type    : MySQL
 Target Server Version : 110802 (11.8.2-MariaDB-ubu2404)
 File Encoding         : 65001

 Date: 17/11/2025 11:40:48
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for access_log
-- ----------------------------
DROP TABLE IF EXISTS `access_log`;
CREATE TABLE `access_log`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `ip_address` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT 'ip地址',
  `user_agent` varchar(800) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '用户UA',
  `host` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '所属域名',
  `request_method` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '请求方式',
  `endpoint` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '请求端点',
  `response_status` int NULL DEFAULT NULL COMMENT '响应状态码',
  `response_time_ms` int NULL DEFAULT NULL COMMENT '响应耗时',
  `referrer` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '来源网址',
  `status` int NULL DEFAULT NULL COMMENT '状态(拦截原因)',
  `remark` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '执行备注',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `idx_log_ip_time`(`ip_address` ASC, `create_time` ASC) USING BTREE,
  INDEX `idx_log_time`(`create_time` ASC) USING BTREE,
  INDEX `idx_log_ip_host`(`ip_address` ASC, `host` ASC) USING BTREE,
  INDEX `idx_log_status`(`ip_address` ASC, `status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_uca1400_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for payment
-- ----------------------------
DROP TABLE IF EXISTS `payment`;
CREATE TABLE `payment`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `uuid` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT 'uuid',
  `site_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '站点名称',
  `site_country` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '站点国家',
  `device` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '用户设备',
  `ip` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '用户ip\r\n',
  `ua` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '用户ua',
  `host` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '域名',
  `status` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '状态',
  `operator` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '操作人',
  `allocation` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '分流分配用户',
  `router` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '当前所在页面',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `site_name`(`site_name` ASC) USING BTREE,
  INDEX `host`(`host` ASC) USING BTREE,
  INDEX `device`(`device` ASC) USING BTREE,
  INDEX `ip`(`ip` ASC) USING BTREE,
  INDEX `device_2`(`device` ASC, `host` ASC) USING BTREE,
  INDEX `create_time`(`create_time` ASC) USING BTREE,
  INDEX `host_2`(`host` ASC, `create_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_uca1400_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for payment_info
-- ----------------------------
DROP TABLE IF EXISTS `payment_info`;
CREATE TABLE `payment_info`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `order_id` int NULL DEFAULT NULL COMMENT '订单对应的id',
  `order_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '订单详情',
  `status` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '订单状态',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id` DESC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_uca1400_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for user_operation_log
-- ----------------------------
DROP TABLE IF EXISTS `user_operation_log`;
CREATE TABLE `user_operation_log`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `ip` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '访问IP',
  `name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '模块名称',
  `operation_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '操作名称',
  `status` int NULL DEFAULT NULL COMMENT '类型',
  `remark` text CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL COMMENT '错误日志',
  `operation_number` int NULL DEFAULT NULL COMMENT '操作数量',
  `operation_user` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci NULL DEFAULT NULL COMMENT '操作人',
  `operation_time_ms` int NULL DEFAULT NULL COMMENT '执行耗时',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_uca1400_ai_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;
EOF
fi

echo "✅ SQL 文件已生成: initdb/sailors.sql"

# 生成 docker-compose 配置文件（覆盖已存在的文件）
echo "📝 生成 docker-compose 配置文件..."

# 如果存在 build/compose.yml，则使用它，否则使用内嵌的配置

cp -f build/compose.yml compose.yml || cat > compose.yml <<'EOF'
version: '3.8'

services:
  sailors-db:
    image: mariadb:12.0.2
    restart: always
    container_name: sailors-db
    environment:
      - MARIADB_ROOT_PASSWORD=MtA5QXsjyM8P64tXUXvz
      - MARIADB_DATABASE=sailors
      - TZ=Asia/Shanghai
    volumes:
      - mysql_data:/var/lib/mysql
      - ./initdb:/docker-entrypoint-initdb.d
    healthcheck:
      test: ["CMD", "mariadb", "-uroot", "-pMtA5QXsjyM8P64tXUXvz", "-D", "sailors", "-e", "SELECT 1;"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    networks:
      - sailors-network
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "5"

  sailors-redis:
    image: redis:7.0
    restart: always
    container_name: sailors-redis
    environment:
      - TZ=Asia/Shanghai
    networks:
      - sailors-network
    volumes:
      - redis_data:/data
    command: ["redis-server", "--appendonly", "yes"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "5"

  sailors-app:
    image: registry.gitlab.com/sailors-admln/app/sailors-app
    container_name: sailors-app
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - app_resources:/app/resources/
      - app_system:/app/system/
      - /:/host
      - nginx_ssl:/etc/nginx/ssl/
      - nginx_config:/etc/nginx/conf.d/
      - ./public:/public
      - app_website:/app/webSite/
    restart: always
    networks:
      - sailors-network
    depends_on:
      sailors-db:
        condition: service_healthy
      sailors-redis:
        condition: service_healthy
    dns:
      - 8.8.8.8
      - 1.1.1.1
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "5"

  sailors-nginx:
    image: registry.gitlab.com/sailors-admln/app/sailors-nginx
    restart: always
    container_name: sailors-nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    networks:
      - sailors-network
    volumes:
      - nginx_config:/etc/nginx/conf.d/
      - nginx_ssl:/etc/nginx/ssl/
      - app_resources:/var/www/resources/
    depends_on:
      - sailors-app
    dns:
      - 8.8.8.8
      - 1.1.1.1
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "5"

networks:
  sailors-network:
    driver: bridge

volumes:
  mysql_data:
  app_system:
  app_resources:
  nginx_config:
  nginx_ssl:
  redis_data:
  app_website:
EOF


echo "✅ compose.yml 文件已生成"

# 确保 Docker 服务运行
echo "🔧 确保 Docker 服务运行..."
sudo systemctl start docker 2>/dev/null || true
sudo systemctl enable docker 2>/dev/null || true

# 启动应用服务
echo "🚀 启动应用服务..."
echo "  使用命令: $DOCKER_COMPOSE_CMD"

# 拉取最新镜像
echo "📥 拉取 Docker 镜像..."
if sudo $DOCKER_COMPOSE_CMD pull 2>&1 | grep -q "error\|Error\|ERROR"; then
    echo "⚠️  拉取镜像时出现错误，继续使用现有镜像..."
else
    echo "✅ 镜像拉取完成"
fi

# 停止现有服务（如果存在）
echo "🛑 停止现有服务..."
sudo $DOCKER_COMPOSE_CMD down 2>/dev/null || true

# 启动服务
echo "▶️  启动服务..."
if sudo $DOCKER_COMPOSE_CMD up -d; then
    echo "✅ 服务启动成功"
else
    echo "❌ 服务启动失败"
    echo "查看日志: sudo $DOCKER_COMPOSE_CMD logs"
    exit 1
fi

# 等待服务就绪
echo "⏳ 等待服务就绪..."
sleep 5

# 显示服务状态
echo "📊 服务状态:"
sudo $DOCKER_COMPOSE_CMD ps

# 等待应用初始化完成
FILE="./public/public.txt"
MAX_WAIT=300
WAIT_TIME=0
INTERVAL=2

echo "⏳ 等待应用初始化完成..."
echo "   这将最多等待 ${MAX_WAIT} 秒..."

while [ $WAIT_TIME -lt $MAX_WAIT ]; do
    if [ -f "$FILE" ]; then
        echo ""
        echo "✅ 应用初始化完成！"
        echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
        cat "$FILE"
        echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
        break
    else
        sleep $INTERVAL
        WAIT_TIME=$((WAIT_TIME + INTERVAL))
        if [ $((WAIT_TIME % 20)) -eq 0 ]; then
            echo "   ⏳ 已等待 ${WAIT_TIME} 秒，继续等待..."
            # 显示服务状态
            echo "   服务状态:"
            sudo $DOCKER_COMPOSE_CMD ps --format "table {{.Name}}\t{{.Status}}" | tail -n +2 | sed 's/^/      /'
        fi
    fi
done

if [ ! -f "$FILE" ]; then
    echo ""
    echo "⚠️  超时：应用在 ${MAX_WAIT} 秒内未完成初始化"
    echo ""
    echo "📋 故障排查:"
    echo "   1. 查看应用日志: sudo $DOCKER_COMPOSE_CMD logs sailors-app"
    echo "   2. 查看所有服务日志: sudo $DOCKER_COMPOSE_CMD logs"
    echo "   3. 检查服务状态: sudo $DOCKER_COMPOSE_CMD ps"
    echo ""
    exit 1
fi




