Muzibu Subscription & Device Limit - v3 FINAL

Tum Duzeltmeler Tamamlandi - 2025-12-07
Tenant: muzibu.com (1001) Durum: TAMAMLANDI

1. CALISAN SISTEM OZETI

Dinleme Hiyerarsisi

  • Guest (uye olmayan): 30sn preview
  • Ucretsiz uye: 30sn preview
  • Trial/Premium: Sinirsiz dinleme
  • HLS + MP3 fallback (6sn timeout)
  • 3 sarki/gun limiti KALDIRILDI

Device Limit Sistemi

  • 3 seviyeli hiyerarsi:
  • 1. User->device_limit (VIP/Ban)
  • 2. SubscriptionPlan->device_limit
  • 3. Setting('auth_device_limit')
  • 4. Fallback: 1 cihaz
  • Tek giris modal sorunu DUZELTILDI
  • Session polling (30sn)

Sidebar Kalan Sure

  • Tek component ile birlestrildi
  • Trial: "X gun Y saat kaldi"
  • Premium: "X gun Y saat kaldi"
  • Her zaman gosteriyor (tarih varsa)
  • Bitis: Kirmizi + animasyon

HLS Streaming

  • 6 saniye timeout eklendi
  • Timeout'ta otomatik MP3 fallback
  • Tum fatal error'larda fallback
  • triggerMp3Fallback() helper
  • Basarili playback loglaniyor

2. BU SEANSTA YAPILANLAR

Device Limit Modal - Tek Giris Sorunu

checkDeviceLimitBeforeLogin() - Re-login durumunda mevcut session haric tutuluyor

DeviceService.php:197-235

Turkce Karakter Encoding

device-limit-warning-modal + device-selection-modal - ASCII ile yeniden yazildi

Sidebar Kalan Sure - Tek Component

3 ayri template -> 1 unified x-data component

sidebar-left.blade.php:67-132

HLS Timeout + Fallback

6 saniye icinde HLS calmaya baslamazsa otomatik MP3 fallback

  • hlsTimeoutId - 6000ms timeout
  • markHlsSuccess() - basarida timeout temizle
  • triggerMp3Fallback() - helper fonksiyon
  • Tum fatal error'larda fallback (sadece NETWORK_ERROR degil)
player-core.js:1781-1795, 2021-2047

3 Sarki/Gun Limiti Kaldirildi

User.php'den getTodayPlayedCount(), canPlaySong(), getRemainingPlays() silindi

3. DEGISEN DOSYALAR

M Modules/Muzibu/app/Services/DeviceService.php

M Modules/Muzibu/app/Http/Controllers/Api/SongStreamController.php

M app/Models/User.php

M resources/views/themes/muzibu/components/device-selection-modal.blade.php

M resources/views/themes/muzibu/components/device-limit-warning-modal.blade.php

M resources/views/themes/muzibu/components/sidebar-left.blade.php

M public/themes/muzibu/js/player/core/player-core.js

M resources/views/themes/muzibu/layouts/app.blade.php

4. MUZIBU SISTEM PROMPT

## MUZIBU PLATFORM - SUBSCRIPTION & DEVICE LIMIT SISTEMI

### TENANT BILGISI
- Tenant ID: 1001
- Domain: muzibu.com
- Database: tenant_muzibu_1528d0
- Sektor: Muzik Streaming Platformu

### DINLEME HIYERARSISI
1. Guest (uye degil): 30 saniye preview (HLS/MP3)
2. Ucretsiz uye (premium degil): 30 saniye preview
3. Trial/Premium uye: Sinirsiz dinleme
4. 3 sarki/gun limiti KALDIRILDI

### DEVICE LIMIT HIYERARSISI (3 Seviye)
1. User->device_limit (VIP/Test/Ban icin override)
2. SubscriptionPlan->device_limit (Normal akis)
3. Setting('auth_device_limit') (Tenant ayari)
4. Fallback: 1 cihaz

### ONEMLI METODLAR
- DeviceService::getDeviceLimit() - 3 seviyeli hiyerarsi
- DeviceService::checkDeviceLimitBeforeLogin() - Login oncesi kontrol
- DeviceService::handlePostLoginDeviceLimit() - Login sonrasi cleanup
- User::isPremiumOrTrial() - Premium/Trial kontrolu (5dk cache)

### HLS STREAMING
- 6 saniye timeout: HLS calmaya baslamazsa MP3 fallback
- triggerMp3Fallback(): Helper fonksiyon
- Tum fatal error'larda otomatik MP3 fallback
- Guest/Free: HLS preview mode (30sn)
- Premium: Full HLS + signed URL

### CACHE SISTEMI
- Premium status: 5 dakika cache (user_X_is_premium_tenant_1001)
- Subscription degisince: Cache aninda temizlenir
- Login/Logout: Cache flush

### ADMIN AYARLARI
- Settings Values (ID: 23): auth_device_limit
- SubscriptionPlan: device_limit alani
- User: device_limit override (VIP icin)