🎯 Context-Based Infinite Queue

Kullanıcı Nereden Gelirse Gelsin, Müzik Akışı Devam Eder

📅 5 Aralık 2025 🎯 Tenant 1001: muzibu.com 💾 Zero Migration - Storage Only

✅ Sıfır Kolon | ✅ Sıfır Migration | ✅ Frontend-Only Solution

💡 Ana Konsept: Context Takibi

Kullanıcı Nereden Geldi?

Kullanıcı her şarkı çalıştırdığında, hangi sayfadan geldiğini localStorage'a kaydediyoruz. Queue azaldığında, aynı context'ten yeni şarkılar getiriyoruz.

📱 LocalStorage Kayıt

playContext = {
  type: "genre",
  id: 9,
  name: "Jazz"
}

🔄 Queue Refill

Context'e bak → type: "genre"
Genre 9'dan rastgele 10 şarkı çek
Queue'ya ekle → Müzik sürüyor!

🎭 4 Context Tipi

1

🏢 Sektör → Albüm Seçimi

Senaryo:

Kullanıcı Sectors sayfasından "Restoran & Kafe" sektörünü seçer → Sektörün albümlerinden birini tıklar → Albümden şarkı çalar

LocalStorage Kaydı:

playContext = {
  type: "sector",
  id: 3,
  name: "Restoran & Kafe"
}

Sonuç: Kullanıcı "Restoran & Kafe" sektöründen başladıysa, sürekli restoran müziği çalar (Jazz, Bossa, Lounge vb.)

2

🎭 Tür (Genre) → Şarkı Seçimi

Senaryo:

Kullanıcı Genres sayfasından "Jazz" türünü seçer → Jazz şarkılarından birini tıklar → Şarkı çalar

Sonuç: Kullanıcı "Jazz" seçtiyse, sürekli Jazz şarkıları çalar. Rock/Metal/Pop ASLA karışmaz!

3

💿 Albüm → Genre Geçiş

Senaryo:

Kullanıcı bir albümden şarkı seçer → Önce albümü bitir, sonra genre'ye geç

Sonuç: Albüm biter, sonra aynı genre'den müzik devam eder.

4

📻 Radio → Playlist Mix

Senaryo:

Kullanıcı Radios sayfasından "Chill Radio" seçer → Radio'ya atanmış playlist'lerden müzik çalar

Sonuç: Radio'ya atanmış tüm playlist'lerden karışık müzik çalar.

✅ Avantajlar

🚀 Zero Database Changes

Hiç kolon ekleme, hiç migration. Mevcut tablolar aynen kullanılıyor.

⚡ Frontend-Only

Context takibi tamamen frontend'de. Backend sadece context'e göre query atar.

🎯 User Context Aware

Kullanıcı nereden gelirse gelsin, o context'ten müzik devam eder.

♾️ Infinite Music

Queue sürekli dolu kalır, müzik hiç durmaz.

📋 Implementation Planı

Phase 1: Frontend Helpers (30 dk)

setPlayContext() ve getPlayContext() fonksiyonları

Phase 2: Blade Şablonları (1 saat)

Genres, Sectors, Albums, Radios sayfalarına setPlayContext ekle

Phase 3: Backend API (2 saat)

POST /api/muzibu/queue/refill endpoint - 4 context type logic

Phase 4: Frontend Queue (1.5 saat)

refillQueue() async function + setInterval checker

Phase 5: Test (1 saat)

4 context type testi

⏱️ Toplam Süre: ~6 saat

Zero migration, zero kolon, sadece frontend + 1 API endpoint!

🎯 Özet

1. Kullanıcı nereden gelirse gelsin, context kaydediyoruz

2. Queue azalınca, aynı context'ten yeni şarkılar getiriyoruz

3. 4 context type: Genre, Sector, Album, Radio

4. Sıfır kolon, sıfır migration - sadece frontend + 1 API!

✅ En basit, en mantıklı çözüm!