44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
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="타겟 키워드 리스트")
|