38980-vm/app-9w9pd00g5j41/CAPPADOCIA_RULES_QUICK_REF.md
2026-03-04 18:25:09 +00:00

3.9 KiB
Raw Permalink Blame History

🚀 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 ık Hava Müzesi (museum)
 Zelve ı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 ı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 ı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ı:

  1. Aynı yer tekrar mı? → Reddet
  2. EXCLUDED kategorisi mi? → Reddet
  3. FIXED_TIME ve zaten eklendi mi? → Reddet
  4. LIMITED ve günde zaten var mı? → Reddet
  5. FLEXIBLE → İzin ver
  6. 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

  1. Geriye Uyumluluk

    • Mevcut seyahatler etkilenmez
    • Sadece yeni AUTO_SEED seyahatler
  2. Öncelik Sırası

    • Balon → Restaurant → Flexible → Min Fill
  3. Hata Durumları

    • Kural ihlali → Yer atlanır
    • Minimum yer sayısı → Kural esnetilmez
  4. Genişletilebilirlik

    • Yeni kategori eklemek kolay
    • PLACE_TYPE_CATEGORIES güncelle
    • isValidForDay() 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