import json
import sys
from datetime import datetime, timedelta

# 读取任务数据
with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-af15479d-workdir/a909ed27-18bb-4417-81f3-9f33e5eaff6b/tool-results/b2oa1n4n3.txt', 'r') as f:
    data = json.load(f)

issues = data['issues']

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

# 当前时间
now = datetime.fromisoformat('2026-06-06T00:00:00Z')

# 筛选未完成的任务
active_statuses = ['todo', 'in_progress', 'in_review', 'blocked']
active_issues = [i for i in issues if i['status'] in active_statuses]

print(f"📊 任务健康检查报告")
print(f"=" * 80)
print(f"总任务数: {len(issues)}")
print(f"活跃任务数: {len(active_issues)}")
print()

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

for issue in active_issues:
    issue_id = issue['id']
    issue_key = issue['identifier']
    status = issue['status']
    assignee_id = issue['assignee_id']
    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['wrong_reviewer'].append({
                'id': issue_id,
                'key': issue_key,
                'title': issue['title'],
                'current_assignee': assignee_id,
                'hours_since_update': hours_since_update
            })
    
    # 检查2: todo 状态且有 assignee，超过2小时未更新
    elif status == 'todo' and assignee_id:
        if hours_since_update > 2:
            problems['todo_stale'].append({
                'id': issue_id,
                'key': issue_key,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': issue['assignee_type'],
                'hours_since_update': int(hours_since_update)
            })
    
    # 检查3: in_progress 状态超过48小时未更新
    elif status == 'in_progress':
        if hours_since_update > 48:
            problems['in_progress_stale'].append({
                'id': issue_id,
                'key': issue_key,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': issue['assignee_type'],
                'hours_since_update': int(hours_since_update)
            })
    
    # 检查4: 没有 assignee 但应该有人负责
    if not assignee_id and status in ['todo', 'in_progress', 'in_review']:
        problems['no_assignee'].append({
            'id': issue_id,
            'key': issue_key,
            'title': issue['title'],
            'status': status,
            'hours_since_update': int(hours_since_update)
        })

# 输出报告
print("🔍 问题1: in_review 状态但未分配给代码评审专家")
print("-" * 80)
if problems['wrong_reviewer']:
    for p in problems['wrong_reviewer']:
        print(f"  ❌ {p['key']}: {p['title']}")
        print(f"     当前分配: {p['current_assignee']}")
        print(f"     更新时间: {p['hours_since_update']:.1f}小时前")
        print()
else:
    print("  ✅ 无问题")
print()

print("🔍 问题2: todo 状态超过2小时未开始")
print("-" * 80)
if problems['todo_stale']:
    for p in problems['todo_stale']:
        print(f"  ⚠️  {p['key']}: {p['title']}")
        print(f"     分配给: {p['assignee_type']} ({p['assignee_id'][:8]}...)")
        print(f"     已等待: {p['hours_since_update']}小时")
        print()
else:
    print("  ✅ 无问题")
print()

print("🔍 问题3: in_progress 状态超过48小时未更新")
print("-" * 80)
if problems['in_progress_stale']:
    for p in problems['in_progress_stale']:
        print(f"  ⚠️  {p['key']}: {p['title']}")
        print(f"     分配给: {p['assignee_type']} ({p['assignee_id'][:8]}...)")
        print(f"     已卡住: {p['hours_since_update']}小时")
        print()
else:
    print("  ✅ 无问题")
print()

print("🔍 问题4: 活跃任务但无人负责")
print("-" * 80)
if problems['no_assignee']:
    for p in problems['no_assignee']:
        print(f"  ⚠️  {p['key']}: {p['title']}")
        print(f"     状态: {p['status']}")
        print(f"     已闲置: {p['hours_since_update']}小时")
        print()
else:
    print("  ✅ 无问题")
print()

# 生成JSON报告供后续处理
report = {
    'timestamp': now.isoformat(),
    'total_issues': len(issues),
    'active_issues': len(active_issues),
    'problems': problems
}

with open('/tmp/health_check_report.json', 'w') as f:
    json.dump(report, f, indent=2)

print("=" * 80)
print(f"📝 详细报告已保存到: /tmp/health_check_report.json")
