Products & Cart Modül Analizi

Tarih: 2025-11-23 | Tenant: ixtif.com (Tenant 2) | Talep: Sepete ekleme sorunu ve modül uyumsuzluğu analizi

Mevcut Durum Özeti

OK
Shop Modülü
OK
Cart Modülü
3
Tespit Edilen Sorun
1
Kritik Hata

Tespit Edilen Sorunlar

  • HATA: CartPage.php satır 61: recalculate() metodunun Cart model'de bulunmaması
  • UYARI: ShopCartBridge.php satır 85: Media collection adı uyumsuzluğu ('main' vs 'featured_image')
  • UYARI: Event isimlendirme tutarsızlıkları (cartUpdated vs cart-updated)

Mevcut Mimari Yapı

Sepete Ekleme Akışı

Ürün Detay Sayfası
AddToCartButton (Livewire)
ShopCartBridge
CartService
Database

1. AddToCartButton Livewire Component

Modules/Shop/app/Http/Livewire/Front/AddToCartButton.php

Ürün detay sayfasında "Sepete Ekle" butonunu yönetir. ShopCartBridge ve CartService servislerini kullanarak ürünü sepete ekler.

Durum: Çalışıyor - Kod mantığı doğru

2. ShopCartBridge Service

Modules/Shop/app/Services/ShopCartBridge.php

Shop ve Cart modülleri arasında köprü görevi görür. Ürün bilgilerini (title, image, price, tax) sepet formatına dönüştürür.

Durum: Sorunlu - Media collection adı hatalı

3. CartService

Modules/Cart/app/Services/CartService.php

Sepet işlemlerini yönetir: findOrCreateCart, addItem, updateItemQuantity. Polymorphic yapıda farklı ürün tiplerini destekler.

Durum: Çalışıyor - Kod mantığı doğru

4. CartPage Livewire Component

Modules/Cart/app/Http/Livewire/Front/CartPage.php

Sepet sayfasını yönetir. Ürün miktar güncelleme, silme işlemlerini yapar.

Durum: Kritik Hata - recalculate() metod çağrısı hatalı

Yapılacaklar

1. CartPage recalculate() Hatası Düzeltmesi Kritik

Modules/Cart/app/Http/Livewire/Front/CartPage.php:61

CartPage'de $this->cart->recalculate() çağrılıyor ancak Cart model'de bu metod yok. Doğru metod: recalculateTotals()

Sorun: Kullanıcı sepette miktar güncellediğinde hata alır, sepet toplam hesaplaması çalışmaz.

Beklenen Sonuç: Sepet sayfasında miktar güncelleme ve silme işlemleri hatasız çalışacak.

2. ShopCartBridge Media Collection Düzeltmesi Yüksek

Modules/Shop/app/Services/ShopCartBridge.php:85

Şu an getFirstMediaUrl('main') çağrılıyor. ShopProduct model'inde media collection adı 'featured_image'.

Sorun: Sepete eklenen ürünlerin görselleri görünmüyor, placeholder icon gösteriliyor.

Beklenen Sonuç: Sepetteki ürünler doğru görsellerle gösterilecek.

3. Event İsimlendirme Standardizasyonu Orta

Farklı bileşenler farklı event isimleri kullanıyor:

- AddToCartButton: cartUpdated (Livewire) + cart-updated (Browser)

- CartWidget: cartUpdated (Livewire listener)

- CartPage: cart-updated, cart-item-removed, cart-error (Browser)

Öneri: Tüm bileşenlerde tutarlı isimlendirme kullanılmalı. Livewire eventleri için camelCase, browser eventleri için kebab-case.

Beklenen Sonuç: Tüm sepet bileşenleri senkronize çalışacak, notification'lar doğru gösterilecek.

4. CartItem item_title/item_image Kullanımı Orta

Modules/Cart/app/Models/CartItem.php

CartItem model'de item_title ve item_image alanları var ve CartService bunları dolduruyor. Ancak view'da $item->item_name accessor'ı kullanılıyor ki bu polymorphic ilişki üzerinden çalışıyor.

Öneri: Tutarlılık için ya accessor kullanımı ya da direkt field kullanımı tercih edilmeli. Performans için direkt field kullanımı önerilir.

Beklenen Sonuç: Sepet sayfası daha hızlı yüklenecek (N+1 query problemi önlenecek).

Güçlü Yönler

Polymorphic Cart Yapısı

Cart sistemi morphTo ilişki kullanıyor. Bu sayede sadece ShopProduct değil, gelecekte Subscription, Service gibi farklı ürün tipleri de sepete eklenebilir.

ShopCartBridge Abstraction

Shop ve Cart modülleri arasındaki köprü servisi iyi tasarlanmış. Stok kontrolü, fiyat hesaplama, vergi bilgisi gibi işlemler merkezi bir yerden yönetiliyor.

Currency Conversion Desteği

CartService'de CurrencyConversionService entegrasyonu var. USD/EUR ürünler otomatik TRY'ye çevriliyor.

Session/Customer Dual Support

Misafir kullanıcılar session bazlı, üye kullanıcılar customer_id bazlı sepet kullanıyor. Login sonrası sepetler merge ediliyor.

Uygulama Öncelik Sırası

1. Kritik: CartPage recalculate() Düzeltmesi

Bu hata sepet sayfasının çalışmasını engelliyor. Öncelikli olarak düzeltilmeli.

2. Yüksek: Media Collection Düzeltmesi

Görsel eksikliği kullanıcı deneyimini olumsuz etkiliyor.

3. Orta: Event ve Field Standardizasyonu

İşlevselliği etkilemiyor ancak kod kalitesi ve bakımı için önemli.