import json
import sys
from datetime import datetime, timezone

# 读取任务列表
with open(sys.argv[1], 'r') as f:
    data = json.load(f)

issues = data['issues']

# 当前时间
now = datetime.now(timezone.utc)

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

# 过滤未完成的任务
active_issues = [
    issue for issue in issues 
    if issue['status'] not in ['done', 'cancelled', 'backlog']
]

print(f"找到 {len(active_issues)} 个活跃任务")
print("=" * 80)

problems = {
    'in_review_wrong_assignee': [],
    'todo_stale': [],
    'in_progress_stale': [],
    'blocked_no_reason': [],
    'no_assignee': []
}

for issue in active_issues:
    issue_id = issue['identifier']
    status = issue['status']
    assignee_id = issue['assignee_id']
    assignee_type = issue['assignee_type']
    title = issue['title']
    updated_at = datetime.fromisoformat(issue['updated_at'].replace('Z', '+00:00'))
    hours_since_update = (now - updated_at).total_seconds() / 3600
    
    # 检查 1: in_review 状态必须分配给代码评审专家
    if status == 'in_review':
        if assignee_type != 'agent' or assignee_id != CODE_REVIEWER_ID:
            problems['in_review_wrong_assignee'].append({
                'id': issue_id,
                'title': title,
                'current_assignee': assignee_id,
                'assignee_type': assignee_type,
                'issue_uuid': issue['id']
            })
    
    # 检查 2: todo 状态且有 assignee，超过2小时未更新
    elif status == 'todo' and assignee_id:
        if hours_since_update > 2:
            problems['todo_stale'].append({
                'id': issue_id,
                'title': title,
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours': round(hours_since_update, 1),
                'issue_uuid': issue['id']
            })
    
    # 检查 3: in_progress 状态，超过48小时未更新
    elif status == 'in_progress':
        if hours_since_update > 48:
            problems['in_progress_stale'].append({
                'id': issue_id,
                'title': title,
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours': round(hours_since_update, 1),
                'issue_uuid': issue['id']
            })
    
    # 检查 4: 任何状态但没有 assignee（排除 blocked 状态，因为 blocked 可能在等待外部条件）
    if not assignee_id and status not in ['blocked']:
        problems['no_assignee'].append({
            'id': issue_id,
            'title': title,
            'status': status,
            'issue_uuid': issue['id']
        })

# 输出 JSON 格式的结果
print(json.dumps(problems, indent=2, ensure_ascii=False))
