import json
import sys
from datetime import datetime, timedelta

# 读取任务数据
with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-d2f65b7c-workdir/35c84c13-b38e-4c7b-a97d-8d91821fdab1/tool-results/bw4qfvf25.txt', 'r') as f:
    data = json.load(f)

# 常量
CODE_REVIEWER_ID = "34d7c53d-bd70-45a8-bbbb-77dbb1da16b5"
NOW = datetime.fromisoformat("2026-06-17T00:00:00Z")

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

print(f"总任务数: {len(issues)}")
print(f"未完成任务数: {len(active_issues)}")
print("\n" + "="*80)

# 分类统计
problems = {
    'in_review_wrong_assignee': [],
    'todo_stale': [],
    'in_progress_stale': [],
    'unassigned_should_have': []
}

for issue in active_issues:
    issue_id = issue['identifier']
    status = issue['status']
    assignee_id = issue['assignee_id']
    assignee_type = issue['assignee_type']
    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_id != CODE_REVIEWER_ID:
            problems['in_review_wrong_assignee'].append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'current_assignee': assignee_id,
                'assignee_type': assignee_type,
                'hours_since_update': round(hours_since_update, 1)
            })
    
    # 规则2: todo 状态且有 assignee，超过2小时未更新
    elif status == 'todo' and assignee_id:
        if hours_since_update > 2:
            problems['todo_stale'].append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours_since_update': round(hours_since_update, 1)
            })
    
    # 规则3: in_progress 状态，超过48小时未更新
    elif status == 'in_progress':
        if hours_since_update > 48:
            problems['in_progress_stale'].append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours_since_update': round(hours_since_update, 1)
            })
    
    # 规则4: 无 assignee 但状态需要有人负责
    if not assignee_id and status in ['todo', 'in_progress', 'in_review', 'blocked']:
        problems['unassigned_should_have'].append({
            'id': issue['id'],
            'identifier': issue_id,
            'title': issue['title'],
            'status': status,
            'hours_since_update': round(hours_since_update, 1)
        })

# 输出结果
print("\n## 检查结果\n")

print(f"### 1. in_review 状态分配错误 ({len(problems['in_review_wrong_assignee'])} 个)")
for p in problems['in_review_wrong_assignee']:
    print(f"  - {p['identifier']}: {p['title'][:50]}")
    print(f"    当前分配: {p['assignee_type']} ({p['current_assignee'][:8]}...)")
    print(f"    更新时间: {p['hours_since_update']} 小时前")

print(f"\n### 2. todo 状态停滞 ({len(problems['todo_stale'])} 个)")
for p in problems['todo_stale']:
    print(f"  - {p['identifier']}: {p['title'][:50]}")
    print(f"    分配给: {p['assignee_type']} ({p['assignee_id'][:8]}...)")
    print(f"    停滞时间: {p['hours_since_update']} 小时")

print(f"\n### 3. in_progress 状态停滞 ({len(problems['in_progress_stale'])} 个)")
for p in problems['in_progress_stale']:
    print(f"  - {p['identifier']}: {p['title'][:50]}")
    print(f"    分配给: {p['assignee_type']} ({p['assignee_id'][:8] if p['assignee_id'] else 'None'}...)")
    print(f"    停滞时间: {p['hours_since_update']} 小时")

print(f"\n### 4. 未分配但应该有负责人 ({len(problems['unassigned_should_have'])} 个)")
for p in problems['unassigned_should_have']:
    print(f"  - {p['identifier']}: {p['title'][:50]}")
    print(f"    状态: {p['status']}")
    print(f"    更新时间: {p['hours_since_update']} 小时前")

# 输出 JSON 供后续处理
with open('/tmp/problems.json', 'w') as f:
    json.dump(problems, f, indent=2)

print(f"\n总问题数: {sum(len(v) for v in problems.values())}")
