#!/bin/bash
# ============================================
# 智步楼梯灯AI订单助手 v1.8 并行部署脚本
# 执行方式: bash deploy-v1.8.sh
# ============================================

echo "========================================"
echo "  智步楼梯灯AI订单助手 v1.8 部署脚本"
echo "========================================"
echo ""

# 配置变量
LOCAL_PORT=8081  # v1.8使用新端口，避免与v1.7冲突
FRP_REMOTE_PORT=7009  # FRP远程端口（v1.7使用7008）
DOMAIN="tools.we-smart.cn"
ALICLOUD_IP="8.138.219.128"
ALICLOUD_PASSWORD="WEsmart2846"

echo "【配置信息】"
echo "本地端口: $LOCAL_PORT"
echo "FRP远程端口: $FRP_REMOTE_PORT"
echo "域名: $DOMAIN"
echo "阿里云IP: $ALICLOUD_IP"
echo ""

# 步骤1: 查找本地项目路径
echo "【步骤1】查找本地项目路径..."

# 尝试多个可能的路径
POSSIBLE_PATHS=(
    "/home/maocai/.openclaw/workspace/tools/stair-order"
    "/root/.openclaw/workspace/tools/stair-order"
    "/www/tools/stair-order"
    "./stair-order"
)

PROJECT_PATH=""
for path in "${POSSIBLE_PATHS[@]}"; do
    if [ -d "$path" ]; then
        PROJECT_PATH="$path"
        echo "✓ 找到项目路径: $PROJECT_PATH"
        break
    fi
done

if [ -z "$PROJECT_PATH" ]; then
    echo "✗ 未找到项目路径，请手动指定:"
    read -p "请输入stair-order项目路径: " PROJECT_PATH
    if [ ! -d "$PROJECT_PATH" ]; then
        echo "✗ 路径不存在: $PROJECT_PATH"
        exit 1
    fi
fi

echo ""

# 步骤2: 创建v1.8版本
echo "【步骤2】创建v1.8版本..."
cd "$PROJECT_PATH" || exit 1

# 获取父目录
PARENT_DIR=$(dirname "$PROJECT_PATH")
V18_PATH="$PARENT_DIR/stair-order-v1.8"

# 如果v1.8已存在，备份
if [ -d "$V18_PATH" ]; then
    BACKUP_PATH="${V18_PATH}-backup-$(date +%Y%m%d%H%M%S)"
    echo "v1.8已存在，备份到: $BACKUP_PATH"
    mv "$V18_PATH" "$BACKUP_PATH"
fi

# 复制v1.7到v1.8
cp -r "$PROJECT_PATH" "$V18_PATH"
echo "✓ 已创建v1.8版本: $V18_PATH"
echo ""

# 步骤3: 修改导出功能代码
echo "【步骤3】修改导出功能代码..."

# 创建修复后的export.js
cat > "$V18_PATH/export-v1.8.js" << 'EOF'
// ============================================
// 智步楼梯灯AI订单助手 v1.8 - 导出功能
// 更新日期：2026-04-21
// 更新内容：修复CSV换行问题，支持多格式导出
// ============================================

// 当前订单数据（全局变量）
let currentOrderData = null;

// 设置当前订单数据
function setOrderData(orderData) {
    currentOrderData = orderData;
}

// 导出订单为CSV格式（修复版）
function exportOrderToCSV(orderData) {
    if (!orderData) {
        alert('请先创建订单');
        return;
    }
    
    // CSV表头
    const headers = ['楼层', '踏步编号', '尺寸(mm)', '数量', '备注'];
    
    // 构建CSV内容 - 使用 \r\n 确保Windows和Mac都能正常换行
    let csvContent = '\uFEFF'; // 添加BOM，确保中文不乱码
    csvContent += headers.join(',') + '\r\n'; // 表头换行
    
    // 添加数据行
    orderData.items.forEach(item => {
        const row = [
            escapeCSV(item.floor),
            escapeCSV(item.stepNumber),
            escapeCSV(item.size),
            item.quantity || 1,
            escapeCSV(item.note)
        ];
        csvContent += row.join(',') + '\r\n'; // 每行数据换行
    });
    
    // 添加空行和订单汇总信息
    csvContent += '\r\n'; // 空行
    csvContent += '订单信息,\r\n';
    csvContent += `订单编号,${escapeCSV(orderData.orderId)}\r\n`;
    csvContent += `客户名称,${escapeCSV(orderData.customerName)}\r\n`;
    csvContent += `联系电话,${escapeCSV(orderData.phone)}\r\n`;
    csvContent += `订单日期,${escapeCSV(orderData.date)}\r\n`;
    csvContent += `总数量,${orderData.totalQuantity}\r\n`;
    csvContent += `总金额,${orderData.totalAmount}\r\n`;
    
    // 创建并下载文件
    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
    const link = document.createElement('a');
    const url = URL.createObjectURL(blob);
    link.setAttribute('href', url);
    link.setAttribute('download', `楼梯灯订单_${orderData.orderId}_${formatDate(new Date())}.csv`);
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    URL.revokeObjectURL(url);
}

// 辅助函数：处理CSV特殊字符
function escapeCSV(value) {
    if (value === null || value === undefined) return '';
    value = String(value);
    // 如果包含逗号、引号或换行符，需要用引号包裹
    if (value.includes(',') || value.includes('"') || value.includes('\n') || value.includes('\r')) {
        // 将引号替换为两个引号
        value = value.replace(/"/g, '""');
        return `"${value}"`;
    }
    return value;
}

// 辅助函数：格式化日期
function formatDate(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}${month}${day}`;
}

// 切换导出菜单显示/隐藏
function toggleExportMenu() {
    const menu = document.getElementById('exportMenu');
    if (menu) {
        menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
    }
}

// 点击其他地方关闭菜单
document.addEventListener('click', function(event) {
    const dropdown = document.querySelector('.export-dropdown');
    const menu = document.getElementById('exportMenu');
    if (dropdown && menu && !dropdown.contains(event.target)) {
        menu.style.display = 'none';
    }
});

// 版本信息
const APP_VERSION = '1.8';
const APP_NAME = '智步楼梯灯AI订单助手';

// 页面加载完成后显示版本信息
document.addEventListener('DOMContentLoaded', function() {
    console.log(`${APP_NAME} v${APP_VERSION} 已加载`);
    
    // 更新页面标题中的版本号
    const versionElement = document.getElementById('app-version');
    if (versionElement) {
        versionElement.textContent = `v${APP_VERSION}`;
    }
});
EOF

echo "✓ 已创建 export-v1.8.js"
echo ""

# 步骤4: 创建v1.8的HTML入口文件
echo "【步骤4】创建v1.8入口文件..."

# 查找原来的index.html
if [ -f "$V18_PATH/index.html" ]; then
    # 备份原文件
    cp "$V18_PATH/index.html" "$V18_PATH/index.html.bak"
    
    # 修改版本号显示
    sed -i 's/v1\.7/v1.8/g' "$V18_PATH/index.html"
    sed -i 's/1\.7/1.8/g' "$V18_PATH/index.html"
    
    echo "✓ 已更新index.html版本号"
fi

# 步骤5: 启动本地服务器
echo "【步骤5】启动本地服务器..."
echo "在 $V18_PATH 启动HTTP服务器，端口 $LOCAL_PORT"

cd "$V18_PATH" || exit 1

# 检查端口是否被占用
if lsof -Pi :$LOCAL_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo "⚠ 端口 $LOCAL_PORT 已被占用，尝试停止占用进程..."
    lsof -Pi :$LOCAL_PORT -sTCP:LISTEN -t | xargs kill -9 2>/dev/null
    sleep 2
fi

# 启动Python HTTP服务器
nohup python3 -m http.server $LOCAL_PORT > /tmp/stair-order-v1.8.log 2>&1 &
SERVER_PID=$!
echo "✓ HTTP服务器已启动，PID: $SERVER_PID"
echo "  日志: /tmp/stair-order-v1.8.log"
echo ""

# 等待服务器启动
sleep 3

# 检查服务器是否正常运行
if curl -s http://localhost:$LOCAL_PORT > /dev/null; then
    echo "✓ 本地服务器运行正常"
else
    echo "✗ 本地服务器启动失败，请检查日志"
    cat /tmp/stair-order-v1.8.log
    exit 1
fi

echo ""

# 步骤6: 配置FRP
echo "【步骤6】配置FRP穿透..."
echo "请确保frpc.ini中包含以下配置:"
echo ""
echo "[stair-order-v1.8]"
echo "type = http"
echo "local_port = $LOCAL_PORT"
echo "custom_domains = $DOMAIN"
echo "locations = /stair-order-v1.8"
echo ""

# 检查frpc是否运行
if pgrep -x "frpc" > /dev/null; then
    echo "✓ FRP客户端正在运行"
else
    echo "⚠ FRP客户端未运行，请手动启动:"
    echo "  frpc -c /path/to/frpc.ini"
fi

echo ""

# 步骤7: 部署到阿里云
echo "【步骤7】部署到阿里云..."
echo "正在连接阿里云服务器..."

# 使用SSH执行远程命令
ssh -o StrictHostKeyChecking=no root@$ALICLOUD_IP << REMOTE_EOF
    echo "已连接到阿里云服务器"
    
    # 创建v1.8目录
    mkdir -p /var/www/zhibu/stair-order-v1.8
    
    # 检查Nginx配置
    if [ -f /etc/nginx/conf.d/tools.conf ]; then
        echo "✓ 找到Nginx配置"
        
        # 检查是否已有v1.8配置
        if grep -q "stair-order-v1.8" /etc/nginx/conf.d/tools.conf; then
            echo "✓ v1.8配置已存在"
        else
            echo "添加v1.8配置..."
            cat >> /etc/nginx/conf.d/tools.conf << NGINX_CONF

    # 楼梯灯订单助手v1.8
    location /stair-order-v1.8 {
        proxy_pass http://127.0.0.1:$FRP_REMOTE_PORT;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }
NGINX_CONF
            echo "✓ 已添加Nginx配置"
        fi
        
        # 测试并重载Nginx
        nginx -t && systemctl reload nginx
        echo "✓ Nginx已重载"
    else
        echo "✗ 未找到Nginx配置文件"
    fi
    
    echo ""
    echo "阿里云部署完成"
REMOTE_EOF

echo ""

# 步骤8: 完成提示
echo "========================================"
echo "  部署完成!"
echo "========================================"
echo ""
echo "【访问地址】"
echo "v1.7 (原版): https://$DOMAIN/stair-order/"
echo "v1.8 (新版): https://$DOMAIN/stair-order-v1.8/"
echo ""
echo "【本地服务】"
echo "本地路径: $V18_PATH"
echo "本地端口: $LOCAL_PORT"
echo "服务PID: $SERVER_PID"
echo ""
echo "【FRP配置】"
echo "请确保frpc.ini中包含:"
echo "  [stair-order-v1.8]"
echo "  type = http"
echo "  local_port = $LOCAL_PORT"
echo "  custom_domains = $DOMAIN"
echo "  locations = /stair-order-v1.8"
echo ""
echo "【测试步骤】"
echo "1. 访问 https://$DOMAIN/stair-order-v1.8/"
echo "2. 创建测试订单"
echo "3. 点击导出按钮"
echo "4. 验证CSV换行是否正常"
echo ""
echo "【回滚命令】"
echo "如果v1.8有问题，可以停止服务:"
echo "  kill $SERVER_PID"
echo ""
