#!/bin/bash # Stock Agent 更新脚本 # 用于服务器部署更新 set -e echo "==========================================" echo " Stock Agent 更新脚本" echo "==========================================" # 进入项目目录 cd "$(dirname "$0")" PROJECT_DIR=$(pwd) echo "项目目录: $PROJECT_DIR" # 1. 拉取最新代码 echo "" echo "[1/4] 拉取最新代码..." git pull origin main # 2. 数据库迁移 - 添加 entry_type 列(如果不存在) echo "" echo "[2/4] 检查数据库迁移..." DB_PATH="$PROJECT_DIR/backend/stock_agent.db" if [ -f "$DB_PATH" ]; then # 检查 entry_type 列是否存在 if ! sqlite3 "$DB_PATH" "PRAGMA table_info(paper_orders);" | grep -q "entry_type"; then echo " 添加 entry_type 列..." sqlite3 "$DB_PATH" "ALTER TABLE paper_orders ADD COLUMN entry_type VARCHAR(10) DEFAULT 'market';" echo " entry_type 列已添加" else echo " entry_type 列已存在,跳过" fi else echo " 数据库文件不存在,将在首次运行时创建" fi # 3. 安装/更新依赖(如果需要) echo "" echo "[3/4] 检查 Python 依赖..." if [ -f "$PROJECT_DIR/backend/requirements.txt" ]; then cd "$PROJECT_DIR/backend" pip install -r requirements.txt -q echo " 依赖已更新" fi # 4. 重启服务 echo "" echo "[4/4] 重启服务..." if command -v pm2 &> /dev/null; then pm2 restart run_crypto --update-env 2>/dev/null || echo " run_crypto 服务不存在或重启失败" pm2 restart run_api --update-env 2>/dev/null || echo " run_api 服务不存在或重启失败" echo "" echo "服务状态:" pm2 list else echo " PM2 未安装,请手动重启服务" fi echo "" echo "==========================================" echo " 更新完成!" echo "=========================================="