Akilli Muzik Asistani
Tenant 1001 icin ozel tasarlanmis, sarki onerisi, playlist yonetimi, subscription kontrolu ve tikla-cal action button sistemi ile donatilmis yapay zeka asistani
AI, tenant 1001 veritabanindaki sarki, album, artist, playlist, tur ve sektor verilerini kullanarak kullaniciya ozel oneriler sunar. Context-aware: hangi sayfada olduguna gore farkli oneriler.
AI sadece metin yanit vermez, kullanicinin tek tikla aksiyon alabilecegi butonlar da dondurur. Sarki calma, favoriye ekleme, playlist'e ekleme, paylasma ve daha fazlasi.
AI, kullanicinin uyelik durumunu bilir ve buna gore yanit verir. Mevcut Subscription modulu ile tam entegre calisir. Dinamik cycles, trial sistemi, device limit bilgisi dahil.
"Merhaba! Sinirsiz muzik dinlemek icin uye olabilirsiniz. {trial_days} gun ucretsiz deneme firsatini kacirmayin!"
"Deneme sureniz {days_remaining} gun sonra bitiyor! Muzik keyfiniz kesintisiz devam etsin, simdi Premium'a gecin."
"Uyeliginiz sona erdi. Reklamsiz, yuksek kaliteli muzik icin Premium'a gecin!"
"Premium uyeliginiz {days_remaining} gun daha gecerli. Su anda {device_count}/{device_limit} cihaz kullaniyorsunuz. Keyifli dinlemeler!"
isPremium() - Premium mi?isTrialActive() - Trial doneminde mi?hasActiveSubscription() - Aktif abonelik var mi?has_used_trial - Trial kullanildi mi?daysRemaining() - Kalan gungetCycleLabel() - "Aylik", "Yillik"status - active/trial/expiredcurrent_period_end - Bitis tarihiTenant1001SubscriptionHelper uzerinden dinamik cekilecek.
Hardcoded deger kullanilmayacak. Plan degisirse AI otomatik guncel bilgi verecek.
Modules/AI/app/Http/Controllers/Api/Tenant1001AIController.php
app/Services/AI/Context/Tenant1001ContextBuilder.php
app/Services/AI/Helpers/Tenant1001SubscriptionHelper.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 ("Aylik", "Yillik")
|- expiry_date: string (formatted)
|- device_count: int (aktif cihaz sayisi)
|- device_limit: int (max cihaz limiti)
+- subscription_plans: array (tum planlar + fiyatlar)
Ozel sistem prompt'u - Muzik odakli personality
Sen Tenant 1001'in muzik asistanisin. Kullanicilara sarki, album, playlist oneriyorsun.
Mevcut sarki/album/playlist bilgisi, kullanici subscription durumu, tum sarki/tur listesi...
AI yanitlarina action array ekleme
{
"success": true,
"data": {
"message": "Size **Tarkan - Kuzu Kuzu** sarkisini oneririm!",
"actions": [
{
"type": "play_song",
"label": "Hemen Cal",
"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": "Sanatciyi Gor",
"icon": "fa-user",
"color": "purple",
"params": { "url": "/artist/tarkan" }
}
],
"session_id": "...",
"conversation_id": 456
}
}
public/themes/muzibu/js/ai/tenant1001-ai-chat.js
Floating widget + Player entegrasyonu
| Method | Endpoint | Aciklama | Auth |
|---|---|---|---|
| POST | /api/ai/v1/tenant1001-assistant/chat | Ana chat endpoint | Opsiyonel |
| GET | /api/ai/v1/tenant1001-assistant/history | Sohbet gecmisi | Opsiyonel |
| GET | /api/ai/v1/tenant1001/subscription-status | Kullanici uyelik bilgisi | Sanctum |
| DELETE | /api/ai/v1/tenant1001/conversation/{id} | Sohbeti sil | Session |
Kullanici "bana chill playlist olustur" dediginde, AI otomatik olarak 15-20 sarkilik kisisellestirilmis playlist olusturur ve kaydetme secenegi sunar.
create_playlist -> PlaylistService.createPlaylistWithSongs()
SongPlay tablosundan kullanicinin dinleme gecmisini analiz ederek kisisellestirilmis oneriler sunar. "En cok dinlediklerim" ve "Son dinlediklerim" context'e eklenir.
SongPlay -> user_id + song_id + played_at
MuzibuCorporateAccount entegrasyonu. Kurumsal kullanicilar icin ozel yanitlar, sektore ozel playlist onerileri, toplu hesap bilgisi.
MuzibuCorporateService.isMember()
QueueRefillController ile entegre. AI'nin onerdigi sarkilari queue'ya ekleme, radyo baslatma, playlist'i queue'ya aktarma.
add_to_queue, play_next
AI'nin onerdigi sarki/album/playlist'i WhatsApp, Twitter, Facebook'a paylasma. Web Share API + fallback URL kopyalama.
share -> web-share.js entegrasyonu
Kullanicinin aktif cihazlarini gosterme, cihaz limitini aciklama, "baska cihazdan cik" butonu ile DeviceService entegrasyonu.
DeviceService.getActiveDevices()
| Dosya | Tam Yol | Tip | Aciklama |
|---|---|---|---|
| PublicAIController.php | Modules/AI/app/Http/Controllers/Api/ | GUNCELLE | tenant1001AssistantChat() metodu ekle |
| Tenant1001ContextBuilder.php | Modules/AI/app/Services/Tenant/ | YENI | Muzik context builder (song, album, playlist) |
| Tenant1001SubscriptionHelper.php | Modules/AI/app/Services/Tenant/ | YENI | Dinamik subscription bilgileri |
| Tenant1001PromptService.php | Modules/AI/app/Services/Tenant/ | YENI | Muzik asistani system prompt |
| api.php | Modules/AI/routes/ | GUNCELLE | tenant1001-assistant routes ekle |
| tenant1001-ai-chat.js | public/themes/muzibu/js/ai/ | YENI | Alpine.js store + action handlers |
| ai-chat-widget.blade.php | resources/views/themes/muzibu/components/ | YENI | Floating chat widget UI |
| app.blade.php | resources/views/themes/muzibu/layouts/ | GUNCELLE | Widget include + JS load |
Tenant1001AIController.phpTenant1001ContextBuilder.phpTenant1001SubscriptionHelper.phptenant1001-ai-chat.jsAlpine.store('tenant1001AI')feature_slug: 'tenant1001-assistant'