Tenant 1001 AI

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

Tarih
16.12.2025
Tenant
1001
Versiyon
v4.0
Durum
Planlandi

TenantServiceFactory Pattern (v4 Yenilik!)

Neden Factory Pattern?

  • Yeni Controller GEREKMEZ! Mevcut assistantChat() Factory ile tenant'a ozel service'i otomatik yukler.
  • Yeni Route GEREKMEZ! Mevcut /api/ai/v1/assistant/chat endpoint'i kullanilir.
  • Otomatik Kesfedilir! Tenant{ID}PromptService dosyasi olusturulunca Factory otomatik tanir.

TenantServiceFactory Calisma Mantigi

// Mevcut Factory kodu:
TenantServiceFactory::getPromptService(1001)
// ↓ Auto-discovery ↓
Tenant1001PromptService::class
// Dosya yoksa:
DefaultPromptService::class

Olusturulacak Dosyalar

  • Tenant1001PromptService.php
  • Tenant1001MusicSearchService.php
  • Tenant1001SubscriptionHelper.php
Konum: Modules/AI/app/Services/Tenant/
Tenant2 Pattern Referans
Mevcut dosyalar: Tenant2PromptService.php, Tenant2ProductSearchService.php
Ayni pattern Tenant1001 icin uygulanacak.

Sistem Mimarisi

Shop AI'dan Miras Alinan Yapi

Backend Katmanlari

  • Factory Pattern: TenantServiceFactory otomatik service kesfeder
  • Prompt Service: Tenant1001PromptService (TenantPromptServiceInterface)
  • Search Service: Tenant1001MusicSearchService (muzik odakli)
  • Conversation: AIConversation + AIMessage (feature_slug: 'tenant1001-assistant')

Frontend Katmanlari

  • Alpine Store: Alpine.store('tenant1001AI') - muzik odakli
  • Widget: Player entegreli floating widget
  • Action Buttons: Tikla-cal, favoriye ekle, paylas
  • 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 Ozellikler

1 Akilli Muzik Onerileri

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.

Sarki Onerileri
  • Benzer sarkilar (ayni tur)
  • Ayni artist'in diger sarkilari
  • Ayni albumden sarkilar
  • Populer sarkilar
Album & Artist
  • Artist'in tum albumleri
  • Benzer artist'ler
  • Yeni cikan albumler
  • One cikan albumler
Playlist & Radyo
  • Tematik playlist'ler
  • Sektore ozel playlist'ler
  • Radyo istasyonlari
  • Kullanici playlist onerileri

Context Turleri (Sayfa Bazli)

song_id
Sarki detay sayfasi
album_id
Album sayfasi
playlist_id
Playlist sayfasi
genre_id / sector_id
Tur/Sektor sayfasi

2 Action Button System (Tikla-Cal)

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 Yaniti:
"Size Tarkan - Kuzu Kuzu sarkisini oneririm. 2000'lerin hit'i!"
AI Yaniti:
"Chill Cafe radyosu tam size gore! Sakin, akustik muzikler."

Desteklenen Action Turleri

play_song: Sarkiyi cal
play_album: Albumu cal
play_playlist: Playlist baslat
play_radio: Radyoyu ac
add_favorite: Favoriye ekle
add_to_playlist: Playlist'e ekle
share: Sosyal paylasim
navigate: Sayfaya git

3 Subscription & Premium Yonetimi

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.

Uye Olmayan (Guest)
auth()->guest() = true

"Merhaba! Sinirsiz muzik dinlemek icin uye olabilirsiniz. {trial_days} gun ucretsiz deneme firsatini kacirmayin!"

trial_days: DB'den dinamik
Trial Kullanici
isTrialActive() = true | Kalan: {days_remaining} gun

"Deneme sureniz {days_remaining} gun sonra bitiyor! Muzik keyfiniz kesintisiz devam etsin, simdi Premium'a gecin."

Premium Kullanici
isPremium() = true | Kalan: {days_remaining} gun | Cihaz: {device_count}/{device_limit}

"Premium uyeliginiz {days_remaining} gun daha gecerli. Su anda {device_count}/{device_limit} cihaz kullaniyorsunuz. Keyifli dinlemeler!"

Dinamik Degerler (DB'den Cekilecek)

Trial Suresi
SubscriptionPlan->trial_days
Plan Fiyatlari
SubscriptionPlan->billing_cycles
Cihaz Limiti
SubscriptionPlan->device_limit
Not: Tum degerler Tenant1001SubscriptionHelper uzerinden dinamik cekilecek. Hardcoded deger kullanilmayacak.

4 Akilli Sohbet Yetenekleri

AI'nin Yanit Verebilecegi Sorular

  • "Bana rock sarkilari oner"
  • "Romantik playlist var mi?"
  • "Tarkan'in albumleri hangileri?"
  • "Premium ne avantajlar sagliyor?"
  • "Uyelikgim ne zaman bitiyor?"

Mood Bazli Oneriler

Mutlu Pop, Dance, Party
Huzunlu Slow, Akustik
Spor/Enerji Workout, Hip-Hop, EDM
Rahatlaci Chill, Ambient, Lo-Fi

Implementasyon Adimlari

1

Tenant1001PromptService Olustur

Modules/AI/app/Services/Tenant/Tenant1001PromptService.php

implements TenantPromptServiceInterface
  • buildPrompt(): Muzik asistani system prompt
  • getSpecialRules(): Muzik odakli kurallar
  • getSector(): return 'music'
  • getNoProductMessage(): "Icerik bulunamadi"
  • getContactInfo(): Settings'ten iletisim
Factory otomatik kesfeder - yeni Controller/Route GEREKMEZ!
2

Tenant1001MusicSearchService Olustur

Modules/AI/app/Services/Tenant/Tenant1001MusicSearchService.php

  • searchSongs(query)
  • searchAlbums(query)
  • searchPlaylists(query)
  • searchByGenre(genre_id)
  • searchBySector(sector_id)
  • getPopularContent()
3

Tenant1001SubscriptionHelper Olustur

Modules/AI/app/Services/Tenant/Tenant1001SubscriptionHelper.php

  • getUserStatus($user) - Guest/Trial/Premium
  • getPlansWithPrices() - Tum planlar
  • getDeviceInfo($user) - Cihaz bilgisi
  • getDaysRemaining() - Kalan gun
4

Test & Frontend (Opsiyonel)

  • Test: /api/ai/v1/assistant/chat tenant 1001'de
  • Frontend: tenant1001-ai-chat.js (opsiyonel)
  • Widget: ai-chat-widget.blade.php (opsiyonel)

Dosya Haritasi

httpdocs/Modules/AI/app/Services/Tenant/
Yeni Dosyalar (3 adet)
Tenant1001PromptService.php YENI
Tenant1001MusicSearchService.php YENI
Tenant1001SubscriptionHelper.php YENI
Mevcut: Tenant2ProductSearchService.php, Tenant2PromptService.php, DefaultPromptService.php
Degisiklik Gerektirmeyen Dosyalar
PublicAIController.php - Factory pattern kullanir
api.php - Mevcut route yeterli
TenantServiceFactory.php - Auto-discovery
3
Yeni Backend Dosya
0
Guncellenecek
%100
Modules/AI Icinde
2
Frontend (Opsiyonel)

Ilerleme Takibi (21 Gorev)

Tenant1001PromptService.php (6 gorev)

Dosya olustur - TenantPromptServiceInterface implement et
buildPrompt() - Muzik asistani system prompt
getSpecialRules() - Muzik ozel kurallari
getSector() - return 'music'
getNoProductMessage() - Icerik bulunamadi mesaji
getContactInfo() - Settings'ten iletisim bilgileri

Tenant1001SubscriptionHelper.php (5 gorev)

Dosya olustur
getUserStatus() - Guest/Trial/Premium durumu
getPlansWithPrices() - Tum planlar DB'den
getDeviceInfo() - Cihaz sayisi ve limit
getDaysRemaining() - Kalan gun hesaplama

Tenant1001MusicSearchService.php (7 gorev)

Dosya olustur
searchSongs() - Sarki arama
searchAlbums() - Album arama
searchPlaylists() - Playlist arama
searchByGenre() - Ture gore icerik
searchBySector() - Sektore gore playlist
getPopularContent() - Populer icerikler

Test & Frontend (3 gorev)

Test: /api/ai/v1/assistant/chat tenant 1001'de
Frontend: tenant1001-ai-chat.js (opsiyonel)
Frontend: ai-chat-widget.blade.php (opsiyonel)

Ek Ozellikler

AI Playlist Olusturma

"Bana chill playlist olustur" dediginde AI otomatik 15-20 sarkilik playlist olusturur.

Dinleme Gecmisi Analizi

SongPlay tablosundan kullanicinin dinleme gecmisini analiz ederek kisisellestirilmis oneriler.

Infinite Queue Entegrasyonu

AI'nin onerdigi sarkilari queue'ya ekleme, radyo baslatma, playlist'i queue'ya aktarma.

Device Management

Kullanicinin aktif cihazlarini gosterme, cihaz limitini aciklama, DeviceService entegrasyonu.

Ozet & Sonraki Adimlar

3
Backend Dosya
PromptService, SearchService, Helper
8+
Action Turu
play, favorite, share, navigate...
0
Route/Controller Degisikligi
Factory auto-discovery kullanilir

Dosya Isimlendirme (Tenant1001 Konvansiyonu)

  • Tenant1001PromptService.php
  • Tenant1001MusicSearchService.php
  • Tenant1001SubscriptionHelper.php
  • tenant1001-ai-chat.js (opsiyonel)
  • Alpine.store('tenant1001AI') (opsiyonel)
  • feature_slug: 'tenant1001-assistant'