#!/bin/bash
# 极简分配脚本 - 带git容错处理
# 改进逻辑：每次分配前自动commit所有现有变更，避免unstaged changes问题

if [ $# -lt 2 ]; then
  echo "使用方法: ./assign_simple.sh <任务ID> <负责人>"
  echo "例如: ./assign_simple.sh TASK-20260322175034 pangtong"
  exit 1
fi

TASK_ID="$1"
AGENT="$2"

PENDING_FILE="management/tasks/pending/${TASK_ID}.md"
ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}.md"
AGENT_FILE="management/agents/${AGENT}/${TASK_ID}.task"

# 检查任务文件是否存在
if [ ! -f "$PENDING_FILE" ]; then
  echo "❌ 错误：任务文件不存在 $PENDING_FILE"
  exit 1
fi

# 确保Agent目录存在
mkdir -p "management/agents/${AGENT}"
mkdir -p management/tasks/assigned

# 复制任务文件
cp "$PENDING_FILE" "$ASSIGNED_FILE"

# 更新状态
sed -i '' "s/# 状态: pending/# 状态: assigned/" "$ASSIGNED_FILE"
sed -i '' "s/# 负责人:.*/# 负责人: $AGENT/" "$ASSIGNED_FILE"

# 创建.task文件通知Agent
cp "$PENDING_FILE" "$AGENT_FILE"

# Git处理，带容错
# 改进：每次分配前自动commit所有现有变更，解决批量分配时的unstaged changes问题
echo "🔄 正在同步现有变更..."
git add . > /dev/null 2>&1
# 如果有变更就commit
git commit -m "sync: 自动同步未提交变更 [assign $TASK_ID to $AGENT]" > /dev/null 2>&1

echo "🔄 正在拉取最新代码..."
git pull origin main
if [ $? -ne 0 ]; then
  echo "⚠️  git pull 失败，请先解决冲突后再试"
  exit 1
fi

git add "$PENDING_FILE" "$ASSIGNED_FILE" "$AGENT_FILE"
git commit -m "feat: 分配任务 $TASK_ID 给 $AGENT"
if [ $? -ne 0 ]; then
  echo "⚠️  git commit 失败"
  exit 1
fi

git push origin main
if [ $? -ne 0 ]; then
  echo "⚠️  git push 失败"
  exit 1
fi

echo "✅ 任务已分配给 $AGENT"
echo "📄 任务文件: $ASSIGNED_FILE"
echo "📬 通知文件: $AGENT_FILE"
echo "🌐 已推送到 Gitee"
