Muzibu AI

Akıllı Müzik Asistanı

Tenant 1001 için özel tasarlanmış, şarkı önerisi, playlist yönetimi, subscription kontrolü ve tıkla-çal action button sistemi ile donatılmış yapay zeka asistanı

Tarih
16.12.2025
Tenant
1001 (Muzibu)
Versiyon
v2.0 Kapsamlı
Durum
Planlandı

Sistem Mimarisi

Shop AI'dan Miras Alınan Yapı

Backend Katmanları

  • Controller: MuzibuAIController (tenant 1001 check)
  • Context Builder: MuzibuContextBuilder (Song, Album, Playlist context)
  • AI Service: Aynı multi-provider fallback chain
  • Conversation: AIConversation + AIMessage (feature_slug: 'muzibu-assistant')

Frontend Katmanları

  • Alpine Store: Alpine.store('muzibuAI') - müzik odaklı
  • Widget: Player entegreli floating widget
  • Action Buttons: Tıkla-çal, favoriye ekle, paylaş
  • Markdown: marked.js + custom Tailwind renderer

Multi-Provider Fallback Chain

GPT-5-mini
Primary
GPT-4o-mini
Fallback 1
Claude Haiku
Fallback 2
DeepSeek
Fallback 3

Temel Özellikler

1 Akıllı Müzik Önerileri

AI, Muzibu veritabanındaki şarkı, albüm, artist, playlist, tür ve sektör verilerini kullanarak kullanıcıya özel öneriler sunar. Context-aware: hangi sayfada olduğuna göre farklı öneriler.

Şarkı Önerileri
  • • Benzer şarkılar (aynı tür)
  • • Aynı artist'in diğer şarkıları
  • • Aynı albümden şarkılar
  • • Popüler şarkılar
Albüm & Artist
  • • Artist'in tüm albümleri
  • • Benzer artist'ler
  • • Yeni çıkan albümler
  • • Öne çıkan albümler
Playlist & Radyo
  • • Tematik playlist'ler
  • • Sektöre özel playlist'ler
  • • Radyo istasyonları
  • • Kullanıcı playlist önerileri

Context Türleri (Sayfa Bazlı)

song_id
Şarkı detay sayfası
album_id
Albüm sayfası
playlist_id
Playlist sayfası
genre_id / sector_id
Tür/Sektör sayfası

2 Action Button System (Tıkla-Çal)

AI sadece metin yanıt vermez, kullanıcının tek tıkla aksiyon alabileceği butonlar da döndürür. Şarkı çalma, favoriye ekleme, playlist'e ekleme, paylaşma ve daha fazlası.

AI Yanıtı:
"Size Tarkan - Kuzu Kuzu şarkısını öneririm. 2000'lerin hit'i!"
AI Yanıtı:
"Chill Cafe radyosu tam size göre! Sakin, akustik müzikler."

Desteklenen Action Türleri

play_song: Şarkıyı çal
play_album: Albümü çal
play_playlist: Playlist başlat
play_radio: Radyoyu aç
add_favorite: Favoriye ekle
add_to_playlist: Playlist'e ekle
share: Sosyal paylaşım
navigate: Sayfaya git

3 Subscription & Premium Yönetimi

AI, kullanıcının üyelik durumunu bilir ve buna göre yanıt verir. Mevcut Subscription modülü ile tam entegre çalışır. Dinamik cycles, trial sistemi, device limit bilgisi dahil.

Üye Olmayan (Guest)
auth()->guest() = true

"Merhaba! Muzibu'da sınırsız müzik dinlemek için üye olabilirsiniz. 7 gün ücretsiz deneme fırsatını kaçırmayın!"

Trial Kullanıcı
isTrialActive() = true | Kalan: 3 gün

"Deneme süreniz 3 gün sonra bitiyor! Müzik keyfiniz kesintisiz devam etsin, şimdi Premium'a geçin."

Süresi Dolmuş Üye
isExpired() = true | has_used_trial = true

"Üyeliğiniz sona erdi. Reklamsız, yüksek kaliteli müzik için Premium'a geçin! ₺99/ay veya ₺999/yıl (%16 tasarruf)"

Premium Kullanıcı
isPremium() = true | Kalan: 45 gün | Cihaz: 2/3

"Premium üyeliğiniz 45 gün daha geçerli. Şu anda 2/3 cihaz kullanıyorsunuz. Keyifli dinlemeler!"

Kullanılacak Subscription Verileri

User Model Metodları:
  • isPremium() - Premium mi?
  • isTrialActive() - Trial döneminde mi?
  • hasActiveSubscription() - Aktif abonelik var mı?
  • has_used_trial - Trial kullanıldı mı?
Subscription Model:
  • daysRemaining() - Kalan gün
  • getCycleLabel() - "Aylık", "Yıllık"
  • status - active/trial/expired
  • current_period_end - Bitiş tarihi

4 Akıllı Sohbet Yetenekleri

AI'ın Yanıt Verebileceği Sorular

  • "Bana rock şarkıları öner"
  • "Romantik playlist var mı?"
  • "Tarkan'ın albümleri hangileri?"
  • "Cafe için uygun radyo?"
  • "Premium ne avantajlar sağlıyor?"
  • "Üyeliğim ne zaman bitiyor?"
  • "Kaç cihaz kullanabiliyorum?"
  • "Hüzünlü şarkılar dinlemek istiyorum"

Mood & Aktivite Bazlı Öneriler

😊 Mutlu
Pop, Dance, Party playlist'leri
😢 Hüzünlü
Slow, Akustik, Duygusal şarkılar
💪 Spor/Enerji
Workout, Hip-Hop, EDM
🧘 Rahatlatıcı
Chill, Ambient, Lo-Fi

İmplementasyon Adımları

1

MuzibuAIController Oluştur

Modules/AI/app/Http/Controllers/Api/MuzibuAIController.php

  • muzibuAssistantChat() - Ana chat endpoint
  • Tenant Check: tenant()->id === 1001
  • Validation: message, song_id, album_id, playlist_id, genre_id, sector_id
  • Session: IP-based, sessionStorage sync
  • History: Son 10 mesaj context'e ekle
  • Response: message + actions array
2

MuzibuContextBuilder Service

app/Services/AI/Context/MuzibuContextBuilder.php

  • buildSongContext(song_id) - Şarkı + artist + album
  • buildAlbumContext(album_id) - Albüm + tüm şarkılar
  • buildPlaylistContext(playlist_id) - Playlist + şarkılar
  • buildGenreContext(genre_id) - Tür + popüler şarkılar
  • buildSectorContext(sector_id) - Sektör + playlist'ler
  • buildGeneralContext() - Tüm türler, radyolar
3

MuzibuSubscriptionHelper

app/Services/AI/Helpers/MuzibuSubscriptionHelper.php

getUserSubscriptionContext($user): array
├─ is_guest: bool
├─ is_premium: bool
├─ is_trial: bool
├─ has_used_trial: bool
├─ days_remaining: int
├─ plan_name: string ("Premium", "Trial", null)
├─ cycle_label: string ("Aylık", "Yıllık")
├─ expiry_date: string (formatted)
├─ device_count: int (aktif cihaz sayısı)
├─ device_limit: int (max cihaz limiti)
└─ subscription_plans: array (tüm planlar + fiyatlar)
4

Müzik Asistanı Prompt

Özel sistem prompt'u - Müzik odaklı personality

## KİMLİK

Sen Muzibu'nun müzik asistanısın. Kullanıcılara şarkı, albüm, playlist öneriyorsun.

## KURALLAR
  • Her yanıtta uygun action butonları döndür
  • Kullanıcının üyelik durumuna göre yanıt ver
  • Premium avantajlarını doğal şekilde tanıt
  • Sadece müzik konularında yanıt ver
## CONTEXT

Mevcut şarkı/albüm/playlist bilgisi, kullanıcı subscription durumu, tüm şarkı/tür listesi...

5

Action Button Response Format

AI yanıtlarına action array ekleme

{
  "success": true,
  "data": {
    "message": "Size **Tarkan - Kuzu Kuzu** şarkısını öneririm!",
    "actions": [
      {
        "type": "play_song",
        "label": "Hemen Çal",
        "icon": "fa-play",
        "color": "green",
        "params": { "song_id": 123 }
      },
      {
        "type": "add_favorite",
        "label": "Favoriye Ekle",
        "icon": "fa-heart",
        "color": "pink",
        "params": { "type": "song", "id": 123 }
      },
      {
        "type": "navigate",
        "label": "Sanatçıyı Gör",
        "icon": "fa-user",
        "color": "purple",
        "params": { "url": "/artist/tarkan" }
      }
    ],
    "session_id": "...",
    "conversation_id": 456
  }
}
6

Frontend Alpine.js Store

public/themes/muzibu/js/ai/muzibu-ai-chat.js

  • Alpine.store('muzibuAI') - Müzik AI store
  • sendMessage() - API'ye mesaj gönder
  • renderActions() - Butonları render et
  • executeAction(action) - Buton click handler
  • Player entegrasyonu: muzibuApp() ile haberleşme
  • Context sync: Şarkı değişince context update
7

Widget Entegrasyonu

Floating widget + Player entegrasyonu

  • Floating Widget: Sağ alt köşe (player'ın üstünde)
  • Bubble Messages: Müzik temaları ("Bugün ne dinleyelim?")
  • Auto Context: Çalan şarkı context'e otomatik ekle
  • Quick Actions: Popüler türler, radyolar
  • Theme: Muzibu purple/pink gradient
  • Mobile: Player ile çakışma engeli

API Endpoint'leri

Method Endpoint Açıklama Auth
POST /api/ai/v1/muzibu-assistant/chat Ana chat endpoint Opsiyonel
GET /api/ai/v1/muzibu-assistant/history Sohbet geçmişi Opsiyonel
GET /api/ai/v1/muzibu/subscription-status Kullanıcı üyelik bilgisi Sanctum
DELETE /api/ai/v1/muzibu/conversation/{id} Sohbeti sil Session

Ek Özellikler (Farklılıklar)

AI Playlist Oluşturma

Kullanıcı "bana chill playlist oluştur" dediğinde, AI otomatik olarak 15-20 şarkılık kişiselleştirilmiş playlist oluşturur ve kaydetme seçeneği sunar.

Action: create_playlist → PlaylistService.createPlaylistWithSongs()

Dinleme Geçmişi Analizi

SongPlay tablosundan kullanıcının dinleme geçmişini analiz ederek kişiselleştirilmiş öneriler sunar. "En çok dinlediklerim" ve "Son dinlediklerim" context'e eklenir.

Model: SongPlay → user_id + song_id + played_at

Kurumsal Hesap Desteği

MuzibuCorporateAccount entegrasyonu. Kurumsal kullanıcılar için özel yanıtlar, sektöre özel playlist önerileri, toplu hesap bilgisi.

Check: MuzibuCorporateService.isMember()

Infinite Queue Entegrasyonu

QueueRefillController ile entegre. AI'ın önerdiği şarkıları queue'ya ekleme, radyo başlatma, playlist'i queue'ya aktarma.

Actions: add_to_queue, play_next

Sosyal Paylaşım

AI'ın önerdiği şarkı/albüm/playlist'i WhatsApp, Twitter, Facebook'a paylaşma. Web Share API + fallback URL kopyalama.

Action: share → web-share.js entegrasyonu

Device Management

Kullanıcının aktif cihazlarını gösterme, cihaz limitini açıklama, "başka cihazdan çık" butonu ile DeviceService entegrasyonu.

Service: DeviceService.getActiveDevices()

Özet & Sonraki Adımlar

7
Dosya
Controller, Service, Helper, JS, Blade
8+
Action Türü
play, favorite, share, navigate...
%100
Tenant-Aware
Sadece Tenant 1001'de çalışır

Başlamak için onay bekliyorum!

Tüm mimari planlandı, Shop AI sisteminden miras alınacak kodlar belirlendi, Muzibu ve Subscription modülleri detaylıca incelendi. Hazırız!

Shop AI Analiz Tamamlandı
Muzibu Modül Analiz Tamamlandı
Subscription Entegrasyon Planlandı