from pydantic import BaseModel, Field from typing import List # Input 정의 class MarketingPromptInput(BaseModel): customer_name : str region : str detail_region_info : str # Output 정의 class BrandIdentity(BaseModel): location_feature_analysis: str = Field(..., description="입지 특성 분석") concept_scalability: str = Field(..., description="컨셉 확장성") class MarketPositioning(BaseModel): category_definition: str = Field(..., description="마케팅 카테고리") core_value: str = Field(..., description="마케팅 포지션 핵심 가치") class AgeRange(BaseModel): min_age : int = Field(..., ge=0, le=100) max_age : int = Field(..., ge=0, le=100) class TargetPersona(BaseModel): persona: str = Field(..., description="타겟 페르소나 이름/설명") age: AgeRange favor_target: List[str] = Field(..., description="페르소나의 선호 요소") decision_trigger: str = Field(..., description="구매 결정 트리거") class SellingPoint(BaseModel): category: str = Field(..., description="셀링포인트 카테고리") description: str = Field(..., description="상세 설명") score: int = Field(..., ge=0, le=100, description="점수 (100점 만점)") class MarketingPromptOutput(BaseModel): brand_identity: BrandIdentity market_positioning: MarketPositioning target_persona: List[TargetPersona] selling_points: List[SellingPoint] target_keywords: List[str] = Field(..., description="타겟 키워드 리스트")