from pydantic import BaseModel # template.format(**model_dump()) 에 삽입될 변수들 # 각 채널 raw_data를 호출부에서 json.dumps()로 직렬화해서 넘겨야 함 class ReportInput(BaseModel): clinic_name: str | None = None clinic_name_en: str | None = None address: str | None = None phone: str | None = None slogan: str | None = None services: str | None = None doctors: str | None = None instagram: str | None = None facebook: str | None = None naver_blog: str | None = None youtube: str | None = None gangnam_unni: str | None = None class ChannelScore(BaseModel): score: int summary: str strengths: list[str] weaknesses: list[str] class ConversionStrategy(BaseModel): summary: str actions: list[str] # response_format으로 OpenAI structured output에 전달 — dict 필드 사용 불가 class ReportOutput(BaseModel): overall_score: int instagram: ChannelScore | None = None facebook: ChannelScore | None = None naver_blog: ChannelScore | None = None youtube: ChannelScore | None = None gangnam_unni: ChannelScore | None = None conversion_strategy: ConversionStrategy roadmap: list[str] kpis: list[str]