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

set -e  # 遇到错误立即退出

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

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 配置
LOCAL_PORT=8081
DOMAIN="tools.we-smart.cn"
ALICLOUD_IP="8.138.219.128"

echo -e "${YELLOW}[1/6] 查找项目路径...${NC}"

# 查找项目
PROJECT_PATH=""
for path in "/root/.openclaw/workspace/tools/stair-order" "/home/maocai/.openclaw/workspace/tools/stair-order" "/www/tools/stair-order"; do
    if [ -d "$path" ]; then
        PROJECT_PATH="$path"
        echo -e "${GREEN}✓ 找到项目: $PROJECT_PATH${NC}"
        break
    fi
done

if [ -z "$PROJECT_PATH" ]; then
    echo -e "${RED}✗ 未找到项目，请手动指定路径${NC}"
    exit 1
fi

echo ""
echo -e "${YELLOW}[2/6] 创建v1.8版本...${NC}"

V18_PATH="$(dirname $PROJECT_PATH)/stair-order-v1.8"

# 如果已存在，先删除
if [ -d "$V18_PATH" ]; then
    echo "删除旧版本..."
    rm -rf "$V18_PATH"
fi

# 复制项目
cp -r "$PROJECT_PATH" "$V18_PATH"
echo -e "${GREEN}✓ 已创建: $V18_PATH${NC}"

echo ""
echo -e "${YELLOW}[3/6] 修复导出功能...${NC}"

cd "$V18_PATH"

# 创建修复后的导出函数
cat > export-fix.js << 'EOF'
// v1.8 导出功能修复 - 修复换行问题
function exportOrderToCSV(orderData) {
    if (!orderData) {
        alert('请先创建订单');
        return;
    }
    
    const headers = ['楼层', '踏步编号', '尺寸(mm)', '数量', '备注'];
    
    // 使用 \r\n 换行符，添加 BOM 头
    let csvContent = '\uFEFF';
    csvContent += headers.join(',') + '\r\n';
    
    orderData.items.forEach(item => {
        const row = [
            item.floor || '',
            item.stepNumber || '',
            item.size || '',
            item.quantity || 1,
            item.note || ''
        ];
        csvContent += row.join(',') + '\r\n';
    });
    
    csvContent += '\r\n';
    csvContent += '订单信息,\r\n';
    csvContent += '订单编号,' + (orderData.orderId || '') + '\r\n';
    csvContent += '客户名称,' + (orderData.customerName || '') + '\r\n';
    csvContent += '联系电话,' + (orderData.phone || '') + '\r\n';
    csvContent += '总数量,' + (orderData.totalQuantity || 0) + '\r\n';
    csvContent += '总金额,' + (orderData.totalAmount || 0) + '\r\n';
    
    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
    const link = document.createElement('a');
    const url = URL.createObjectURL(blob);
    link.href = url;
    link.download = '楼梯灯订单_' + (orderData.orderId || 'export') + '_' + new Date().toISOString().slice(0,10) + '.csv';
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    URL.revokeObjectURL(url);
}

// 更新版本号显示
document.addEventListener('DOMContentLoaded', function() {
    console.log('智步楼梯灯AI订单助手 v1.8 已加载');
    var versionEl = document.getElementById('app-version');
    if (versionEl) versionEl.textContent = 'v1.8';
});
EOF

# 在index.html中引入修复后的JS
if [ -f "index.html" ]; then
    # 备份
    cp index.html index.html.v17.backup
    
    # 在</body>前添加script引用
    sed -i 's/<\/body>/<script src="export-fix.js"><\/script>\n<\/body>/g' index.html
    
    # 更新版本号显示
    sed -i 's/v1\.7/v1.8/g' index.html
    sed -i 's/1\.7/1.8/g' index.html
    
    echo -e "${GREEN}✓ 已修复导出功能${NC}"
fi

echo ""
echo -e "${YELLOW}[4/6] 启动本地服务...${NC}"

# 检查端口占用
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 || true
    sleep 2
fi

# 启动HTTP服务器
nohup python3 -m http.server $LOCAL_PORT > /tmp/stair-order-v1.8.log 2>&1 &
SERVER_PID=$!
sleep 3

# 验证服务
if curl -s http://localhost:$LOCAL_PORT > /dev/null 2>&1; then
    echo -e "${GREEN}✓ 本地服务已启动 (PID: $SERVER_PID)${NC}"
else
    echo -e "${RED}✗ 本地服务启动失败${NC}"
    cat /tmp/stair-order-v1.8.log
    exit 1
fi

echo ""
echo -e "${YELLOW}[5/6] 配置FRP穿透...${NC}"

# 查找frpc.ini
FRPC_PATH=""
for path in "/root/frpc.ini" "/etc/frp/frpc.ini" "/home/maocai/frpc.ini"; do
    if [ -f "$path" ]; then
        FRPC_PATH="$path"
        break
    fi
done

if [ -n "$FRPC_PATH" ]; then
    # 检查是否已有v1.8配置
    if ! grep -q "stair-order-v1.8" "$FRPC_PATH"; then
        cat >> "$FRPC_PATH" << EOF

[stair-order-v1.8]
type = http
local_port = $LOCAL_PORT
custom_domains = $DOMAIN
locations = /stair-order-v1.8
EOF
        echo -e "${GREEN}✓ FRP配置已更新: $FRPC_PATH${NC}"
    else
        echo -e "${GREEN}✓ FRP配置已存在${NC}"
    fi
    
    # 重启FRP
    pkill frpc 2>/dev/null || true
    sleep 1
    nohup frpc -c "$FRPC_PATH" > /tmp/frpc.log 2>&1 &
    sleep 2
    echo -e "${GREEN}✓ FRP已重启${NC}"
else
    echo -e "${YELLOW}⚠ 未找到frpc.ini，请手动配置${NC}"
fi

echo ""
echo -e "${YELLOW}[6/6] 配置阿里云Nginx...${NC}"

# SSH到阿里云配置Nginx
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@$ALICLOUD_IP << 'REMOTE_SCRIPT'
    NGINX_CONF="/etc/nginx/conf.d/tools.conf"
    
    if [ -f "$NGINX_CONF" ]; then
        # 检查是否已有v1.8配置
        if ! grep -q "stair-order-v1.8" "$NGINX_CONF"; then
            cat >> "$NGINX_CONF" << 'NGINX_CONFIG'

    # 楼梯灯订单助手v1.8
    location /stair-order-v1.8 {
        proxy_pass http://127.0.0.1:7009;
        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_CONFIG
            echo "Nginx配置已添加"
        else
            echo "Nginx配置已存在"
        fi
        
        # 测试并重载
        nginx -t && systemctl reload nginx
        echo "Nginx已重载"
    else
        echo "未找到Nginx配置文件"
    fi
REMOTE_SCRIPT

echo ""
echo "========================================"
echo -e "${GREEN}  部署完成!${NC}"
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 "【测试步骤】"
echo "  1. 访问 https://$DOMAIN/stair-order-v1.8/"
echo "  2. 创建测试订单"
echo "  3. 点击导出，验证CSV换行正常"
echo ""
