#!/usr/bin/env python3
"""bot-activity.json 상태 관리 유틸리티

dispatch.py와 notify-completion.py에서 호출하여 봇 상태를 관리합니다.
"""

import json
from datetime import datetime, timezone
from pathlib import Path
from typing import Optional

BOT_ACTIVITY_FILE = Path("/home/jay/workspace/memory/events/bot-activity.json")

TEAM_TO_BOT = {
    "dev1-team": "dev1",
    "dev2-team": "dev2",
    "dev3-team": "dev3",
    "dev4-team": "dev4",
    "dev5-team": "dev5",
    "dev6-team": "dev6",
    "dev7-team": "dev7",
    "dev8-team": "dev8",
    "dev-team": "dev3",  # 기본값
}


def set_bot_status(team_id: str, status: str) -> None:
    """bot-activity.json의 봇 status와 since를 갱신.

    Args:
        team_id: 팀 ID (예: "dev1-team")
        status: 상태 ("processing" 또는 "idle")

    Note:
        실패해도 작업 진행에 영향 없도록 예외를 무시합니다.
    """
    bot_name = TEAM_TO_BOT.get(team_id)
    if not bot_name:
        return

    try:
        if BOT_ACTIVITY_FILE.exists():
            data = json.loads(BOT_ACTIVITY_FILE.read_text(encoding="utf-8"))
        else:
            data = {"bots": {}}

        if bot_name not in data.get("bots", {}):
            data.setdefault("bots", {})[bot_name] = {}

        data["bots"][bot_name]["status"] = status
        data["bots"][bot_name]["since"] = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")

        BOT_ACTIVITY_FILE.parent.mkdir(parents=True, exist_ok=True)
        BOT_ACTIVITY_FILE.write_text(json.dumps(data, indent=2, ensure_ascii=False))

    except Exception:
        # 실패해도 작업 진행에 영향 없음
        pass


def get_bot_status(team_id: str) -> Optional[dict]:
    """bot-activity.json에서 봇 상태 조회.

    Args:
        team_id: 팀 ID (예: "dev1-team")

    Returns:
        봇 상태 dict 또는 None
    """
    bot_name = TEAM_TO_BOT.get(team_id)
    if not bot_name:
        return None

    try:
        if not BOT_ACTIVITY_FILE.exists():
            return None
        data = json.loads(BOT_ACTIVITY_FILE.read_text(encoding="utf-8"))
        return data.get("bots", {}).get(bot_name)
    except Exception:
        return None
