Compare commits

..

No commits in common. "5a77d22c9f27dbf0c854d66e472b3e7250f59b3c" and "08a699648d035330585e2a0bed0815eab1b05c8a" have entirely different histories.

4 changed files with 15 additions and 24 deletions

View File

@ -275,44 +275,37 @@ class CrawlingResponse(BaseModel):
], ],
"selling_points": [ "selling_points": [
{ {
"english_category": "LOCATION", "category": "LOCATION",
"korean_category": "입지 환경",
"description": "군산 감성 동선", "description": "군산 감성 동선",
"score": 88 "score": 88
}, },
{ {
"english_category": "HEALING", "category": "HEALING",
"korean_category": "힐링 요소",
"description": "멈춤이 되는 쉼", "description": "멈춤이 되는 쉼",
"score": 92 "score": 92
}, },
{ {
"english_category": "PRIVACY", "category": "PRIVACY",
"korean_category": "프라이버시",
"description": "방해 없는 머뭄", "description": "방해 없는 머뭄",
"score": 86 "score": 86
}, },
{ {
"english_category": "NIGHT MOOD", "category": "NIGHT MOOD",
"korean_category": "야간 감성",
"description": "밤이 예쁜 조명", "description": "밤이 예쁜 조명",
"score": 84 "score": 84
}, },
{ {
"english_category": "PHOTO SPOT", "category": "PHOTO SPOT",
"korean_category": "포토 스팟",
"description": "자연광 포토존", "description": "자연광 포토존",
"score": 83 "score": 83
}, },
{ {
"english_category": "SHORT GETAWAY", "category": "SHORT GETAWAY",
"korean_category": "숏브레이크",
"description": "주말 리셋 스테이", "description": "주말 리셋 스테이",
"score": 89 "score": 89
}, },
{ {
"english_category": "HOSPITALITY", "category": "HOSPITALITY",
"korean_category": "서비스",
"description": "세심한 웰컴감", "description": "세심한 웰컴감",
"score": 80 "score": 80
} }

View File

@ -31,10 +31,9 @@ class TargetPersona(BaseModel):
class SellingPoint(BaseModel): class SellingPoint(BaseModel):
english_category: str = Field(..., description="셀링포인트 카테고리(영문)") category: str = Field(..., description="셀링포인트 카테고리")
korean_category: str = Field(..., description="셀링포인트 카테고리(한글)")
description: str = Field(..., description="상세 설명") description: str = Field(..., description="상세 설명")
score: int = Field(..., ge=0, le=100, description="점수 (100점 만점)") score: int = Field(..., ge=70, le=99, description="점수 (100점 만점)")
class MarketingPromptOutput(BaseModel): class MarketingPromptOutput(BaseModel):
brand_identity: BrandIdentity = Field(..., description="브랜드 아이덴티티") brand_identity: BrandIdentity = Field(..., description="브랜드 아이덴티티")

View File

@ -9,8 +9,8 @@ Act as a Senior Brand Strategist and Marketing Data Analyst. Your goal is to ana
# Output Rules # Output Rules
1. **Language:** All descriptive content must be written in **Korean (한국어)**. 1. **Language:** All descriptive content must be written in **Korean (한국어)**.
2. **Terminology:** Use professional marketing terminology suitable for the hospitality and stay industry. 2. **Terminology:** Use professional marketing terminology suitable for the hospitality and stay industry.
3. **Strict Selection for `selling_points.english_category` and `selling_points.korean_category`:** You must select the value for both category field in `selling_points` strictly from the following English - Korean set allowed list to ensure UI compatibility: 3. **Strict Selection for `selling_points.category`:** You must select the value for the `category` field in `selling_points` strictly from the following English allowed list to ensure UI compatibility:
* `LOCATION` (입지 환경), `CONCEPT` (브랜드 컨셉), `PRIVACY` (프라이버시), `NIGHT MOOD` (야간 감성), `HEALING` (힐링 요소), `PHOTO SPOT` (포토 스팟), `SHORT GETAWAY` (숏브레이크), `HOSPITALITY` (서비스), `SWIMMING POOL` (수영장), `JACUZZI` (자쿠지), `BBQ PARTY` (바베큐), `FIRE PIT` (불멍), `GARDEN` (정원), `BREAKFAST` (조식), `KIDS FRIENDLY` (키즈 케어), `PET FRIENDLY` (애견 동반), `OCEAN VIEW` (오션뷰), `PRIVATE POOL` (개별 수영장), `OCEAN VIEW`, `PRIVATE POOL`. * `LOCATION`, `CONCEPT`, `PRIVACY`, `NIGHT MOOD`, `HEALING`, `PHOTO SPOT`, `SHORT GETAWAY`, `HOSPITALITY`, `SWIMMING POOL`, `JACUZZI`, `BBQ PARTY`, `FIRE PIT`, `GARDEN`, `BREAKFAST`, `KIDS FRIENDLY`, `PET FRIENDLY`, `OCEAN VIEW`, `PRIVATE POOL`.
--- ---
@ -32,10 +32,9 @@ Generate a list of personas based on the following:
* **`decision_trigger`**: Identify the specific "Hook" or facility that leads this persona to finalize a booking. * **`decision_trigger`**: Identify the specific "Hook" or facility that leads this persona to finalize a booking.
### 4. selling_points ### 4. selling_points
Generate 5-8 selling points: Generate exactly 7 selling points:
* **`english_category`**: Strictly use one keyword from the English allowed list provided in the Output Rules. * **`category`**: Strictly use one keyword from the English allowed list provided in the Output Rules.
* **`korean category`**: Strictly use one keyword from the Korean allowed list provided in the Output Rules . It must be matched with english category. * **`description`**: A short, punchy marketing phrase in Korean (max 20 characters).
* **`description`**: A short, punchy marketing phrase in Korean (15~30 characters).
* **`score`**: An integer (70-99) representing the strength of this feature based on the brand's potential. * **`score`**: An integer (70-99) representing the strength of this feature based on the brand's potential.
### 5. target_keywords ### 5. target_keywords

View File

@ -3,7 +3,7 @@ name = "o2o-castad-backend"
version = "0.1.0" version = "0.1.0"
description = "Add your description here" description = "Add your description here"
readme = "README.md" readme = "README.md"
requires-python = "3.13.11" requires-python = ">=3.14"
dependencies = [ dependencies = [
"aiofiles>=25.1.0", "aiofiles>=25.1.0",
"aiohttp>=3.13.2", "aiohttp>=3.13.2",