Mevcut Device Limit vs Önerilen Concurrent Stream Analizi
Problem: Bir kafe sahibi 1 abonelik alıyor ama aynı anda 3 farklı alanda (salon, WC, depo) müzik çalabiliyor. Bu, iş modeli açısından kayıp yaratıyor.
Mevcut Sistem: Sadece kaç cihazdan "giriş yapıldığını" kontrol ediyor. Aynı bilgisayardaki 3 sekmede 3 farklı müzik çalınabilir.
Önerilen Sistem (Spotify Modeli): Kaç yerde "müzik çaldığını" kontrol ediyor. 1 abonelik = 1 yerde aktif müzik. 2. yerde çalmak isterse → "Limit aşıldı, ek abonelik alın" hatası.
Sonuç: Kafe sahibi 3 alanda müzik istiyorsa → 3 abonelik satın alması gerekecek. Gelir artacak.
user->device_limit
plan->device_limit
auth_device_limit
| Kolon | Tip | Açıklama |
|---|---|---|
| playback_id | UUID | Her tab için unique ID (sessionStorage) |
| user_id | FK | Kullanıcı referansı |
| session_id | VARCHAR | Laravel session referansı |
| current_song_id | FK nullable | Şu an çalan şarkı |
| last_ping | TIMESTAMP | Heartbeat zamanı (kritik!) |
| device_name | VARCHAR | Cihaz bilgisi (opsiyonel) |
| ip_address | VARCHAR(45) | IPv4/IPv6 |
device_limit korunur, yeni concurrent_streams_limit eklenir.
| Özellik | Mevcut (Device Limit) | Önerilen (Concurrent) |
|---|---|---|
| Limit Tipi | Giriş yapılabilen cihaz sayısı | Eşzamanlı çalan stream sayısı |
| Browse/Search | Sınırlı | Sınırsız |
| Çoklu Sekme | Aynı tarayıcıda sınırsız (hepsi çalar!) | Sınırsız (sadece 1 çalar) |
| Farklı Cihaz | Limit kadar (LIFO ile kick) | Sınırsız giriş, sınırlı çalma |
| Eşzamanlı Çalma | Engellenemez | Engellenir |
| Kafe Senaryosu | 3 sekme = 3 müzik, 1 abonelik | 3 müzik = 3 abonelik |
| Kullanıcı Deneyimi | Kötü (çok katı) | İyi (sadece gerekli yerde kısıtlar) |
| Teknik Karmaşıklık | Basit | Orta |
| Backend Load | Düşük (5dk polling) | Orta (10s heartbeat) |
| Spotify Benzeri | Hayır | Evet |
Concurrent Playback sistemi, mevcut Device Limit sisteminin yanına eklenerek çalışabilir. İki sistem birbirini tamamlar: Device Limit giriş sayısını, Concurrent Playback ise aktif müzik sayısını kontrol eder. Bu sayede hem güvenlik hem de iş modeli korunmuş olur.
Uygulama ~2 saat sürer ve düşük risklidir. Mevcut kod yapısı (DeviceService, session.js, player-core.js) paralel sistemi destekleyecek şekilde tasarlanmış. PlaybackSessionService yeni bir katman olarak eklenecek.