"""로또 큐레이션·당첨 알림 — 텔레그램 푸시."""
import logging
from typing import Dict, Any

# 기존 에이전트들과 동일한 패턴: send_raw(text, reply_markup=None, chat_id=None)
# chat_id 생략 시 기본 TELEGRAM_CHAT_ID로 자동 발송.
from ..telegram.messaging import send_raw

logger = logging.getLogger("agent-office")

LOTTO_URL = "https://gahusb.synology.me/lotto"


def _format_briefing(payload: Dict[str, Any]) -> str:
    draw_no = payload["draw_no"]
    nar = payload["narrative"]
    conf = payload["confidence"]

    # 분배 칩 — core 5세트의 risk_tag 빈도
    core = payload["picks"]["core"]
    role_count = {"안정": 0, "균형": 0, "공격": 0}
    for p in core:
        role_count[p["risk_tag"]] = role_count.get(p["risk_tag"], 0) + 1
    chip = " · ".join(f"{k} {v}" for k, v in role_count.items() if v)

    msg = [
        f"🎟 {draw_no}회 · 큐레이션 떴음",
        "",
        f"\"{nar['headline']}\"",
        f"신뢰도 {conf} · 분배 {chip}",
    ]
    retro = nar.get("retrospective") or ""
    if retro:
        msg += ["", f"▸ 회고: {retro}"]
    msg += ["", f"👉 결정 카드 보러가기  ({LOTTO_URL})"]
    return "\n".join(msg)


def _format_prize_alert(event: Dict[str, Any]) -> str:
    return (
        "🚨 로또 당첨 가능성!\n"
        f"{event['draw_no']}회 — {event['match_count']}개 일치\n"
        f"번호: {', '.join(str(n) for n in event['numbers'])}\n"
        "동행복권에서 즉시 확인하세요."
    )


async def send_curator_briefing(payload: Dict[str, Any]) -> None:
    text = _format_briefing(payload)
    try:
        await send_raw(text)
    except Exception as e:
        logger.warning(f"[telegram_lotto] briefing send failed: {e}")


async def send_prize_alert(event: Dict[str, Any]) -> None:
    text = _format_prize_alert(event)
    try:
        await send_raw(text)
    except Exception as e:
        logger.warning(f"[telegram_lotto] prize alert send failed: {e}")
