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

142 lines
5.5 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.

# Provider Dashboard Lead Görünürlük Sorunu - Hata Ayıklama Rehberi
## Sorun
`temrentravel` kullanıcısı provider olarak giriş yaptığında dashboard'da lead'ler görünmüyor.
## Yapılan İncelemeler
### 1. Veritabanı Kontrolü ✅
- **Kullanıcı Rolü**: `temrentravel` kullanıcısının `profiles` tablosunda `role='provider'` olarak doğru şekilde ayarlanmış
- **Provider Servisi**: `provider_services` tablosunda kayıt mevcut
- Business Name: "Temren Travel"
- Destinations: ["Kapadokya, Türkiye", "İstanbul", "Antalya", "İzmir", "Bodrum"]
- Activity Categories: ["müze", "doğa", "macera", "kültür", "gastronomi", "tarih", "aktivite", "doğal alan", "doğal oluşum", "tarihi mekan", "tarihi yerleşim", "kasaba", "köy"]
- Credit Balance: 60
### 2. Lead Verileri ✅
Sistemde 4 adet lead mevcut:
- **3 lead görünür olmalı** (destination ve interest eşleşmesi var)
- **1 lead görünmemeli** (destination eşleşmesi yok)
### 3. RLS Politikaları
`leads` tablosundaki RLS politikaları doğru yapılandırılmış:
- "Providers can view available leads" - `role='provider'` ve `consent_given=true` ve `status='new'` kontrolü yapıyor
- "Providers can view purchased leads" - Satın alınan lead'leri gösteriyor
## Yapılan Değişiklikler
### 1. API Loglama Eklendi
`src/db/api.ts` dosyasındaki `providerLeadsApi.getAvailable()` fonksiyonuna detaylı console.log'lar eklendi:
- Provider service yükleme durumu
- Destination filtreleme
- Query sonuçları
- Category filtreleme detayları
- Final lead sayısı
### 2. Dashboard Loglama Eklendi
`src/pages/ProviderDashboard.tsx` dosyasına console.log'lar eklendi:
- Provider data yükleme süreci
- Lead yükleme durumu
- Hata mesajları
### 3. Admin Users Sayfası İyileştirildi
`src/pages/admin/Users.tsx` dosyasında rol gösterimi iyileştirildi:
- Select dropdown'a ek olarak Badge ile rol gösterimi eklendi
- Rol değerlerinin daha net görünmesi sağlandı
### 4. Debug Fonksiyonu Eklendi
Veritabanına `debug_provider_leads()` fonksiyonu eklendi. Bu fonksiyon bir provider için hangi lead'lerin görünür olması gerektiğini gösterir.
## Hata Ayıklama Adımları
### Adım 1: Browser Console Kontrolü
1. `temrentravel` kullanıcısı ile provider olarak giriş yapın
2. Browser'da Developer Tools'u açın (F12)
3. Console sekmesine gidin
4. Provider Dashboard'a gidin
5. Console'da şu log'ları arayın:
```
[ProviderDashboard] Loading data for provider: ...
[ProviderDashboard] Provider service loaded: ...
[providerLeadsApi] getAvailable called for provider: ...
[providerLeadsApi] Provider service: ...
[providerLeadsApi] Query result - leads count: ...
[providerLeadsApi] After category filtering, leads count: ...
[providerLeadsApi] Returning X leads
```
### Adım 2: Beklenen Sonuçlar
Console'da şunları görmelisiniz:
- Provider service başarıyla yüklenmeli
- Query'den en az 3 lead dönmeli (Kapadokya destinasyonu için)
- Category filtreleme sonrası 3 lead kalmalı
- Final olarak 3 lead dashboard'da görünmeli
### Adım 3: Olası Sorunlar ve Çözümleri
#### Sorun A: "Provider service: null" görünüyorsa
**Neden**: Provider servisi yüklenememiş
**Çözüm**:
```sql
-- Supabase SQL Editor'de çalıştırın
SELECT * FROM provider_services WHERE provider_id = '43595be4-acce-4d42-bfbf-66cbf204457c';
```
#### Sorun B: "Query result - leads count: 0" görünüyorsa
**Neden**: RLS politikası lead'leri engelliyor veya query yanlış
**Çözüm**:
```sql
-- Supabase SQL Editor'de debug fonksiyonunu çalıştırın
SELECT * FROM debug_provider_leads('43595be4-acce-4d42-bfbf-66cbf204457c');
```
Bu fonksiyon hangi lead'lerin görünür olması gerektiğini gösterecektir.
#### Sorun C: "After category filtering, leads count: 0" görünüyorsa
**Neden**: Interest/category eşleşmesi başarısız
**Çözüm**: Console'da interest matching log'larını inceleyin. Eğer eşleşme olması gerekiyorsa ama olmuyorsa, provider'ın activity_categories değerlerini kontrol edin.
#### Sorun D: Authentication hatası
**Neden**: Provider session'ı doğru geçmiyor
**Çözüm**:
1. Çıkış yapın
2. Tekrar giriş yapın
3. Browser cache'i temizleyin
### Adım 4: Manuel Test
Supabase SQL Editor'de şu sorguyu çalıştırarak provider'ın görebileceği lead'leri kontrol edin:
```sql
-- Debug fonksiyonu ile detaylı analiz
SELECT
lead_id,
destination,
interests,
destination_matches,
has_interest_match,
matching_interests
FROM debug_provider_leads('43595be4-acce-4d42-bfbf-66cbf204457c')
WHERE destination_matches = true AND has_interest_match = true;
```
Bu sorgu 3 lead döndürmelidir.
## Sonraki Adımlar
1. **Console log'larını kontrol edin** - Yukarıdaki adımları takip ederek console'da ne olduğunu görün
2. **Debug fonksiyonunu çalıştırın** - SQL Editor'de debug_provider_leads() fonksiyonunu çalıştırın
3. **Sonuçları paylaşın** - Console log'larını ve debug fonksiyonu sonuçlarını paylaşın
## Ek Notlar
- Admin Users sayfasında rol boş görünse bile, veritabanında rol doğru şekilde ayarlanmış
- RLS politikaları doğru çalışıyor
- Lead verileri mevcut ve erişilebilir durumda
- Sorun muhtemelen frontend'de API çağrısı veya state yönetiminde
## İletişim
Eğer yukarıdaki adımları takip ettikten sonra hala sorun devam ediyorsa, lütfen şunları paylaşın:
1. Browser console'daki tüm log'lar (screenshot veya text)
2. `debug_provider_leads()` fonksiyonunun çıktısı
3. Network tab'inde Supabase API çağrılarının durumu (başarılı mı, hata mı?)