from pydantic import BaseModel, Field from typing import List # Input 정의 class SsulUploadPromptInput(BaseModel): """썰박스 SNS 업로드 SEO 프롬프트 입력. ADO2(yt_upload)와 별도 프롬프트를 쓴다 — ADO2 는 업장 마케팅 분석 보고서 기반의 광고 영상이지만, 썰박스는 "병맛 역사 썰툰"이라 제목·설명의 톤이 완전히 다르다. 스프레드시트 시트명: `ssul_upload` (B2=모델, B3=템플릿). 템플릿에서 쓸 수 있는 변수: {store_name} {region} {scenario_name} """ store_name: str = Field(..., description="마케팅 대상 업장명 (모르면 빈 문자열)") region: str = Field(default="", description="업장 지역 (모르면 빈 문자열)") scenario_name: str = Field( ..., description="시나리오 한글명 (조선왕/삼국지/그리스·로마 신화/오디세이)" ) # Output 정의 class SsulUploadPromptOutput(BaseModel): title: str = Field(..., description="쇼츠 제목 - 병맛 톤 + SEO") description: str = Field(..., description="업로드 설명 - 병맛 톤 + SEO/해시태그 포함") # ADO2 는 마케팅 분석의 target_keywords 를 태그로 재사용하지만 썰박스에는 # 그 분석이 없다 — GPT 가 태그까지 함께 만든다. keywords: List[str] = Field(..., description="태그 키워드 리스트")