"""Rule-based 한국어 1줄 요약 템플릿.

외부 LLM 미사용. 향후 enhancement는 README 참조.
포맷:
    "{drug}의 {sponsor}이 {date}에 {phase/event} 단계에서 {event}를 보고함"
이벤트 종류에 맞는 변형 템플릿을 사용한다.
"""

from __future__ import annotations

from typing import Any, Dict


def summarize(event: Dict[str, Any], snapshot_date: str) -> str:
    ev = event.get("event", "")
    drug = event.get("drug") or ", ".join(event.get("drugs", []) or []) or "(미상)"
    sponsor = event.get("sponsor", "") or "(sponsor 미상)"
    when = event.get("date") or snapshot_date

    if ev == "new_trial":
        phase = event.get("after") or ""
        return f"{drug}의 {sponsor}이 {when}에 {phase} 신규 trial 등록을 보고함."
    if ev == "removed_trial":
        return f"{drug}의 {sponsor} trial이 {when}에 등록 목록에서 제거됨."
    if ev == "phase_change":
        return f"{drug}의 {sponsor}이 {when}에 phase {event.get('before')} -> {event.get('after')} 전환을 보고함."
    if ev == "status_change":
        return f"{drug}의 {sponsor}이 {when}에 status {event.get('before')} -> {event.get('after')} 변경을 보고함."
    if ev == "results_posted":
        return f"{drug}의 {sponsor}이 {when}에 결과(results posted)를 등록함."
    if ev == "primary_completion_change":
        return f"{drug}의 {sponsor}이 {when}에 primary completion 일정을 {event.get('before')} -> {event.get('after')}로 변경함."
    if ev == "ae_added":
        added = ", ".join(sorted(set(event.get("after") or []) - set(event.get("before") or [])))
        return f"{drug}의 {sponsor} trial에서 {when}에 신규 AE term({added})이 보고됨."
    if ev == "new_fda_item":
        cat = event.get("category", "regulatory")
        return f"{drug}에 대해 {when}에 FDA {cat} 항목이 게시됨: {event.get('headline', '')}."
    if ev == "ema_item":
        cat = event.get("category", "regulatory")
        return f"{drug}에 대해 {when}에 EMA {cat} 항목이 게시됨: {event.get('headline', '')}."
    if ev == "pmda_item":
        cat = event.get("category", "regulatory")
        return f"{drug}에 대해 {when}에 PMDA {cat} 항목이 게시됨: {event.get('headline', '')}."
    if ev == "ir_item":
        sp = event.get("sponsor") or sponsor
        return f"{sp}이 {when}에 IR/{event.get('type', '')} 공시: {event.get('headline', '')} ({drug})."
    if ev == "aasld_abstract":
        return f"AASLD 2026(synthetic) abstract: {drug} - {event.get('headline', '')}."

    return f"{drug} 관련 {ev} 이벤트가 {when}에 기록됨."
