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
v5.0
Durum
Planlandi

TenantServiceFactory Pattern

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/

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

2 Action Button System (Tikla-Cal)

AI Yaniti:
"Size Tarkan - Kuzu Kuzu sarkisini oneririm!"

Desteklenen Action Turleri

play_song
play_album
play_playlist
play_radio
add_favorite
add_to_playlist
share
navigate

3 Subscription & Premium Yonetimi

Guest
"Uye olun, {trial_days} gun ucretsiz deneyin!"
Trial
"{days_remaining} gun kaldi, Premium'a gecin!"
Premium
"{days_remaining} gun kaldi, {device_count}/{device_limit} cihaz"

AI Workflow Sistemi (v5 Yenilik!)

Harika Haber: Sistem Zaten Tenant-Aware!
Flows, Nodes, Directives, Knowledge Base - hepsi tenant_id ile ayristirilmis. Kod degisikligi gerekmez, sadece icerik eklenmeli.

Flows (Akislar)

HAZIR
  • Tenant DB: tenant_conversation_flows
  • Admin: /admin/ai/workflow/flows
  • Her tenant kendi flow'larini olusturur

Nodes (Dugumler)

HAZIR
  • Global: Central DB (ai_workflow_nodes)
  • Admin: /admin/ai/workflow/nodes
  • is_global + tenant_whitelist filtreleme

Directives (Direktifler)

ICERIK GEREK
  • Central DB: ai_tenant_directives
  • Admin: /admin/ai/workflow/directives
  • copyFromTenant(2, 1001) kullanilabilir

Knowledge Base

ICERIK GEREK
  • Tenant DB: tenant_knowledge_base
  • Admin: /admin/ai/knowledge-base
  • Muzik SSS icerigi eklenmeli

Implementasyon Adimlari

1

Tenant1001PromptService Olustur

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

  • buildPrompt(): Muzik asistani system prompt
  • getSpecialRules(): Muzik odakli kurallar
  • getSector(): return 'music'
  • getNoProductMessage(): "Icerik bulunamadi"
  • getContactInfo(): Settings'ten iletisim
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)
  • getPlansWithPrices()
  • getDeviceInfo($user)
  • getDaysRemaining()
4

AI Workflow Icerigi Ekle

Admin panelden yapilacak (kod yok)

Directives
  • copyFromTenant(2, 1001) ile kopyala
  • ai_config: Muzik prompt'u
  • behavior: Oneri davranisi
  • pricing: Subscription bilgisi
Knowledge Base
  • Abonelik SSS
  • Cihaz Limiti SSS
  • Playlist Olusturma
  • Odeme Sorulari
5

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)

Ilerleme Takibi

Tenant1001PromptService.php

Interface implement et
buildPrompt()
getSpecialRules()
getSector(), getNoProductMessage(), getContactInfo()

Tenant1001SubscriptionHelper.php

getUserStatus()
getPlansWithPrices()
getDeviceInfo(), getDaysRemaining()

Tenant1001MusicSearchService.php

searchSongs(), searchAlbums()
searchPlaylists(), searchByGenre()
searchBySector(), getPopularContent()

AI Workflow Icerigi

Directives kopyala (ixtif template)
Muzik directive'lerini ozellestir
Knowledge Base SSS ekle

Ozet

3
Backend Dosya
PromptService, SearchService, Helper
0
Controller/Route
Factory auto-discovery
2
Icerik Gorevi
Directives + KB
2
Opsiyonel
Frontend + Widget

Dosya Isimlendirme (Tenant1001 Konvansiyonu)

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