#!/bin/bash

echo "=== 智能任务调度分析 ==="
echo ""
echo "## 1. Agent 负载状态"
echo ""
echo "| Agent | 活跃任务数 | 状态 |"
echo "|-------|-----------|------|"
echo "| 自动化测试与QA | 0 | ✅ 完全空闲 |"
echo "| 后端开发专家 | 5 | ⚠️ 中等负载 |"
echo "| 前端开发专家 | 7 | ⚠️ 中等负载 |"
echo "| 架构师兼项目经理 | 13 | 🔴 高负载 |"
echo "| 代码评审专家 | 26 | 🔴 高负载 |"
echo ""

echo "## 2. 待办任务分析"
echo ""

# 获取 todo 任务详情
multica issue list --status todo --output json > /tmp/todo_issues.json

todo_count=$(jq '.total' /tmp/todo_issues.json)
echo "待办任务总数: $todo_count"
echo ""

if [ "$todo_count" -eq 0 ]; then
  echo "✅ 没有待办任务需要分配"
  exit 0
fi

# 分析任务
jq -r '.issues[] | "- [\(.identifier)] \(.title) (优先级: \(.priority), 当前分配: \(.assignee_id // "无"))"' /tmp/todo_issues.json

echo ""
echo "## 3. 分配建议"
echo ""

# 检查是否有未分配的任务
unassigned=$(jq '[.issues[] | select(.assignee_id == null)] | length' /tmp/todo_issues.json)

if [ "$unassigned" -gt 0 ]; then
  echo "发现 $unassigned 个未分配的任务"
  echo ""
  
  # 分析任务类型并建议分配
  jq -r '.issues[] | select(.assignee_id == null) | 
    "任务: [\(.identifier)] \(.title)\n优先级: \(.priority)\n建议: 根据标题判断类型后分配\n"' /tmp/todo_issues.json
else
  echo "✅ 所有 todo 任务都已分配"
fi

echo ""
echo "## 4. 执行分配"
echo ""

# 获取唯一的任务
issue_id=$(jq -r '.issues[0].id' /tmp/todo_issues.json)
issue_key=$(jq -r '.issues[0].identifier' /tmp/todo_issues.json)
issue_title=$(jq -r '.issues[0].title' /tmp/todo_issues.json)
assignee_id=$(jq -r '.issues[0].assignee_id' /tmp/todo_issues.json)

if [ "$assignee_id" != "null" ] && [ -n "$assignee_id" ]; then
  echo "任务 $issue_key 已分配给 agent: $assignee_id"
  echo ""
  echo "检查该 agent 是否需要提醒..."
  
  # 获取任务详情
  multica issue get "$issue_id" --output json > /tmp/current_issue.json
  
  # 检查最后更新时间
  updated_at=$(jq -r '.updated_at' /tmp/current_issue.json)
  echo "最后更新时间: $updated_at"
  
  # 判断是否需要提醒（超过2小时未更新）
  current_time=$(date -u +%s)
  updated_time=$(date -d "$updated_at" +%s 2>/dev/null || echo "0")
  time_diff=$((current_time - updated_time))
  hours_diff=$((time_diff / 3600))
  
  if [ "$hours_diff" -gt 2 ]; then
    echo "⚠️ 任务已超过 $hours_diff 小时未更新，建议发送提醒"
    
    # 根据 assignee_id 确定 agent 名称
    case "$assignee_id" in
      "8ddccf1d-9ed4-469e-a335-a14d0b72d025")
        agent_name="前端开发专家"
        ;;
      "79fbfb25-e622-4986-9bb9-21efe499274d")
        agent_name="后端开发专家"
        ;;
      "64b26c5e-1823-477c-9c0f-c5c01d599365")
        agent_name="自动化测试与QA"
        ;;
      "34d7c53d-bd70-45a8-bbbb-77dbb1da16b5")
        agent_name="代码评审专家"
        ;;
      *)
        agent_name="未知"
        ;;
    esac
    
    echo "分配的 agent: $agent_name"
    echo ""
    echo "建议操作: 在 issue 中添加提醒评论并 mention 该 agent"
  else
    echo "✅ 任务更新时间正常，无需提醒"
  fi
else
  echo "❌ 任务 $issue_key 未分配，需要分配"
  echo ""
  echo "任务标题: $issue_title"
  echo ""
  
  # 根据标题判断任务类型
  if echo "$issue_title" | grep -qi "前端\|界面\|UI\|组件"; then
    echo "建议分配给: 前端开发专家 (8ddccf1d-9ed4-469e-a335-a14d0b72d025)"
    echo "原因: 任务标题包含前端相关关键词"
  elif echo "$issue_title" | grep -qi "后端\|API\|数据库"; then
    echo "建议分配给: 后端开发专家 (79fbfb25-e622-4986-9bb9-21efe499274d)"
    echo "原因: 任务标题包含后端相关关键词"
  elif echo "$issue_title" | grep -qi "测试\|QA"; then
    echo "建议分配给: 自动化测试与QA (64b26c5e-1823-477c-9c0f-c5c01d599365)"
    echo "原因: 任务标题包含测试相关关键词"
  elif echo "$issue_title" | grep -qi "评审\|review"; then
    echo "建议分配给: 代码评审专家 (34d7c53d-bd70-45a8-bbbb-77dbb1da16b5)"
    echo "原因: 任务标题包含评审相关关键词"
  else
    echo "⚠️ 无法从标题判断任务类型，需要查看详细描述"
  fi
fi

