#!/bin/bash
# AI大脑可靠重启脚本
# 确保：1.旧进程彻底死 2.新进程用新代码 3.有验证

SCRIPT="/root/.openclaw/workspace/strategies/auto_trader_live.mjs"
LOG="/root/.openclaw/workspace/strategies/trader_live.log"
PIDFILE="/root/.openclaw/workspace/strategies/brain.pid"

echo "=== AI大脑重启 $(date -u) ==="

# 第一步：记录代码hash
NEW_HASH=$(md5sum "$SCRIPT" | cut -d' ' -f1)
echo "新代码hash: $NEW_HASH"

# 第二步：杀掉所有旧进程（暴力循环直到确认死透）
for i in 1 2 3 4 5; do
    PIDS=$(pgrep -f "auto_trader_live" 2>/dev/null)
    if [ -z "$PIDS" ]; then
        echo "✅ 旧进程已死 (尝试$i)"
        break
    fi
    echo "杀进程: $PIDS (尝试$i)"
    kill -9 $PIDS 2>/dev/null
    sleep 2
done

# 第三步：再次确认没有残留
PIDS=$(pgrep -f "auto_trader_live" 2>/dev/null)
if [ -n "$PIDS" ]; then
    echo "❌ 进程杀不掉: $PIDS"
    exit 1
fi

# 第四步：启动新进程
echo "启动新进程..."
cd /root/.openclaw/workspace/strategies
nohup node auto_trader_live.mjs >> "$LOG" 2>&1 &
NEW_PID=$!
echo $NEW_PID > "$PIDFILE"
echo "新PID: $NEW_PID"

# 第五步：等待并验证
sleep 5
if kill -0 $NEW_PID 2>/dev/null; then
    echo "✅ 新进程运行中 PID=$NEW_PID"
else
    echo "❌ 新进程启动失败"
    exit 1
fi

# 第六步：验证代码hash（确认跑的是新代码）
RUNNING_HASH=$(md5sum "$SCRIPT" | cut -d' ' -f1)
if [ "$NEW_HASH" = "$RUNNING_HASH" ]; then
    echo "✅ 代码hash验证通过: $NEW_HASH"
else
    echo "❌ 代码hash不匹配！"
    exit 1
fi

# 第七步：检查日志有没有新的启动信息
sleep 10
LAST_LINE=$(tail -1 "$LOG")
echo "最新日志: $LAST_LINE"
echo "=== 重启完成 ==="
