import json
from datetime import datetime, timezone

# 当前时间：2026-06-18 00:00:00 UTC
now = datetime(2026, 6, 18, 0, 0, 0, tzinfo=timezone.utc)

# 代码评审专家 ID
CODE_REVIEW_AGENT_ID = "34d7c53d-bd70-45a8-bbbb-77dbb1da16b5"

issues = [
    {
        "identifier": "FET-144",
        "status": "blocked",
        "assignee_id": "f1b21d73-ee6a-42a5-8db8-4d91424dfae8",
        "assignee_type": "squad",
        "updated_at": "2026-06-17T18:02:59Z",
        "priority": "high",
        "title": "数据审计：检查 orders 表 exchange_rate 异常数据"
    },
    {
        "identifier": "FET-158",
        "status": "todo",
        "assignee_id": "ad4046a5-ff3b-4ba6-b822-1cce19262f3f",
        "assignee_type": "agent",
        "updated_at": "2026-06-16T23:04:32Z",
        "priority": "none",
        "title": "生成新的 SSH 密钥对以访问生产服务器"
    }
]

actions = []

for issue in issues:
    updated_at = datetime.fromisoformat(issue['updated_at'].replace('Z', '+00:00'))
    hours_since_update = (now - updated_at).total_seconds() / 3600
    
    print(f"\n{'='*80}")
    print(f"检查任务: {issue['identifier']} - {issue['title']}")
    print(f"状态: {issue['status']}")
    print(f"负责人: {issue['assignee_type']}")
    print(f"最后更新: {hours_since_update:.1f} 小时前")
    print(f"优先级: {issue['priority']}")
    
    # 规则1: in_review 状态必须分配给代码评审专家
    if issue['status'] == 'in_review':
        if issue['assignee_id'] != CODE_REVIEW_AGENT_ID:
            actions.append({
                'issue': issue['identifier'],
                'action': 'reassign',
                'reason': 'in_review 状态必须分配给代码评审专家',
                'new_assignee': CODE_REVIEW_AGENT_ID
            })
            print(f"  ❌ 问题: in_review 状态但未分配给代码评审专家")
            print(f"  ✅ 行动: 自动重新分配给代码评审专家")
    
    # 规则2: todo 状态且有 assignee，超过2小时未更新 → mention 提醒
    elif issue['status'] == 'todo' and issue['assignee_id']:
        if hours_since_update > 2:
            actions.append({
                'issue': issue['identifier'],
                'action': 'mention',
                'reason': f'todo 状态超过 {hours_since_update:.1f} 小时未更新',
                'assignee_id': issue['assignee_id'],
                'assignee_type': issue['assignee_type']
            })
            print(f"  ⚠️  问题: todo 状态超过2小时未更新")
            print(f"  ✅ 行动: 添加 mention 提醒 assignee 开始工作")
    
    # 规则3: in_progress 状态，超过48小时未更新 → mention 提醒
    elif issue['status'] == 'in_progress':
        if hours_since_update > 48:
            actions.append({
                'issue': issue['identifier'],
                'action': 'mention',
                'reason': f'in_progress 状态超过 {hours_since_update:.1f} 小时未更新',
                'assignee_id': issue['assignee_id'],
                'assignee_type': issue['assignee_type']
            })
            print(f"  ⚠️  问题: in_progress 状态超过48小时未更新")
            print(f"  ✅ 行动: 添加 mention 提醒 assignee")
    
    # 规则4: blocked 状态 - 仅记录，不采取行动
    elif issue['status'] == 'blocked':
        print(f"  ℹ️  信息: blocked 状态，等待外部条件解决")
    
    else:
        print(f"  ✅ 正常: 无需采取行动")

print(f"\n{'='*80}")
print(f"\n总结:")
print(f"  检查任务数: {len(issues)}")
print(f"  需要采取行动的任务数: {len(actions)}")

# 输出行动清单
with open('/tmp/actions.json', 'w') as f:
    json.dump(actions, f, indent=2, ensure_ascii=False)

print(f"\n行动清单已保存到 /tmp/actions.json")

for action in actions:
    print(f"\n  [{action['issue']}] {action['action']}: {action['reason']}")

