# Persona Engine - Kullanım Kılavuzu

## Genel Bakış

Persona Engine, lead'leri otomatik olarak 7 farklı turist profiline göre sınıflandırır ve harcama potansiyelini belirler.

## Persona Tipleri

1. **💑 Romantik Çift** (Romantic Couple)
   - Harcama Potansiyeli: Yüksek
   - Önerilen Hizmetler: Özel balon turu, romantik akşam yemeği, butik otel, spa

2. **🎒 Bütçe Gezgini** (Budget Backpacker)
   - Harcama Potansiyeli: Düşük
   - Önerilen Hizmetler: Grup turları, hostel, yürüyüş turları

3. **👑 Lüks Gezgin** (Luxury Traveler)
   - Harcama Potansiyeli: Çok Yüksek
   - Önerilen Hizmetler: VIP balon turu, helikopter turu, 5 yıldızlı otel

4. **📸 İçerik Üreticisi** (Content Creator)
   - Harcama Potansiyeli: Orta
   - Önerilen Hizmetler: Fotoğraf turları, drone çekimi, Instagram lokasyonları

5. **👨‍👩‍👧‍👦 Aile Gezgini** (Family Explorer)
   - Harcama Potansiyeli: Orta
   - Önerilen Hizmetler: Aile dostu turlar, çocuk dostu oteller

6. **🧗 Solo Maceracı** (Solo Adventurer)
   - Harcama Potansiyeli: Orta
   - Önerilen Hizmetler: Grup turları, macera aktiviteleri, trekking

7. **👥 Grup Turu** (Group Tour)
   - Harcama Potansiyeli: Yüksek
   - Önerilen Hizmetler: Grup turları, toplu konaklama, rehberli turlar

## Kullanım Örnekleri

### 1. PersonaBadge Komponenti

```tsx
import { PersonaBadge } from '@/components/planner/PersonaBadge';

// Basit kullanım
<PersonaBadge persona={lead.tourist_persona} />

// Açıklama ile
<PersonaBadge 
  persona={lead.tourist_persona} 
  showDescription={true} 
/>

// Özel stil ile
<PersonaBadge 
  persona={lead.tourist_persona} 
  className="my-custom-class" 
/>
```

### 2. Persona Detection

```tsx
import { detectPersona } from '@/utils/persona-engine';

const personaResult = detectPersona({
  interests: ['romantik', 'özel'],
  planned_activities: ['Sıcak hava balonu', 'Akşam yemeği'],
  number_of_travelers: 2,
  start_date: '2026-03-01',
  end_date: '2026-03-05',
  budget_range: 'high'
});

console.log(personaResult.persona.label); // "Romantik Çift"
console.log(personaResult.confidence); // 0.85
console.log(personaResult.persona.key_signals); // ["2 kişilik rezervasyon", "Romantik ilgi alanları"]
```

### 3. Lead Card (Provider Dashboard)

```tsx
import { LeadCard } from '@/components/provider/LeadCard';

<LeadCard 
  lead={lead} 
  onContact={(leadId) => {
    // İletişim işlemi
  }} 
/>
```

### 4. Admin Persona Analytics

Admin panelinde `/admin/persona-analytics` sayfasına giderek:
- Persona dağılımını görüntüleyin
- Harcama potansiyeli analizini inceleyin
- Lead istatistiklerini takip edin

## Otomatik Entegrasyon

Persona Engine, lead oluşturulduğunda otomatik olarak çalışır:

1. **Trip Planner'da Lead Oluşturma**
   - Kullanıcı seyahat planı oluşturur
   - Lead capture modal'ı açılır
   - Form gönderildiğinde persona otomatik tespit edilir
   - Başarı mesajında persona gösterilir: "Seyahat profiliniz: 💑 Romantik Çift"

2. **Persona Tespiti**
   - İlgi alanları analiz edilir
   - Planlanan aktiviteler değerlendirilir
   - Gezgin sayısı dikkate alınır
   - Bütçe aralığı (varsa) incelenir
   - En yüksek güven skoruna sahip persona seçilir

3. **Veri Saklama**
   - Persona bilgisi `tourist_persona` alanında saklanır
   - Güven skoru `persona_confidence` alanında saklanır
   - Tespit edilen sinyaller `key_signals` array'inde tutulur

## API Kullanımı

### Lead Oluşturma

```typescript
import { leadsApi } from '@/db/api';
import { detectPersona } from '@/utils/persona-engine';

const personaResult = detectPersona({
  // ... trip data
});

await leadsApi.create({
  trip_id: 'xxx',
  destination: 'Kapadokya',
  // ... other fields
  tourist_persona: personaResult.persona,
  persona_confidence: personaResult.confidence,
});
```

### Persona İstatistikleri

```typescript
import { supabase } from '@/db/supabase';

// Yüksek değerli lead'leri getir
const { data } = await supabase.rpc('get_high_value_leads');

// Persona istatistiklerini getir
const { data: stats } = await supabase.rpc('get_persona_statistics');
```

## Özelleştirme

### Yeni Persona Ekleme

1. `/src/types/lead.ts` dosyasında `TouristPersonaType` enum'ına yeni tip ekleyin
2. `/src/types/persona.ts` dosyasında `TOURIST_PERSONAS` objesine yeni persona tanımı ekleyin
3. `/src/utils/persona-engine.ts` dosyasında `analyzeSignals` fonksiyonuna yeni tespit mantığı ekleyin

### Tespit Mantığını Güncelleme

`/src/utils/persona-engine.ts` dosyasındaki `analyzeSignals` fonksiyonunda:
- Yeni anahtar kelimeler ekleyin
- Güven skorlarını ayarlayın
- Yeni sinyaller tanımlayın

## Performans

- Persona tespiti client-side'da yapılır (hızlı)
- Database'de JSONB olarak saklanır (esnek)
- Index'ler ile hızlı sorgulama (optimize)
- Güven skoru ile kalite kontrolü (güvenilir)

## Güvenlik

- Lead oluşturma için kullanıcı onayı gereklidir
- RLS policies ile veri güvenliği sağlanır
- Persona bilgisi sadece yetkili kullanıcılar tarafından görülebilir

## Sorun Giderme

### Persona tespit edilmiyor
- İlgi alanları ve aktivitelerin dolu olduğundan emin olun
- Gezgin sayısının doğru olduğunu kontrol edin
- Console'da persona detection sonuçlarını inceleyin

### Güven skoru düşük
- Daha fazla ilgi alanı ekleyin
- Aktivite detaylarını zenginleştirin
- Bütçe aralığı bilgisi ekleyin

### Yanlış persona tespit ediliyor
- Tespit mantığını `/src/utils/persona-engine.ts` dosyasında güncelleyin
- Anahtar kelimeleri gözden geçirin
- Güven skorlarını ayarlayın

## Gelecek Geliştirmeler

- Machine learning ile persona detection iyileştirme
- Geçmiş lead verilerinden öğrenme
- Dinamik önerilen hizmetler
- Persona bazlı otomatik email şablonları
- A/B testing ile persona accuracy ölçümü
