import json
from datetime import datetime, timezone, timedelta

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

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

# 读取任务数据
with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-85562f66-workdir/78f375c0-b4af-40ea-a933-b87c7fab674d/tool-results/bhp17yddx.txt', 'r') as f:
    data1 = json.load(f)

with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-85562f66-workdir/78f375c0-b4af-40ea-a933-b87c7fab674d/tool-results/bgwd683sy.txt', 'r') as f:
    data2 = json.load(f)

all_issues = data1['issues'] + data2['issues']

# 分类问题
problems = {
    'in_review_wrong_assignee': [],
    'todo_stale': [],
    'in_progress_stale': [],
    'unassigned': []
}

for issue in all_issues:
    status = issue['status']
    assignee_id = issue.get('assignee_id')
    updated_at = datetime.fromisoformat(issue['updated_at'].replace('Z', '+00:00'))
    hours_since_update = (now - updated_at).total_seconds() / 3600
    
    # 跳过已完成、已取消、backlog
    if status in ['done', 'cancelled', 'backlog']:
        continue
    
    # 检查规则 1: in_review 状态必须分配给代码评审专家
    if status == 'in_review':
        if assignee_id != CODE_REVIEWER_ID:
            problems['in_review_wrong_assignee'].append({
                'id': issue['id'],
                'identifier': issue['identifier'],
                'title': issue['title'],
                'current_assignee': assignee_id,
                'assignee_type': issue.get('assignee_type'),
                'updated_at': issue['updated_at']
            })
    
    # 检查规则 2: todo 状态且有 assignee，超过 2 小时未更新
    elif status == 'todo' and assignee_id:
        if hours_since_update > 2:
            problems['todo_stale'].append({
                'id': issue['id'],
                'identifier': issue['identifier'],
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': issue.get('assignee_type'),
                'hours_stale': round(hours_since_update, 1),
                'updated_at': issue['updated_at']
            })
    
    # 检查规则 3: in_progress 状态，超过 48 小时未更新
    elif status == 'in_progress':
        if hours_since_update > 48:
            problems['in_progress_stale'].append({
                'id': issue['id'],
                'identifier': issue['identifier'],
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': issue.get('assignee_type'),
                'hours_stale': round(hours_since_update, 1),
                'updated_at': issue['updated_at']
            })
    
    # 检查规则 4: 任何活跃状态但没有 assignee
    if status in ['todo', 'in_progress', 'in_review', 'blocked']:
        if not assignee_id:
            problems['unassigned'].append({
                'id': issue['id'],
                'identifier': issue['identifier'],
                'title': issue['title'],
                'status': status,
                'updated_at': issue['updated_at']
            })

print(json.dumps(problems, indent=2, ensure_ascii=False))
