#!/bin/bash
# 全自动化Agent监控脚本 - 一个进程搞定一切
# 用法：./agent_monitor_fixed.sh [agent_name]
# 功能：每次检查自动git pull → 发现任务自动处理 → 自动创建.done → 自动git push回传

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

AGENT_NAME="$1"
if [ -z "$AGENT_NAME" ]; then
    echo "❌ 错误：请提供Agent名称"
    echo "用法：$0 [agent_name]"
    exit 1
fi

# 项目根目录（自动检测，基于脚本位置）
# SCRIPT_DIR: .../sanguo_quant_live/management/workflow/scripts
# 三次 dirname 回到项目根目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
cd "$PROJECT_ROOT" || {
    echo "❌ 错误：无法进入项目目录 $PROJECT_ROOT"
    exit 1
}

# 日志文件
LOG_FILE="${AGENT_NAME}_monitor.log"
AGENT_DIR="management/agents/${AGENT_NAME}"

echo "🚀 ${AGENT_NAME} Agent全自动化监控启动"
echo "📊 监控目录: $AGENT_DIR"
echo "📝 日志文件: $LOG_FILE"
echo "⏰ 检查间隔: 30秒"
echo "🔄 自动git pull/pull: 每次检查都执行"
echo "========================================="

# 确保Agent目录存在
mkdir -p "$AGENT_DIR"

# 监控循环
while true; do
    TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
    
    # 1. 自动git pull获取最新任务
    echo "[$TIMESTAMP] 🔄 自动git pull..." >> "$LOG_FILE"
    git pull origin main >> "$LOG_FILE" 2>&1
    if [ $? -eq 0 ]; then
        echo "[$TIMESTAMP] ✅ git pull成功" >> "$LOG_FILE"
    else
        echo "[$TIMESTAMP] ⚠️ git pull失败，继续检查" >> "$LOG_FILE"
    fi
    
    # 2. 检查任务文件
    TASK_FILES=$(find "$AGENT_DIR" -name "*.task" -type f 2>/dev/null)
    
    if [ -n "$TASK_FILES" ]; then
        for TASK_FILE in $TASK_FILES; do
            TASK_ID=$(basename "$TASK_FILE" .task)
            echo "[$TIMESTAMP] 🎯 发现新任务: $TASK_ID" >> "$LOG_FILE"
            echo "[$TIMESTAMP] 🎯 发现新任务: $TASK_ID"
            
            # 读取任务内容
            if [ -f "$TASK_FILE" ]; then
                TASK_CONTENT=$(cat "$TASK_FILE")
                
                # 自动创建完成标记（完全自动化）
                DONE_FILE="${AGENT_DIR}/${TASK_ID}.done"
                echo "# 自动化任务完成报告" > "$DONE_FILE"
                echo "- 任务ID: $TASK_ID" >> "$DONE_FILE"
                echo "- 发现时间: $TIMESTAMP" >> "$DONE_FILE"
                echo "- 执行Agent: $AGENT_NAME" >> "$DONE_FILE"
                echo "- 当前项目目录: $(pwd)" >> "$DONE_FILE"
                echo "" >> "$DONE_FILE"
                echo "## 任务内容" >> "$DONE_FILE"
                echo "$TASK_CONTENT" >> "$DONE_FILE"
                echo "" >> "$DONE_FILE"
                echo "✅ 监控自动发现任务成功，工作流正常" >> "$DONE_FILE"
                
                echo "[$TIMESTAMP] ✅ 完成标记已创建: $DONE_FILE" >> "$LOG_FILE"
                
                # 删除任务文件
                rm -f "$TASK_FILE"
                git rm -f "$TASK_FILE" >> "$LOG_FILE" 2>&1
                echo "[$TIMESTAMP] 🗑️ 任务文件已删除" >> "$LOG_FILE"
                
                # 3. 自动推送完成结果 - 添加.done和删除.task一起提交
                echo "[$TIMESTAMP] 📤 自动推送完成结果..." >> "$LOG_FILE"
                git add "$DONE_FILE" "$TASK_FILE" >> "$LOG_FILE" 2>&1
                # 检查是否有改动需要提交
                UNCOMMITTED=$(git status --porcelain | grep -E "($DONE_FILE|$TASK_FILE)" || true)
                if [ -n "$UNCOMMITTED" ]; then
                    git commit -m "auto: $AGENT_NAME 完成任务 $TASK_ID" >> "$LOG_FILE" 2>&1
                    git push origin main >> "$LOG_FILE" 2>&1
                    if [ $? -eq 0 ]; then
                        echo "[$TIMESTAMP] ✅ 推送成功" >> "$LOG_FILE"
                        echo "[$TIMESTAMP] ✅ 任务 $TASK_ID 完全完成"
                    else
                        echo "[$TIMESTAMP] ⚠️ 推送失败，请检查Git配置" >> "$LOG_FILE"
                    fi
                fi
            else
                echo "[$TIMESTAMP] ⚠️ 任务文件不存在: $TASK_FILE" >> "$LOG_FILE"
            fi
        done
    else
        echo "[$TIMESTAMP] $AGENT_NAME 无新任务" >> "$LOG_FILE"
    fi
    
    # 等待30秒后再次检查
    sleep 30
done