#!/bin/bash

# === 配置项 ===
SERVER="dxc@172.16.0.198"
REMOTE_DIR="/opt/inventory-app"
TIMESTAMP=$(date +%Y%m%d_%H%M)
REMOTE_BACKUP_BASE="$REMOTE_DIR/data_copy"
REMOTE_BACKUP_DIR="$REMOTE_BACKUP_BASE/$TIMESTAMP"

echo "==================================================="
echo "🚀 开始增量部署 (仅代码，不影响数据库和图片)"
echo "==================================================="

# 1. 远端备份 (使用 sudo 提权)
echo "[1/4] 正在服务器上备份旧代码并清理多余备份 (可能需要输入服务器密码)..."
ssh -t $SERVER "sudo mkdir -p $REMOTE_BACKUP_DIR && \
    cd $REMOTE_DIR && \
    sudo tar -czf $REMOTE_BACKUP_DIR/code_backup.tar.gz inventory-backend inventory-web docker-compose.prod.yml && \
    echo '>> 执行清理：仅保留 data_copy 下最新的 2 个备份...' && \
    cd $REMOTE_BACKUP_BASE && \
    sudo sh -c 'ls -dt */ | tail -n +3 | xargs -I {} rm -rf {}'"

if [ $? -ne 0 ]; then echo "❌ 服务器备份或清理失败，终止部署！"; exit 1; fi

# 2. 本地打包 (新增了精准拦截本地图片和本地数据库)
echo "[2/4] 正在本地打包新代码 (自动剔除本地图片、数据库和缓存)..."
tar -czf deploy.tar.gz \
    --exclude='node_modules' \
    --exclude='.venv' \
    --exclude='venv' \
    --exclude='__pycache__' \
    --exclude='*.pyc' \
    --exclude='.git' \
    --exclude='.idea' \
    --exclude='.vscode' \
    --exclude='pgdata_*' \
    --exclude='uploads_*' \
    --exclude='data_copy' \
    --exclude='inventory-backend/uploads' \
    --exclude='inventory-backend/pgdata' \
    inventory-backend inventory-web docker-compose.prod.yml

# 3. 传输到生产环境的 /tmp 目录 (避开权限拦截)
echo "[3/4] 正在传输代码到服务器的临时目录..."
scp deploy.tar.gz $SERVER:/tmp/deploy.tar.gz

# 4. 服务器执行替换与重启 (修复了 docker-compose 找不到命令的问题)
echo "[4/4] 正在生产环境执行热更新 (可能需要输入服务器密码)..."
ssh -t $SERVER "cd $REMOTE_DIR && \
    sudo rm -rf inventory-backend_old inventory-web_old && \
    (sudo mv inventory-backend inventory-backend_old 2>/dev/null || true) && \
    (sudo mv inventory-web inventory-web_old 2>/dev/null || true) && \
    sudo mv /tmp/deploy.tar.gz . && \
    sudo tar -xzf deploy.tar.gz && \
    sudo docker compose -f docker-compose.prod.yml up -d --build backend frontend && \
    sudo rm deploy.tar.gz"

echo "==================================================="
echo "✅ 部署完成！请刷新网页查看效果。"
echo "==================================================="