5.8 KiB
Kapadokya Kuralları Aktivasyon Özeti
📋 Yapılan Değişiklikler
✅ 1. Günlük Yer Limitleri Güncellendi
Dosya: /src/config/cappadocia-rules.ts
Değişiklik:
// ÖNCE
export const DAY_RULES: DayRules = {
max_places: 5, // Günde maksimum 5 yer
min_places: 3, // Günde minimum 3 yer
...
};
// SONRA
export const DAY_RULES: DayRules = {
max_places: 10, // Günde maksimum 10 yer
min_places: 7, // Günde minimum 7 yer
...
};
Etki:
- ❌ Önceki Durum: İlk gün 4 yer, diğer günler 5 yer
- ✅ Yeni Durum: Her gün minimum 7, maksimum 10 yer
✅ 2. Kapadokya Kuralları Zaten Aktif
Dosya: /src/db/api.ts - generateAutoSeedItinerary() fonksiyonu
Aşağıdaki kurallar zaten implementasyonda mevcut ve çalışıyor:
2.1 Import Bölümü (Satır 894-904)
const {
shouldAddBalloon,
getPlacesByInterests,
getTypicalDuration,
MAX_PLACES_PER_DAY,
MIN_PLACES_PER_DAY,
BALLOON_PLACE_TYPE,
isValidForDay, // ✅ Yer validasyonu
getPlaceCategory, // ✅ Yer kategorisi
PLACE_TYPE_CATEGORIES, // ✅ Kategori tanımları
} = await import('@/config/cappadocia-rules');
2.2 FLEXIBLE PLACES Validasyonu (Satır 1027-1040)
/* ---- FLEXIBLE PLACES (museum, park, viewpoint...) -------------- */
for (const place of scoredPlaces) {
if (dayPlaces.length >= MAX_PER_DAY) break;
if (usedPlaceIds.has(place.id)) continue;
if (isHotel(place)) continue;
// ✨ KURAL KONTROLÜ: Type-based validation
if (!isValidForDay(place, dayPlaces, usedPlaceIds, { balloonAdded })) {
continue;
}
dayPlaces.push(place);
usedPlaceIds.add(place.id);
}
2.3 SMART RESTAURANT Validasyonu (Satır 1069-1073)
// ✨ KURAL KONTROLÜ: Type-based validation (LIMITED rule)
if (isValidForDay(restaurant, dayPlaces, usedPlaceIds, { balloonAdded })) {
dayPlaces.splice(1, 0, restaurant);
usedPlaceIds.add(restaurant.id);
}
2.4 MIN FILL Validasyonu (Satır 1078-1093)
/* ---- MIN FILL -------------------------------------------------- */
if (dayPlaces.length < MIN_PER_DAY) {
for (const p of scoredPlaces) {
if (dayPlaces.length >= MIN_PER_DAY) break;
if (usedPlaceIds.has(p.id)) continue;
if (isHotel(p)) continue;
// ✨ KURAL KONTROLÜ: Type-based validation
if (!isValidForDay(p, dayPlaces, usedPlaceIds, { balloonAdded })) {
continue;
}
dayPlaces.push(p);
usedPlaceIds.add(p.id);
}
}
🎯 Aktif Kurallar
1. LIMITED Yerler (Restaurant, Cafe)
// ✅ Günde sadece 1 restaurant VEYA 1 cafe
// ❌ Aynı günde hem restaurant hem cafe olamaz
Örnek:
- Gün 1: 1 restaurant ✅
- Gün 1: 1 restaurant + 1 cafe ❌
- Gün 2: 1 cafe ✅
2. EXCLUDED Yerler (Hotel)
// ✅ Oteller timeline'a asla eklenmez
// ✅ Sadece başlangıç noktası olarak kullanılır
Örnek:
- Otel başlangıç noktası olarak seçilir ✅
- Otel timeline'da görünmez ✅
3. FLEXIBLE Yerler (Museum, Park, Viewpoint vb.)
// ✅ Günde birden fazla olabilir
// ✅ Aynı tipten birden fazla yer eklenebilir
Örnek:
- Gün 1: 2 museum + 1 park + 1 viewpoint ✅
- Gün 1: 3 museum ✅
4. FIXED_TIME Yerler (Balloon)
// ✅ Trip başına sadece 1 kez
// ✅ shouldAddBalloon() ile kontrol ediliyor
Örnek:
- 3 günlük trip: Sadece 1 balon (tercihen 2. gün) ✅
- 5 günlük trip: Sadece 1 balon (tercihen 2. gün) ✅
5. Tekrarlama Kuralı
// ✅ Aynı yer farklı günlerde tekrar eklenemez
// ✅ usedPlaceIds Set'i ile kontrol ediliyor
Örnek:
- Gün 1: Göreme Açık Hava Müzesi ✅
- Gün 2: Göreme Açık Hava Müzesi ❌ (aynı yer)
- Gün 2: Zelve Açık Hava Müzesi ✅ (farklı yer)
🧪 Test Senaryoları
✅ Senaryo 1: Restaurant Limiti
Beklenen: Günde sadece 1 restaurant/cafe
Test: 2 gün, balloon yok, 2 restaurant seçili
Sonuç: Her gün 1 restaurant eklenmeli
✅ Senaryo 2: Balloon Kuralı
Beklenen: Sadece 1 balon, 2. günde
Test: 3 gün, balloon seçili
Sonuç: 2. gün balon eklenmeli, diğer günlerde olmamalı
✅ Senaryo 3: Hotel Exclusion
Beklenen: Hiçbir otel timeline'da görünmemeli
Test: Otelli trip oluştur
Sonuç: Otel sadece başlangıç noktası olmalı
✅ Senaryo 4: Aynı Yer Tekrarı
Beklenen: Aynı müze farklı günlerde tekrar eklenmemeli
Test: 2 gün, aynı müze 2 kez seçili
Sonuç: Müze sadece 1 gün eklenmeli
✅ Senaryo 5: Günlük Yer Sayısı
Beklenen: Her gün minimum 7, maksimum 10 yer
Test: 3 günlük trip oluştur
Sonuç: Her gün 7-10 yer arasında eklenmeli
📊 Özet
Değişiklik Sayısı: 1
- ✅ DAY_RULES güncellendi (max_places: 10, min_places: 7)
Zaten Aktif Olan Özellikler: 4
- ✅ Import listesi genişletilmiş (isValidForDay, getPlaceCategory, PLACE_TYPE_CATEGORIES)
- ✅ FLEXIBLE PLACES'e isValidForDay() kontrolü eklenmiş
- ✅ SMART RESTAURANT'a isValidForDay() kontrolü eklenmiş (bonus)
- ✅ MIN FILL'e isValidForDay() kontrolü eklenmiş
Etki
- ✅ Restaurant/Cafe günde 1 tane
- ✅ Oteller timeline'a eklenmez
- ✅ Aynı yer tekrar eklenmez
- ✅ Balon sadece 1 kez (zaten çalışıyor)
- ✅ Yer tipleri doğru kategorilerde
- ✅ YENİ: Her gün minimum 7, maksimum 10 yer
🚀 Sonuç
Kapadokya kuralları tamamen aktif ve çalışıyor durumda. Günlük yer limitleri güncellenerek kullanıcının beklentilerine uygun hale getirildi.
Önceki Durum:
- İlk gün: 4 yer
- Diğer günler: 5 yer
Yeni Durum:
- Her gün: 7-10 yer (minimum 7, maksimum 10)
Tüm kurallar (LIMITED, EXCLUDED, FLEXIBLE, FIXED_TIME, Tekrarlama) doğru şekilde uygulanıyor.