import json
from datetime import datetime, timezone

# 读取issue数据
with open('/home/multica/.claude/projects/-home-multica-multica-workspaces-b5fdce19-2a82-455d-b644-5b83da2b3078-8c698f2a-workdir/89583f6f-d4bd-4189-a301-7956224cf0ed/tool-results/bwcyndi40.txt', 'r') as f:
    data = json.load(f)

# 当前时间（UTC）
now = datetime.now(timezone.utc)
print(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S UTC')}\n")

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

# 过滤未完成的任务
active_statuses = ['todo', 'in_progress', 'in_review', 'blocked']
active_issues = [issue for issue in data['issues'] if issue['status'] in active_statuses]

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

# 分类检查
issues_to_reassign = []
issues_to_mention = []
issues_without_assignee = []
all_good = []

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
    
    has_problem = False
    problems = []
    
    # 规则1: in_review 状态必须分配给代码评审专家
    if status == 'in_review':
        if assignee_id != CODE_REVIEWER_ID or assignee_type != 'agent':
            has_problem = True
            problems.append('in_review状态但未分配给代码评审专家')
            issues_to_reassign.append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'reason': 'in_review状态必须分配给代码评审专家',
                'current_assignee': f"{assignee_type}/{assignee_id}",
                'correct_assignee': f"agent/{CODE_REVIEWER_ID}"
            })
    
    # 规则2: todo 状态且有 assignee，超过2小时未更新
    if status == 'todo' and assignee_id:
        if hours_since_update > 2:
            has_problem = True
            problems.append(f'todo状态超过{hours_since_update:.1f}小时未开始')
            issues_to_mention.append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours': hours_since_update,
                'reason': 'todo状态超过2小时未开始工作'
            })
    
    # 规则3: in_progress 状态超过48小时未更新
    if status == 'in_progress':
        if hours_since_update > 48:
            has_problem = True
            problems.append(f'in_progress状态超过{hours_since_update:.1f}小时未更新')
            issues_to_mention.append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'assignee_id': assignee_id,
                'assignee_type': assignee_type,
                'hours': hours_since_update,
                'reason': 'in_progress状态超过48小时未更新'
            })
    
    # 规则4: 没有 assignee 但需要有人负责
    if not assignee_id:
        if status in ['todo', 'in_progress', 'in_review']:
            has_problem = True
            problems.append(f'{status}状态但没有分配负责人')
            issues_without_assignee.append({
                'id': issue['id'],
                'identifier': issue_id,
                'title': issue['title'],
                'status': status,
                'reason': f'{status}状态应该有负责人'
            })
    
    # 显示任务信息
    status_emoji = {
        'todo': '📋',
        'in_progress': '⚙️',
        'in_review': '👀',
        'blocked': '🚫'
    }.get(status, '❓')
    
    print(f"\n{status_emoji} {issue_id}: {issue['title'][:60]}")
    print(f"   状态: {status}")
    print(f"   分配: {assignee_type}/{assignee_id if assignee_id else 'NONE'}")
    print(f"   更新: {hours_since_update:.1f}小时前")
    
    if has_problem:
        for p in problems:
            print(f"   ⚠️ {p}")
    else:
        all_good.append(issue_id)
        print(f"   ✅ 状态正常")

print("\n" + "="*80)
print("\n📊 检查结果汇总:\n")

print(f"✅ 状态正常的任务: {len(all_good)}")
if all_good:
    for iid in all_good:
        print(f"   - {iid}")

print(f"\n🔄 需要重新分配的任务: {len(issues_to_reassign)}")
if issues_to_reassign:
    for item in issues_to_reassign:
        print(f"   - {item['identifier']}: {item['reason']}")
        print(f"     当前: {item['current_assignee']} → 应为: {item['correct_assignee']}")

print(f"\n📢 需要添加 mention 提醒的任务: {len(issues_to_mention)}")
if issues_to_mention:
    for item in issues_to_mention:
        print(f"   - {item['identifier']}: {item['reason']}")
        print(f"     已{item['hours']:.1f}小时未更新")

print(f"\n👤 缺少负责人的任务: {len(issues_without_assignee)}")
if issues_without_assignee:
    for item in issues_without_assignee:
        print(f"   - {item['identifier']}: {item['reason']}")

# 输出JSON供后续处理
output = {
    'timestamp': now.isoformat(),
    'total_active': len(active_issues),
    'all_good': len(all_good),
    'to_reassign': issues_to_reassign,
    'to_mention': issues_to_mention,
    'without_assignee': issues_without_assignee
}

with open('/tmp/check_results.json', 'w') as f:
    json.dump(output, f, indent=2, ensure_ascii=False)

print(f"\n详细结果已保存到: /tmp/check_results.json")
