# Context-Aware Chat AI Sistemi

## 📋 Genel Bakış

Chat AI sistemi artık kullanıcının bulunduğu sayfaya göre akıllı yanıtlar verebiliyor. Kullanıcı giriş yapmamışsa veya panel dışında bir sayfadaysa, AI uygun yönlendirmeler yapıyor.

## 🎯 Özellikler

### 1. **Sayfa Context'i Algılama**
- Login sayfası
- Register sayfası
- Panel sayfası
- Diğer sayfalar (home, blog, vb.)

### 2. **Kullanıcı Durumu Algılama**
- Giriş yapmış
- Giriş yapmamış

### 3. **Context-Aware Karşılama Mesajları**
Chat AI açıldığında gösterilen ilk mesaj da sayfa ve kullanıcı durumuna göre değişir.

### 4. **Input Disabled + Yönlendirme Butonları** ⭐ YENİ
Panel dışındaki sayfalarda:
- Input alanı **disabled** (kullanıcı soru soramaz)
- Placeholder context'e göre değişir
- Yönlendirici action butonları gösterilir:
  - Login sayfası: "Giriş formunu kullanın" (bilgilendirici)
  - Register sayfası: "Kayıt formunu kullanın" (bilgilendirici)
  - Diğer sayfalar: "Giriş Yap" ve "Kayıt Ol" linkleri
  - Giriş yapmış (panel dışı): "Panele Git" linki

**Avantajları:**
- ✅ Daha net kullanıcı deneyimi
- ✅ Gereksiz API çağrısı yok (token tasarrufu)
- ✅ Kullanıcı doğrudan action alabilir
- ✅ Zaman kaybı yok

### 5. **Akıllı Yanıtlar**

#### **Login Sayfasında (Giriş Yapmamış)**
Chat AI açılır açılmaz:
```
"Merhaba, ben Astro Bilge ✨

Kişisel astroloji haritanızı oluşturmak ve AI analizlerinden faydalanmak için 
önce giriş yapmanız gerekiyor.

Giriş yaptıktan sonra tüm özelliklere erişebileceksiniz!"
```

Kullanıcı panel özellikleri hakkında soru sorarsa da benzer yönlendirme yapar.

#### **Register Sayfasında (Giriş Yapmamış)**
Chat AI açılır açılmaz:
```
"Merhaba, ben Astro Bilge ✨

Astroloji haritanızı oluşturmak ve detaylı analizler almak için kayıt olmanız gerekiyor.

Üye olduktan sonra tüm özelliklere tam erişim sağlayacaksınız!"
```

Kullanıcı panel özellikleri hakkında soru sorarsa da benzer yönlendirme yapar.

#### **Diğer Sayfalarda (Giriş Yapmamış)**
Chat AI açılır açılmaz:
```
"Merhaba, ben Astro Bilge ✨

Kişisel astroloji haritanızı oluşturmak ve AI analizlerinden faydalanmak isterseniz 
giriş yapabilir veya kayıt olabilirsiniz.

Ne konuda yardımcı olabilirim?"
```

Kullanıcı panel özellikleri hakkında soru sorarsa daha spesifik yönlendirme yapar.

#### **Panel Dışındaki Sayfalarda (Giriş Yapmış)**
Chat AI açılır açılmaz:
```
"Merhaba, ben Astro Bilge ✨

Astroloji haritanızı oluşturmak ve analiz etmek için panele gitmeniz gerekiyor.

Panelde doğum bilgilerinizi girerek kişisel haritanızı görebilirsiniz!"
```

Kullanıcı harita analizi hakkında soru sorarsa da benzer yönlendirme yapar.

#### **Panel Sayfasında (Giriş Yapmış)**
Normal AI yanıtları - Context prompt eklenmez

## 🎨 UI Görünümü

### Login Sayfası
```
┌──────────────────────────────────┐
│ 🤖 AI Asistan           natal [X]│
├──────────────────────────────────┤
│  🤖 Merhaba, ben Astro Bilge ✨  │
│                                  │
│  Kişisel astroloji haritanızı   │
│  oluşturmak ve AI analizlerinden │
│  faydalanmak için önce giriş     │
│  yapmanız gerekiyor.             │
│                                  │
│  Giriş yaptıktan sonra tüm       │
│  özelliklere erişebileceksiniz!  │
│                                  │
│  [ℹ️ Giriş formunu kullanın]     │
│                                  │
├──────────────────────────────────┤
│ Önce giriş yapmanız gerekiyor... │
│ [────────────────────────] 🚫    │
└──────────────────────────────────┘
```

### Diğer Sayfalar (Home, Blog)
```
┌──────────────────────────────────┐
│ 🤖 AI Asistan           natal [X]│
├──────────────────────────────────┤
│  🤖 Merhaba, ben Astro Bilge ✨  │
│                                  │
│  Kişisel astroloji haritanızı   │
│  oluşturmak isterseniz giriş     │
│  yapabilir veya kayıt olabilir.  │
│                                  │
│  [🔐 Giriş Yap] [📝 Kayıt Ol]   │
│                                  │
├──────────────────────────────────┤
│ Giriş yapın veya kayıt olun...   │
│ [────────────────────────] 🚫    │
└──────────────────────────────────┘
```

### Panel Sayfası
```
┌──────────────────────────────────┐
│ 🤖 AI Asistan           natal [X]│
├──────────────────────────────────┤
│  🤖 Merhaba, ben Astro Bilge ✨  │
│                                  │
│  Haritanızı inceledim.          │
│  Bu harita hakkında ne konuşmak  │
│  istersiniz?                     │
│                                  │
├──────────────────────────────────┤
│ Mesajınızı yazın...              │
│ [────────────────────────] [➤]   │
└──────────────────────────────────┘
```

## 🔧 Teknik Detaylar

### Dosya Yapısı

```
app/
├── Services/
│   └── AiAsistan/
│       └── PageContextService.php          # Context yönetimi
└── Http/
    └── Controllers/
        └── Frontend/
            └── AIAsistanController.php     # Controller güncellendi

resources/views/
├── frontend/
│   ├── main_master.blade.php              # Meta tag eklendi
│   ├── index.blade.php                    # Context: home
│   ├── auth/
│   │   ├── login.blade.php                # Context: login
│   │   └── register.blade.php             # Context: register
│   └── panel/
│       └── panel.blade.php                # Context: panel

public/js/
└── ai-asistan/
    └── index.js                            # Context gönderimi eklendi
```

### Veri Akışı

1. **Frontend (JavaScript)**
   ```javascript
   // Meta tag'lerden context bilgisini al
   const pageContext = {
       page: 'login',              // login, register, panel, home, other
       isAuthenticated: false,      // true/false
       url: '/login'               // Current URL
   };
   
   // AI'ya mesaj gönderirken context'i ekle
   const requestPayload = {
       message: "Harita nasıl oluşturulur?",
       page_context: pageContext,
       // ... diğer parametreler
   };
   ```

2. **Backend (Controller)**
   ```php
   // Context'i al
   $pageContext = $request->input('page_context', [
       'page' => 'other',
       'isAuthenticated' => auth()->check(),
       'url' => $request->path()
   ]);
   
   // Service'den uygun prompt'u al
   $contextPrompt = $this->pageContextService->getSystemPromptForContext($pageContext);
   ```

3. **AI Service**
   ```php
   // Context prompt'u system prompt'un başına ekle
   $systemPromptPrefix = $contextPrompt . "\n\n" . str_repeat('=', 80) . "\n\n";
   return $systemPromptPrefix . $systemContent;
   ```

## 📝 Yeni Sayfa Ekleme

Yeni bir sayfa için context eklemek isterseniz:

### 1. Blade View'da
```blade
@extends('frontend.main_master')
@section('page-context', 'new-page')  <!-- Context ekle -->
@section('content')
    <!-- İçerik -->
@endsection
```

### 2. PageContextService'de (Gerekirse)
```php
// Özel bir yanıt gerekiyorsa getSystemPromptForContext metoduna ekle
return match ($page) {
    'new-page' => $basePrompt . "Özel mesaj...",
    // ...
};
```

## 🧪 Test Senaryoları

### Test 1: Login Sayfası (Giriş Yapmamış)
1. `/login` sayfasına git
2. Chat AI'yı aç
3. **Beklenen (Karşılama):** "Kişisel astroloji haritanızı oluşturmak ve AI analizlerinden faydalanmak için önce giriş yapmanız gerekiyor..."
4. "Doğum haritamı nasıl oluşturabilirim?" diye sor
5. **Beklenen (Yanıt):** "Önce giriş yapmanız gerekiyor..." benzeri yönlendirme

### Test 2: Register Sayfası (Giriş Yapmamış)
1. `/register` sayfasına git
2. Chat AI'yı aç
3. **Beklenen (Karşılama):** "Astroloji haritanızı oluşturmak ve detaylı analizler almak için kayıt olmanız gerekiyor..."
4. "Panel özelliklerini kullanabilir miyim?" diye sor
5. **Beklenen (Yanıt):** "Önce kayıt olmanız gerekiyor..." benzeri yönlendirme

### Test 3: Home Sayfası (Giriş Yapmamış)
1. Ana sayfaya git
2. Chat AI'yı aç
3. **Beklenen (Karşılama):** "Kişisel astroloji haritanızı oluşturmak isterseniz giriş yapabilir veya kayıt olabilirsiniz..."
4. "AI analizi nasıl alırım?" diye sor
5. **Beklenen (Yanıt):** "Giriş yapabilir veya kayıt olabilirsiniz..." benzeri yönlendirme

### Test 4: Blog Sayfası (Giriş Yapmış)
1. Giriş yap
2. Blog sayfasına git (veya panel dışı herhangi bir sayfa)
3. Chat AI'yı aç
4. **Beklenen (Karşılama):** "Astroloji haritanızı oluşturmak ve analiz etmek için panele gitmeniz gerekiyor..."
5. "Harita analizi yapabilir misin?" diye sor
6. **Beklenen (Yanıt):** "Panel sayfasında bulunuyor, panele gitmeniz yeterli..." benzeri yönlendirme

### Test 5: Panel Sayfası (Giriş Yapmış)
1. Giriş yap
2. Panel sayfasına git
3. Chat AI'yı aç
4. **Beklenen (Karşılama):** "Merhaba, ben Astro Bilge ✨ Haritanızı inceledim. Bu harita hakkında ne konuşmak istersiniz?"
5. "Harita analizi yap" diye sor
6. **Beklenen (Yanıt):** Normal AI analizi (context prompt yok)

## 🔍 Debug

Context bilgisini loglamak için:

```php
Log::info('AI Asistan - Page Context', [
    'context' => $this->pageContextService->formatContextForLog($pageContext)
]);
```

Log çıktısı:
```
Page: login | Auth: No | URL: /login
```

## 🎨 Kullanıcı Deneyimi İpuçları

### İyi Uygulamalar

✅ **Kısa ve teşvik edici ol**
- "Önce giriş yapmalısınız" yerine
- "Hemen üstteki formdan giriş yapabilirsiniz! 🌟"

✅ **Yönlendirici ol**
- Sadece "Bu özellik kullanılamaz" yerine
- "Panel sayfasına giderek bu özelliği kullanabilirsiniz"

✅ **Pozitif dil kullan**
- "Yapamazsınız" yerine
- "Giriş yaptıktan sonra tüm özelliklere erişebileceksiniz!"

✅ **Emoji kullan (ama abartma)**
- Her cümlenin sonuna değil
- Vurgu yapmak istediğin yerlerde: 🌟 🎯 ✨ 🌙

### Kötü Uygulamalar

❌ **Çok uzun açıklamalar**
❌ **Teknik jargon kullanma**
❌ **Negatif dil: "Yapamazsınız", "Yetkiniz yok"**
❌ **Emoji bombardımanı: 🌟🎯✨🌙🔮💫**

## 📊 İstatistikler ve İzleme

```php
// PageContextService'de eklenen metodlar:
$pageContextService->isValidContext($pageContext);    // Context geçerli mi?
$pageContextService->isUserInPanel($pageContext);     // Kullanıcı panelde mi?
$pageContextService->formatContextForLog($pageContext); // Log formatı
```

## 🚀 Gelecek Geliştirmeler

1. **A/B Testing**: Farklı yanıt tarzlarını test et
2. **Metrikler**: Hangi sayfadan kaç soru geldiğini izle
3. **Özelleştirilmiş Yanıtlar**: Daha fazla sayfa için özel yanıtlar
4. **Çoklu Dil Desteği**: Context prompt'ları çevir

## 📞 Destek

Sorularınız için:
- Kod: `app/Services/AiAsistan/PageContextService.php`
- Test: Yukarıdaki test senaryolarını kullan
- Log: `storage/logs/laravel.log` dosyasını kontrol et

## 🔑 UI String Anahtarları

Yeni eklenen context-aware karşılama mesajı anahtarları:

```php
// app/Services/AiAsistan/AiAsistanUiStrings.php

'welcome_login_unauthenticated'         // Login sayfası (giriş yapmamış)
'welcome_register_unauthenticated'      // Register sayfası (giriş yapmamış)
'welcome_other_unauthenticated'         // Diğer sayfalar (giriş yapmamış)
'welcome_authenticated_non_panel'       // Panel dışı (giriş yapmış)
'welcome_natal'                         // Panel - Natal harita
'welcome_sinastri'                      // Panel - Sinastri harita
'welcome_fallback'                      // Fallback mesaj
```

## 📦 Güncellenen Dosyalar

### Frontend
- `public/js/ai-asistan/index.js`
  - Context-aware welcome message logic
  - `updateInputStateBasedOnContext()` - Input disable/enable
  - `addContextActionButtons()` - Yönlendirme butonları

### Backend
- `app/Services/AiAsistan/AiAsistanUiStrings.php`
  - Yeni UI string'leri
  - Action button labels
  - Placeholder texts
- `app/Services/AiAsistan/AiAsistanService.php` - Context-aware getWelcomeMessage()
- `app/Services/AiAsistan/PageContextService.php` - getWelcomeMessageKey() metodu
- `app/Http/Controllers/Frontend/AIAsistanController.php` - Context endpoint'i

## 🎁 Bonus: Token Tasarrufu

Input disabled yapıldığından:
- ❌ Gereksiz kullanıcı soruları yok
- ❌ Gereksiz AI yanıtları yok
- ✅ API çağrısı yapılmaz
- ✅ Token/maliyet tasarrufu

**Örnek hesaplama:**
- Ortalama 100 yönlendirme sorusu/gün
- Her soru ~200 token (request + response)
- Toplam: 20,000 token/gün tasarrufu
- Aylık: ~600,000 token tasarrufu 💰

---

**Son Güncelleme:** 2026-02-12
**Versiyon:** 1.2.0 (Input disable + action buttons eklendi)
