205 lines
14 KiB
Markdown
205 lines
14 KiB
Markdown
# AI Recommendation Type Flow Diagram
|
||
|
||
## Complete Flow: From Trip Analysis to UI Display
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ USER CREATES TRIP │
|
||
│ - Destination: Cappadocia │
|
||
│ - Days: 3 days │
|
||
│ - Places: 12 places (museums, valleys, underground cities) │
|
||
│ - Travelers: 4 people │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ ANALYZE-TRIP EDGE FUNCTION │
|
||
│ │
|
||
│ 1. Calculate Metrics: │
|
||
│ - Total distance: 85 km │
|
||
│ - Total time: 24 hours │
|
||
│ - Density score: 42 (HIGH) │
|
||
│ - Places per day: 4 │
|
||
│ │
|
||
│ 2. Extract Place Types: │
|
||
│ - museum, valley, underground_city, panorama │
|
||
│ │
|
||
│ 3. Query Database: │
|
||
│ SELECT * FROM daily_tours │
|
||
│ WHERE region_slug = 'cappadocia' │
|
||
│ AND is_active = true │
|
||
│ │
|
||
│ 4. Score Each Service: │
|
||
│ ┌──────────────┬───────────┬────────────┐ │
|
||
│ │ Service │ Overlap │ Score │ │
|
||
│ ├──────────────┼───────────┼────────────┤ │
|
||
│ │ red_tour │ 3/4 types │ 0.75 │ ← BEST MATCH │
|
||
│ │ green_tour │ 2/4 types │ 0.50 │ │
|
||
│ │ private_guide│ 0/4 types │ 0.00 │ │
|
||
│ └──────────────┴───────────┴────────────┘ │
|
||
│ │
|
||
│ 5. Derive Type from Slug: │
|
||
│ matched_slug = "red_tour" │
|
||
│ ↓ │
|
||
│ if (slug === 'private_guide') → type = 'private_guide' │
|
||
│ else if (slug === 'driver_car') → type = 'driver_car' │
|
||
│ else if (slug === 'activity_bundle') → type = 'activity_bundle'│
|
||
│ else → type = 'daily_tour' ✓ │
|
||
│ │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ API RESPONSE │
|
||
│ { │
|
||
│ "recommend": true, │
|
||
│ "recommended_type": "daily_tour", ← DERIVED FROM SLUG │
|
||
│ "daily_tour_slug": "red_tour", │
|
||
│ "confidence": 0.85, │
|
||
│ "reason": "Planınız Red Tour rotasıyla %75 uyumlu", │
|
||
│ "why_better_than_self": [ │
|
||
│ "Profesyonel rehber eşliğinde tarihi detayları öğrenin", │
|
||
│ "Müze giriş biletleri ve transferler dahil", │
|
||
│ ... │
|
||
│ ] │
|
||
│ } │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ UI: AITourRecommendation.tsx │
|
||
│ │
|
||
│ const typeLabels = { │
|
||
│ daily_tour: 'Günlük Tur', │
|
||
│ private_guide: 'Özel Rehber', │
|
||
│ driver_car: 'Şoförlü Araç', │
|
||
│ activity_bundle: 'Aktivite Paketi' │
|
||
│ }; │
|
||
│ │
|
||
│ Display: │
|
||
│ ┌────────────────────────────────────────────────────┐ │
|
||
│ │ 🎯 AI Önerisi │ │
|
||
│ │ │ │
|
||
│ │ Planınız Red Tour rotasıyla %75 uyumlu │ │
|
||
│ │ │ │
|
||
│ │ 🏷️ Günlük Tur 🔴 Red Tour ⏰ 09:00-17:00 │ │
|
||
│ │ │ │
|
||
│ │ ✓ Profesyonel rehber eşliğinde tarihi detayları │ │
|
||
│ │ ✓ Müze giriş biletleri ve transferler dahil │ │
|
||
│ │ │ │
|
||
│ │ [Turları Görüntüle] │ │
|
||
│ └────────────────────────────────────────────────────┘ │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ USER CLICKS "Turları Görüntüle" │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ SEARCH-TOURS EDGE FUNCTION │
|
||
│ │
|
||
│ Query: │
|
||
│ SELECT * FROM provider_services │
|
||
│ WHERE 'red_tour' = ANY(daily_tour_services) │
|
||
│ AND is_active = true │
|
||
│ ORDER BY rating DESC, lead_price ASC │
|
||
│ │
|
||
│ Returns providers who offer Red Tour service │
|
||
└────────────────────────────┬────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────┐
|
||
│ UI: TourModal.tsx │
|
||
│ │
|
||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||
│ │ Önerilen Turlar │ │
|
||
│ │ Cappadocia için Günlük Tur türünde turlar │ │
|
||
│ │ │ │
|
||
│ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │
|
||
│ │ │ Provider A │ │ Provider B │ │ │
|
||
│ │ │ Red Tour │ │ Red Tour │ │ │
|
||
│ │ │ ⭐ 4.8 (120) │ │ ⭐ 4.6 (85) │ │ │
|
||
│ │ │ 8 saat │ │ 8 saat │ │ │
|
||
│ │ │ €45/kişi │ │ €50/kişi │ │ │
|
||
│ │ │ [Seç] │ │ [Seç] │ │ │
|
||
│ │ └─────────────────────┘ └─────────────────────┘ │ │
|
||
│ └──────────────────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## Type Derivation Examples
|
||
|
||
### Example 1: Private Guide Recommendation
|
||
```
|
||
Trip: 4+ travelers, flexible schedule
|
||
↓
|
||
Match: private_guide (confidence: 0.75)
|
||
↓
|
||
Derive: slug = "private_guide" → type = "private_guide"
|
||
↓
|
||
Display: "Özel Rehber" badge
|
||
↓
|
||
Search: Providers with private_guide in services array
|
||
```
|
||
|
||
### Example 2: Driver Car Recommendation
|
||
```
|
||
Trip: Long distances (>100km), few places
|
||
↓
|
||
Match: driver_car (confidence: 0.80)
|
||
↓
|
||
Derive: slug = "driver_car" → type = "driver_car"
|
||
↓
|
||
Display: "Şoförlü Araç" badge
|
||
↓
|
||
Search: Providers with driver_car in services array
|
||
```
|
||
|
||
### Example 3: Activity Bundle Recommendation
|
||
```
|
||
Trip: Multiple activities (ATV + Balloon + Horse)
|
||
↓
|
||
Match: activity_bundle (confidence: 0.75)
|
||
↓
|
||
Derive: slug = "activity_bundle" → type = "activity_bundle"
|
||
↓
|
||
Display: "Aktivite Paketi" badge
|
||
↓
|
||
Search: Providers with activity_bundle in services array
|
||
```
|
||
|
||
### Example 4: Daily Tour Recommendation
|
||
```
|
||
Trip: High density, many museums, valleys
|
||
↓
|
||
Match: red_tour (confidence: 0.85)
|
||
↓
|
||
Derive: slug = "red_tour" → type = "daily_tour"
|
||
↓
|
||
Display: "Günlük Tur" + "🔴 Red Tour" badges
|
||
↓
|
||
Search: Providers with red_tour in services array
|
||
```
|
||
|
||
## Key Principles
|
||
|
||
1. **Single Source of Truth**: The service slug determines the type
|
||
2. **No Hardcoding**: Type is always derived, never hardcoded
|
||
3. **Validation**: AI responses are validated and corrected if needed
|
||
4. **Consistency**: Slug and type are always aligned
|
||
5. **Transparency**: Debug info shows derivation reasoning
|
||
|
||
## Service Type Mapping Table
|
||
|
||
| Slug | Type | Turkish Label | Use Case |
|
||
|------|------|---------------|----------|
|
||
| red_tour | daily_tour | Günlük Tur | High density, museums, valleys |
|
||
| green_tour | daily_tour | Günlük Tur | Long distance, underground cities |
|
||
| blue_tour | daily_tour | Günlük Tur | Off-beaten path, quiet places |
|
||
| balloon_day | daily_tour | Günlük Tur | Balloon + light tour |
|
||
| private_guide | private_guide | Özel Rehber | 4+ travelers, flexible schedule |
|
||
| driver_car | driver_car | Şoförlü Araç | Long distances, comfort |
|
||
| activity_bundle | activity_bundle | Aktivite Paketi | Multiple activities |
|