"""에피소드 요약 모듈."""

import logging
from typing import Dict, Optional

from app.modules.llm.llm_client import call_structured
from app.modules.prompt_loader import load_prompt, load_schema

logger = logging.getLogger(__name__)

_MODULE = "episode_summary"


def summarize_episode(
    fulltext: str,
    max_length: int = 500,
    project_config: Optional[Dict] = None,
    opik_metadata: Optional[Dict] = None,
) -> Dict:
    system = load_prompt(_MODULE, "system", max_length=max_length)
    schema = load_schema(_MODULE, "summary_schema")

    user_prompt = (
        f"아래 시나리오를 {max_length}자 이내로 요약해주세요.\n\n"
        f"{fulltext}"
    )

    result = call_structured(
        step="episode_summary",
        system_prompt=system,
        user_prompt=user_prompt,
        response_schema=schema,
        project_config=project_config,
        schema_name="episode_summary",
        opik_metadata=opik_metadata,
    )
    return result
