AI modülü şu anda ÜÇ TEMEL PROBLEM ile karşı karşıyadır:
| Yükseklik | Problem | Dosya | Satırlar |
|---|---|---|---|
| KRİTİK | Hardcoded [2, 3] kontrolleri | AIResponseNode.php | 85, 126 |
| KRİTİK | Tenant-specific kurallara hardcode | AIResponseNode.php | 125-170 |
| YÜKSEK | PublicAIController'da Tenant2 kontrolü | PublicAIController.php | ~55 |
| YÜKSEK | ShopSearchService'de hardcode | ShopSearchService.php | Çok |
1.132 satır İXTİF ÖZEL
Amaç: Tenant 2 (ixtif.com) ve Tenant 3 (ixtif.com.tr) için özel prompt kuralları
İçeriği:
Dosya Yolu:
998 satır İXTİF ÖZEL
Amaç: Tenant 2 için kategori ve ürün arama logiki
İçeriği:
Dosya Yolu:
Özellikleri:
Dosya Yolu:
Kodu:
PROBLEM Satır 85 ve 126'da hardcoded tenant kontrolü:
Neden Problem?
Sorun: İXTİF özel kurallar (olumsuz kelime yasağı, ürün gösterme, vb.) global AI dosyasında yazılı:
Neden Hata?
Sorun: Controller'da tenant kontrolleri olmamalı
Dosyada 3 yerde in_array($tenantId, [2, 3]) kontrolü
2 yerde in_array($tenantId, [2, 3])
| Dosya Adı | Satırlar | Hardcode Tipi | İşlev |
|---|---|---|---|
| AIResponseNode.php | 85, 126 | in_array([2,3]) | Tenant2PromptService yükleme |
| AIResponseNode.php | 127-169 | İXTİF kuralları (hardcode) | Olumsuz kelimeler, ürün gösterme |
| PublicAIController.php | ~55 | in_array([2,3]) | Controller seviyesinde kontrol |
| ShopSearchService.php | Çok | in_array([2,3]) | Search servisi tenantı kontrol |
| OptimizedPromptService.php | 84, +1 | in_array([2,3]) | Optimized prompt oluşturma |
| Tenant2PromptService.php | ~47 | return in_array(tenant('id'), [2,3]) | Tenant kontrolü içinde |
| Servis Adı | Satır Sayısı | Tenant(lar) | Amaç |
|---|---|---|---|
| Tenant2PromptService | 1.132 | 2, 3 | Prompt kuralları (iXTİF) |
| Tenant2ProductSearchService | 998 | 2, 3 | Ürün arama (iXTİF) |
| Diğer tenantlar için: BAŞKA SERVİS YOK (fallback kullanılır) | |||
Cevap: ixtif.com ve ixtif.com.tr aynı işletme olduğundan aynı ürün katalogu ve kuralları kullanıyor.
Sorun: İleride farklı kural isterse, Tenant2 → Tenant2 + Tenant3 şeklinde ayrılacak mı?
Durum:
Sorun: Neden tutarsız?
Mekanizmalar:
Soru: Kurallar database'e taşınabilir mi?
Gerekli Dosyalar:
Durum: Konsistent bir pattern yok!
Merkezi bir factory sınıfı oluştur:
Avantajları:
Faydaları:
Eski Kod (Hardcoded):
Yeni Kod (Factory):
Faydaları:
Tenant-specific kurallar database'e taşın:
| Directive Key | Tipi | Örnek Değer |
|---|---|---|
| negative_response_handling | String | "positive" / "fallback" |
| ask_on_ambiguous_request | Boolean | true / false |
| max_questions | Integer | 2, 3, unlimited |
| product_filter_rules | JSON | {"spare_parts": true, "categories": [1,2,3]} |
TAHMİN 3-4 saat
TAHMİN 4-5 saat
TAHMİN 2-3 saat
TAHMİN 8-10 saat
Toplam Zaman: ~17-22 saat
Benefit: 1000+ tenant için ölçeklenebilir mimarı
Senaryо: Factory'e geçiş sırasında Tenant2PromptService'den kural kaçırılır.
Azaltma:
Senaryо: Tenant1001PromptService.php syntax hatası var, default service karamak isteyeceği sırada da hata.
Azaltma:
Senaryо: Her request'te factory new service oluşturur.
Azaltma:
| Dosya | Problem Tipi | Satırlar | Çözüm |
|---|---|---|---|
| AIResponseNode.php | Hardcoded [2,3] | 85, 126 | Factory pattern |
| AIResponseNode.php | Tenant-specific kurallar | 125-170 | Service'e taşı |
| PublicAIController.php | Hardcoded [2,3] | ~55 | Factory pattern |
| ShopSearchService.php | Hardcoded [2,3] ×3 | Çok | Factory pattern |
| OptimizedPromptService.php | Hardcoded [2,3] | 84, +1 | Factory pattern |
| Tenant2PromptService.php | İç kontrol | ~47 | Zaten doğru |