MANTIK & PRENSİPLER - Final Plan (KOD YOK!)
Central Database (tuufi_4ekim):
Tenant Database (tenant_muzibu_1528d0):
Subscription sistemi SADECE CENTRAL DB'de çalışıyor!
| Alan | Central DB | Tenant DB | Durum |
|---|---|---|---|
| users.has_used_trial | ❌ YOK | - | Eklenecek (Central) |
| subscription_plans.is_trial | ❌ YOK | ❌ YOK | Eklenecek (Her ikisine) |
| subscription_plans.trial_days | ✓ VAR | ✓ VAR | Mevcut (kullanılacak) |
| subscriptions.has_trial | ✓ VAR | ✓ VAR | Mevcut |
| subscriptions.trial_ends_at | ✓ VAR | ✓ VAR | Mevcut |
| subscriptions.current_period_end | ✓ VAR | ✓ VAR | Mevcut (bitiş kontrolü) |
Kullanıcı bir kere giriş yapar, 5 yıl çıkış yapmaz. Bu sürede:
Her müzik isteğinde gerçek zamanlı kontrol yap, cache kullanma, durum değişince event fırlat!
Ne demek?
Her müzik isteğinde veritabanından FRESH kontrol yap, cache'e bakmadan.
Nasıl çalışır?
Ne demek?
Subscription bittiğinde olay (event) fırlat, listener'lar otomatik çalışsın.
Nasıl çalışır?
Ne demek?
Günde 1 kere tüm subscript'ları tara, biten varsa temizle.
Neden gerekli?
Yeni kullanıcı muzibu.com'ye kayıt olur. Sistem otomatik olarak:
Kullanıcı 7 gün boyunca sınırsız dinler:
7. günün sonunda trial biter:
Kullanıcı trial bittikten sonra ilk kez müzik çalmak ister:
TrialExpired event'i tetiklenir, listener'lar otomatik çalışır:
Kullanıcının iki seçeneği var:
4 faz halinde yapılacak. Her faz bağımsız test edilebilir.
Neden gerekli?
Mantık:
Mantık:
Mantık:
Her müzik isteğinde isPremiumFresh() çağrılır. Cache KULLANILMAZ, direkt database kontrol edilir. Subscription bitmişse status güncellenir, event fırlatılır.
Subscription bittiğinde TrialExpired veya SubscriptionExpired event'i fırlatılır. Listener'lar otomatik çalışır: Email, bildirim, log, analytics.
Günde 1 kere çalışır, biten subscription'ları toplu temizler. Ama ANA GÜVEN request-level check'tir!