5.5 KiB
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ü:
temrentravelkullanıcısınınprofilestablosundarole='provider'olarak doğru şekilde ayarlanmış - Provider Servisi:
provider_servicestablosunda 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'veconsent_given=truevestatus='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ü
temrentravelkullanıcısı ile provider olarak giriş yapın- Browser'da Developer Tools'u açın (F12)
- Console sekmesine gidin
- Provider Dashboard'a gidin
- 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:
-- 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:
-- 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:
- Çıkış yapın
- Tekrar giriş yapın
- 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:
-- 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
- Console log'larını kontrol edin - Yukarıdaki adımları takip ederek console'da ne olduğunu görün
- Debug fonksiyonunu çalıştırın - SQL Editor'de debug_provider_leads() fonksiyonunu çalıştırın
- 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:
- Browser console'daki tüm log'lar (screenshot veya text)
debug_provider_leads()fonksiyonunun çıktısı- Network tab'inde Supabase API çağrılarının durumu (başarılı mı, hata mı?)