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

168 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 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
```typescript
// 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
```typescript
// 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()
```typescript
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ü
```bash
cd /workspace/app-9jd6q07lo4xs
npm run lint
```
### Kural Kontrolü
```bash
# 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