import json
from datetime import datetime, timezone

# 读取 JSON 数据
with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-72197559-workdir/9000f651-259e-43cc-9999-2324005a9d26/tool-results/bonrz5qrr.txt', 'r') as f:
    data = json.load(f)

CODE_REVIEWER_ID = "34d7c53d-bd70-45a8-bbbb-77dbb1da16b5"
now = datetime.now(timezone.utc)

# 分类检查
report = {
    "in_review_wrong_assignee": [],
    "todo_stale": [],
    "in_progress_stale": [],
    "unassigned": [],
    "blocked_stale": []
}

for issue in data['issues']:
    status = issue['status']
    assignee_id = issue.get('assignee_id')
    assignee_type = issue.get('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' and assignee_id != CODE_REVIEWER_ID:
        report["in_review_wrong_assignee"].append({
            "id": issue['id'],
            "identifier": issue['identifier'],
            "title": issue['title'],
            "assignee_id": assignee_id,
            "assignee_type": assignee_type
        })
    
    # 2. todo 且有 assignee，超过 2 小时未更新
    if status == 'todo' and assignee_id and hours_since_update > 2:
        report["todo_stale"].append({
            "id": issue['id'],
            "identifier": issue['identifier'],
            "title": issue['title'],
            "assignee_id": assignee_id,
            "assignee_type": assignee_type,
            "hours": hours_since_update
        })
    
    # 3. in_progress 超过 48 小时未更新
    if status == 'in_progress' and hours_since_update > 48:
        report["in_progress_stale"].append({
            "id": issue['id'],
            "identifier": issue['identifier'],
            "title": issue['title'],
            "assignee_id": assignee_id,
            "assignee_type": assignee_type,
            "hours": hours_since_update
        })
    
    # 4. blocked 状态，超过 48 小时未更新（需要跟进）
    if status == 'blocked' and hours_since_update > 48:
        report["blocked_stale"].append({
            "id": issue['id'],
            "identifier": issue['identifier'],
            "title": issue['title'],
            "assignee_id": assignee_id,
            "assignee_type": assignee_type,
            "hours": hours_since_update,
            "metadata": issue.get('metadata', {})
        })
    
    # 5. 活跃状态但没有 assignee
    if status in ['todo', 'in_progress', 'in_review'] and not assignee_id:
        report["unassigned"].append({
            "id": issue['id'],
            "identifier": issue['identifier'],
            "title": issue['title'],
            "status": status
        })

# 输出报告
print("=" * 80)
print("任务分配健康检查报告")
print("=" * 80)
print()

print("1. ❌ in_review 状态但未分配给代码评审专家:")
print(f"   数量: {len(report['in_review_wrong_assignee'])}")
if report['in_review_wrong_assignee']:
    for item in report['in_review_wrong_assignee']:
        print(f"   - {item['identifier']}: {item['title']}")
        print(f"     当前分配: {item['assignee_type']}/{item['assignee_id']}")
print()

print("2. ⏰ todo 状态超过 2 小时未更新:")
print(f"   数量: {len(report['todo_stale'])}")
if report['todo_stale']:
    for item in report['todo_stale']:
        print(f"   - {item['identifier']}: {item['title']}")
        print(f"     分配给: {item['assignee_type']}/{item['assignee_id']}")
        print(f"     已等待: {item['hours']:.1f} 小时")
print()

print("3. ⏰ in_progress 状态超过 48 小时未更新:")
print(f"   数量: {len(report['in_progress_stale'])}")
if report['in_progress_stale']:
    for item in report['in_progress_stale']:
        print(f"   - {item['identifier']}: {item['title']}")
        print(f"     分配给: {item['assignee_type']}/{item['assignee_id']}")
        print(f"     已停滞: {item['hours']:.1f} 小时")
print()

print("4. 🚫 blocked 状态超过 48 小时:")
print(f"   数量: {len(report['blocked_stale'])}")
if report['blocked_stale']:
    for item in report['blocked_stale']:
        print(f"   - {item['identifier']}: {item['title']}")
        print(f"     分配给: {item['assignee_type']}/{item['assignee_id']}")
        print(f"     已阻塞: {item['hours']:.1f} 小时")
        if item['metadata']:
            print(f"     元数据: {item['metadata']}")
print()

print("5. ❓ 活跃状态但无人负责:")
print(f"   数量: {len(report['unassigned'])}")
if report['unassigned']:
    for item in report['unassigned']:
        print(f"   - {item['identifier']}: {item['title']}")
        print(f"     状态: {item['status']}")
print()

# 保存详细报告到文件
with open('/tmp/health_check_report.json', 'w') as f:
    json.dump(report, f, indent=2, ensure_ascii=False)

print("详细报告已保存到: /tmp/health_check_report.json")
