3.9 KiB
3.9 KiB
🚀 Kapadokya Kuralları - Hızlı Referans
📌 Kural Kategorileri
🟢 FLEXIBLE (Esnek)
museum, park, viewpoint, valley, historical_site, church, cave, underground_city
- ✅ Günde birden fazla
- ✅ Aynı tipten birden fazla
🟡 LIMITED (Sınırlı)
restaurant, cafe
- ✅ Günde sadece 1
- ❌ Restaurant VEYA cafe
🔴 EXCLUDED (Hariç)
hotel, accommodation, lodging
- ❌ Asla timeline'a eklenmez
- ✅ Sadece başlangıç noktası
🔵 FIXED_TIME (Sabit Saatli)
hot_air_balloon, hot-air-balloon
- ✅ Trip başına 1 kez
- ✅ Tercihen 2. gün
🎯 Kullanım Örnekleri
✅ Doğru Kullanım
// GÜN 1
✅ Göreme Açık Hava Müzesi (museum)
✅ Zelve Açık Hava Müzesi (museum) // FLEXIBLE: Birden fazla müze
✅ Seten Restaurant (restaurant) // LIMITED: 1 tane
✅ Uçhisar Kalesi (viewpoint)
// GÜN 2
✅ Balon Turu (hot_air_balloon) // FIXED_TIME: Trip başına 1
✅ Paşabağ Vadisi (valley)
✅ Dibek Restaurant (restaurant) // LIMITED: Farklı gün, farklı restaurant
❌ Yanlış Kullanım
// GÜN 1
✅ Göreme Açık Hava Müzesi (museum)
❌ Sultan Cave Suites (hotel) // EXCLUDED: Asla eklenmez
✅ Seten Restaurant (restaurant)
❌ Cafe Safak (cafe) // LIMITED: Günde zaten restaurant var
// GÜN 2
✅ Balon Turu (hot_air_balloon)
❌ Göreme Açık Hava Müzesi (museum) // Tekrarlama: Aynı yer 2. kez
❌ 2. Balon Turu (hot_air_balloon) // FIXED_TIME: Trip başına 1 kez
🔍 Kontrol Fonksiyonu
isValidForDay()
isValidForDay(
place: PlaceWithCoordinates,
dayPlaces: DayPlace[],
usedPlaceIds: Set<string>,
rulesContext?: { balloonAdded?: boolean }
): boolean
Kontrol Sırası:
- ✅ Aynı yer tekrar mı? → Reddet
- ✅ EXCLUDED kategorisi mi? → Reddet
- ✅ FIXED_TIME ve zaten eklendi mi? → Reddet
- ✅ LIMITED ve günde zaten var mı? → Reddet
- ✅ FLEXIBLE → İzin ver
- ✅ UNKNOWN → İzin ver
📊 Kural Matrisi
| Kategori | Günde Kaç Tane | Aynı Tip | Tekrar | Örnek |
|---|---|---|---|---|
| FLEXIBLE | Birden fazla | ✅ | ❌ | museum, park |
| LIMITED | 1 | ❌ | ❌ | restaurant, cafe |
| EXCLUDED | 0 | ❌ | ❌ | hotel |
| FIXED_TIME | Trip'te 1 | ❌ | ❌ | balloon |
🛠️ Kod Konumları
Kural Tanımları
/src/config/cappadocia-rules.ts
PLACE_TYPE_CATEGORIES(Satır 174-186)getPlaceCategory()(Satır 191-197)isValidForDay()(Satır 273-314)
Kural Uygulaması
/src/db/api.ts
- Import (Satır 894-904)
- FLEXIBLE PLACES (Satır 1027-1040)
- MIN FILL (Satır 1073-1088)
🧪 Test Komutları
TypeScript Kontrolü
cd /workspace/app-9jd6q07lo4xs
npm run lint
Kural Kontrolü
# Import kontrolü
grep "isValidForDay" src/db/api.ts
# Kullanım kontrolü
grep -A 5 "isValidForDay(place\|isValidForDay(p" src/db/api.ts
📈 Performans
Zaman Karmaşıklığı
isValidForDay(): O(n) - n = günlük yer sayısı (max 5)getPlaceCategory(): O(1) - Sabit zaman
Alan Karmaşıklığı
usedPlaceIds: O(m) - m = toplam yer sayısı (max 15)
🎓 Önemli Notlar
-
Geriye Uyumluluk
- Mevcut seyahatler etkilenmez
- Sadece yeni AUTO_SEED seyahatler
-
Öncelik Sırası
- Balon → Restaurant → Flexible → Min Fill
-
Hata Durumları
- Kural ihlali → Yer atlanır
- Minimum yer sayısı → Kural esnetilmez
-
Genişletilebilirlik
- Yeni kategori eklemek kolay
PLACE_TYPE_CATEGORIESgüncelleisValidForDay()otomatik çalışır
🔗 İlgili Dosyalar
- ✅
CAPPADOCIA_RULES_ACTIVATION.md- Detaylı kılavuz - ✅
CAPPADOCIA_RULES_BEFORE_AFTER.md- Önce/Sonra - ✅
CAPPADOCIA_RULES_SUMMARY.md- Özet - ✅
test-cappadocia-rules.ts- Test senaryoları
Versiyon: 1.0
Tarih: 2025
Durum: ✅ Aktif