"""
claude_md_check.py - CLAUDE.md 파일 줄 수 검증 verifier
각 팀의 CLAUDE.md 파일이 100줄을 초과하는지 확인 → 초과 시 WARN
"""

import glob
import os


def verify(task_id: str, workspace_root: str = "/home/jay/workspace") -> dict:
    """
    /home/jay/workspace/teams/*/CLAUDE.md 파일들을 검색하여 줄 수를 확인합니다.

    Returns:
        {"status": "PASS"|"WARN"|"SKIP", "details": [...]}
    """
    _ = task_id
    pattern = os.path.join(workspace_root, "teams", "*", "CLAUDE.md")
    found_files = glob.glob(pattern)

    if not found_files:
        return {
            "status": "SKIP",
            "details": ["CLAUDE.md 파일을 찾을 수 없음: " + pattern],
        }

    details: list[str] = []
    over_limit: list[str] = []

    for filepath in sorted(found_files):
        team_name = os.path.basename(os.path.dirname(filepath))
        try:
            with open(filepath, encoding="utf-8") as f:
                line_count = sum(1 for _ in f)
        except OSError as e:
            details.append(f"SKIP: {team_name}/CLAUDE.md — 파일 읽기 실패: {e}")
            continue

        if line_count > 100:
            msg = f"WARN: {team_name}/CLAUDE.md — {line_count}줄 (100줄 초과)"
            details.append(msg)
            over_limit.append(msg)
        else:
            details.append(f"OK: {team_name}/CLAUDE.md — {line_count}줄")

    if over_limit:
        return {"status": "WARN", "details": details}

    return {"status": "PASS", "details": details}


if __name__ == "__main__":
    import json
    import sys

    tid = sys.argv[1] if len(sys.argv) > 1 else ""
    result = verify(task_id=tid)
    print(json.dumps(result, ensure_ascii=False, indent=2))
