🎁 Trial Stratejisi - Mantık & Çözüm

❌ Mevcut Durum - Sorunlu Yapı

Sorun 1: Her Cycle'da Ayrı Trial

Şu an sistemde her cycle'ın kendi trial_days field'ı var:

  • 1 Aylık plan → 7 gün trial
  • 3 Aylık plan → 7 gün trial
  • 12 Aylık plan → 7 gün trial

Bu yapı mantıksız çünkü trial kullanıcı bazında değil, plan-cycle bazında!

Sorun 2: Kötüye Kullanım Riski

Kullanıcı şunu yapabilir:

  • 1. Aylık plana kaydol → 7 gün trial kullan
  • 2. Trial bitince iptal et
  • 3. Yıllık plana kaydol → Tekrar 7 gün trial al!
  • 4. Sürekli trial kullan, hiç ödeme yapma

💡 Trial kullanıcı başına 1 kere olmalı, plan/cycle bazında değil!

Sorun 3: Karmaşık Yönetim

Her cycle'da farklı trial süresi ayarlanabilir:

  • 1 Aylık → 7 gün trial
  • 3 Aylık → 14 gün trial
  • 12 Aylık → 30 gün trial

Bu çok karmaşık! Trial statik ve evrensel olmalı (tüm planlar için aynı).

🤔 İki Yaklaşım

❌ Yaklaşım 1: Premium'a Trial Ekle

✅ Artıları:
  • Tek plan yönetimi
  • Basit yapı
❌ Eksileri:
  • Trial bitince kullanıcı ne olacak?
  • Premium üyeden normal üyeye geçiş karmaşık
  • Trial'ı premium'un bir parçası yapmak mantıksız
  • Cycle bazında trial → Kötüye kullanım riski

✅ Yaklaşım 2: Ayrı "Trial" Planı

✅ Artıları:
  • Trial tamamen bağımsız
  • Kullanıcı bazında 1 kere kontrol kolay
  • Trial bitince otomatik normal üye olur
  • İzlenebilir ve yönetilebilir
  • Endüstri standardı (Spotify, Netflix gibi)
⚠️ Dikkat:
  • Yeni plan oluşturmak gerek

🎯 Önerilen Yaklaşım

✅ Yaklaşım 2: Ayrı "Trial" Planı Oluştur

Trial sistemi tamamen bağımsız bir plan olmalı!

📋 Nasıl Çalışacak?

1. Yeni Plan: "Trial" (7 Gün Ücretsiz)

  • Plan adı: Trial
  • Fiyat: ₺0.00
  • Süre: 7 gün (statik, tek cycle)
  • Özellikler: Premium ile aynı (sınırsız dinleme)
  • Cycle sayısı: Sadece 1 (7 günlük)

2. Kullanıcı Bazında Kontrol

  • User tablosuna: has_used_trial (boolean) ekle
  • Trial başladığında: has_used_trial = true
  • Trial bitince bile bu alan asla false olmaz
  • Kullanıcı subscription'ı silse bile trial alamaz

3. Kayıt Sırasında Otomatik Trial

  • Kullanıcı kayıt olur olmaz → Trial subscription oluştur
  • Status: active
  • Plan: Trial planı
  • Bitiş: 7 gün sonra
  • has_used_trial = true

4. Trial Bitiminde

  • Günlük cron job çalışır
  • "Bugün trial biten var mı?" kontrol eder
  • Varsa trial subscription'ı kapatır (status = expired)
  • Kullanıcı artık normal üye (30 saniye limit)

5. Premium'a Geçiş

  • Trial bitince kullanıcı "Premium Satın Al" görür
  • İsterse 1 Aylık, 3 Aylık, 12 Aylık seçer
  • Ödeme yapar → Premium subscription başlar
  • Trial subscription sona erer, premium başlar
✅ Neden Bu Yaklaşım Daha İyi?
  • Tek kullanım garantisi: has_used_trial field ile kesin kontrol
  • Basit mantık: Trial ayrı, premium ayrı
  • Kötüye kullanım önlenir: Kullanıcı trial'ı 1 kere kullanır
  • Yönetilebilir: Trial subscription'ları ayrı raporlanabilir
  • Endüstri standardı: Spotify, Netflix, YouTube Premium hepsi böyle
  • Temiz geçiş: Trial → Premium geçişi net

🚫 Neden "Her Cycle'da Trial" Kötü?

Senaryo 1: Kötüye Kullanım

Ahmet:

  • 1. Ay: 1 Aylık plan trial → 7 gün ücretsiz
  • 2. Ay: İptal edip 3 Aylık plan trial → 7 gün ücretsiz
  • 3. Ay: İptal edip 12 Aylık plan trial → 7 gün ücretsiz
  • Sonuç: 21 gün ücretsiz kullandı, hiç para ödemedi!
Senaryo 2: Karmaşık Yönetim

Admin panelde:

  • 1 Aylık plan trial: 7 gün
  • 3 Aylık plan trial: 14 gün (indirim için)
  • 12 Aylık plan trial: 30 gün (daha fazla indirim)

Sonuç: Her plan için ayrı trial süresi yönetmek çok karmaşık ve hata yapma riski yüksek!

✅ Çözüm: Statik Trial

Tüm sistem için tek bir trial süresi:

  • Trial planı: 7 gün
  • Herkes için aynı
  • Kullanıcı başına 1 kere
  • Hangi premium plana geçeceğine trial sonrası karar verir

📊 Karşılaştırma Tablosu

Özellik Cycle Bazında Trial Ayrı Trial Planı
Kullanıcı Başına Limit ❌ Yok ✅ Var
Kötüye Kullanım ❌ Mümkün ✅ Önlenir
Yönetim Kolaylığı ❌ Karmaşık ✅ Basit
Trial Süresi ❌ Her cycle farklı olabilir ✅ Statik (7 gün)
Endüstri Standardı ❌ Hayır ✅ Evet (Spotify, Netflix)
Raporlama ❌ Karışık ✅ Net (trial vs premium)

🎯 Sonuç & Öneri

✅ KARAR: Ayrı "Trial" Planı Oluştur

Cycle bazında trial sistemi kaldırılmalı ve yerine bağımsız trial planı eklenmelidir.

✅ Yapılacaklar (Öncelik Sırası)
  1. YÜKSEK: User tablosuna has_used_trial field ekle
  2. YÜKSEK: Yeni "Trial" planı oluştur (7 gün, ₺0.00)
  3. YÜKSEK: Kayıt sırasında otomatik trial subscription oluşturma
  4. ORTA: Günlük cron job - trial bitenleri kapat
  5. ORTA: Trial bitiminden önce hatırlatma sistemi
  6. DÜŞÜK: Cycle bazında trial field'larını kaldır (backward compatibility için şimdilik bırakılabilir)