142 lines
5.5 KiB
Markdown
142 lines
5.5 KiB
Markdown
# 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ı?)
|