44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
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]
|