/**
 * 服务部署工具类
 * 遵循阿里开发手册、大厂CI/CD标准
 * 
 * @param config 部署配置
 *   - environment: 环境标识
 *   - sshHost: SSH主机
 *   - sshUser: SSH用户
 *   - sshKey: SSH密钥路径
 *   - deployDir: 部署目录
 *   - composeFile: Compose文件名
 */
def call(Map config = [:]) {
    // 默认配置
    def environment = config.environment ?: env.ENVIRONMENT
    def sshHost = config.sshHost ?: env.SSH_HOST
    def sshUser = config.sshUser ?: env.SSH_USER
    def sshKey = config.sshKey ?: '/var/lib/jenkins/.ssh/id_rsa'
    def deployDir = config.deployDir ?: '/opt/fzx/deploy'
    def composeFile = config.composeFile ?: "podman-compose.${environment}.yml"
    
    echo "🚀 开始部署到 ${environment} 环境"
    
    // 创建部署目录
    sh "ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'mkdir -p ${deployDir}'"
    
    // 备份旧版本配置
    echo "📦 备份现有配置..."
    sh "ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'cp -r ${deployDir} /opt/fzx/backup/\$(date +%Y%m%d_%H%M%S) 2>/dev/null || true'"
    
    // 复制配置文件
    echo "📄 复制配置文件..."
    sh "ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'cp -r ${env.WORKSPACE}/infrastructure/compose/* ${deployDir}/'"
    
    // 更新环境变量配置
    echo "🔧 更新环境变量..."
    sh """
        ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'cat > ${deployDir}/.env << EOF
ENVIRONMENT=${environment}
VERSION=${env.VERSION}
IMAGE_REGISTRY=${env.IMAGE_REGISTRY}
NACOS_ADDR=${env.NACOS_ADDR}
NACOS_NAMESPACE=${env.NACOS_NAMESPACE}
MARIADB_HOST=${env.MARIADB_HOST}
REDIS_HOST=${env.REDIS_HOST}
EOF'
    """
    
    // 启动服务
    echo "🔧 启动容器服务..."
    sh """
        ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'cd ${deployDir} && COMPOSE_FILE=${composeFile} podman-compose up -d'
    """
    
    // 等待服务启动
    echo "⏳ 等待服务启动..."
    sleep 60
    
    // 健康检查
    echo "🧪 执行健康检查..."
    def healthCheck = sh script: """
        ssh -i ${sshKey} -o StrictHostKeyChecking=no ${sshUser}@${sshHost} 'cd ${deployDir} && COMPOSE_FILE=${composeFile} podman-compose ps'
    """, returnStatus: true
    
    if (healthCheck == 0) {
        echo "✅ 部署成功"
    } else {
        error "部署失败"
    }
}