🏗️ Shop Product - Sektörel Veri Yapısı Stratejisi

📅 2025-12-04 | 🎯 Multi-Tenant Strategy | 🔬 Data Architecture

📊 Mevcut Durum (İxtif - Endüstriyel Ekipman)

Şu anda 1,019 ürün var ve pazarlama alanları ayrı kolonlarda JSON formatında tutuluyor:

Kolon Bazlı Alanlar (JSON):
• features (91 ürün) - icon + text
• faq_data (93 ürün) - question + answer
• use_cases (332 ürün) - icon + text
• primary_specs (410 ürün) - icon + label + value
• accessories (88 ürün) - icon + name + price
• certifications (88 ürün) - icon + name + year
• competitive_advantages (88 ürün) - icon + text
• target_industries (88 ürün) - icon + text
Body Alanı (HTML):
• body (1,019 ürün) - Ortalama 22,000 karakter
• Detaylı açıklama, kullanım alanları, montaj talimatları
• Sorun-çözüm, güvenlik uyarıları, CTA

⚖️ Body İçinde vs Kolonlarda: Karşılaştırma

🟡 Body İçinde (HTML)

Artılar
  • Her sektör istediği yapıyı oluşturur
  • Migration basit - tek kolon
  • HTML ile zengin formatlar (liste, tablo, vurgu)
  • Sınırsız esneklik
  • Editör ile kolay düzenleme
Eksiler
  • Database'de sorgulanamaz
  • Frontend'de HTML parsing gerekli
  • API için JSON export zor
  • Yapısal veri çekmek karmaşık
  • Filtreleme/arama yapılamaz

🟢 Kolonlarda (JSON)

Artılar
  • Database'de sorgulanabilir
  • Her alan ayrı - yapısal veri
  • API dostu - direkt JSON export
  • Frontend kolay - her alanı ayrı render
  • Filtreleme ve arama yapılabilir
Eksiler
  • Her sektör aynı kolonları kullanmak zorunda
  • Yeni kolon eklemek migration gerektirir
  • Esnek değil - sabit yapı
  • Çok kolon = karmaşık tablo
  • Boş kolonlar yer kaplar

🎭 Sektör Bazlı Veri İhtiyaçları

İxtif - Endüstriyel Ekipman

Forklift, transpalet, yedek parça
  • • Teknik özellikler (güç, kapasite, batarya)
  • • Kullanım alanları (depo, soğuk hava)
  • • Sertifikalar (CE, ISO)
  • • Aksesuarlar (şarj cihazı, kabin)
  • • Montaj talimatları
  • • Güvenlik uyarıları

Muzibu - Müzik Platformu

Şarkı, albüm, sanatçı
  • • Şarkı sözleri (lyrics)
  • • Ses önizleme (audio_preview)
  • • Albüm ekibi (credits)
  • • Sanatçı biyografisi
  • • Müzik türü, ruh hali
  • • Enstrümanlar listesi

Örnek - Gıda E-Ticaret

Yiyecek, içecek, organik ürün
  • • İçindekiler (ingredients)
  • • Besin değerleri (nutrition_facts)
  • • Alerjen uyarıları
  • • Tarifler (recipes)
  • • Saklama koşulları
  • • Son kullanma tarihi

Örnek - Moda & Tekstil

Giyim, ayakkabı, aksesuar
  • • Beden tablosu (size_chart)
  • • Kumaş bakımı (fabric_care)
  • • Stil önerileri (style_guide)
  • • Renk seçenekleri
  • • Kombinler
  • • Model ölçüleri

Sonuç: Her sektör tamamen farklı veri alanlarına ihtiyaç duyuyor. Sabit kolon yapısı bu esnekliği sağlayamaz!

🎯 Strateji Seçenekleri

Seçenek 2: Hibrit Yaklaşım

Bazı ortak alanları kolon olarak tut, sektörel alanları custom_json_fields'e taşı.

Nasıl Çalışır:

  1. Ortak Kolonlar: features, faq_data (her sektörde kullanılabilir)
  2. Sektörel Alanlar: certifications (sadece İxtif), lyrics (sadece Muzibu) → custom_json_fields
  3. Body: Zengin HTML içerik için kullanılır
Avantajlar
  • Ortak alanlar hızlı sorgulanır
  • Sektörel alanlar esnek
  • Dengeli yapı
Dezavantajlar
  • Hangi alanın ortak, hangisinin sektörel olduğuna karar vermek zor
  • İki farklı yerde veri - karmaşık
  • Migration'da dikkat gerekir

Seçenek 3: Body'de HTML + Metadata

Tüm sektörel içeriği body içinde HTML olarak tut, sadece sorgulanması gereken metadata'ları ayrı kolonlarda tut.

Nasıl Çalışır:

  1. Body (HTML): FAQ, özellikler, kullanım alanları → Zengin HTML formatında
  2. Metadata (Kolonlar): Fiyat, stok, kategori → Sorgulanabilir alanlar
  3. Frontend: Body'yi HTML olarak göster, parsing yok
Avantajlar
  • En basit yapı
  • WYSIWYG editör ile kolay düzenleme
  • Zengin formatlar (resim, video, tablo)
Dezavantajlar
  • FAQ, özellikler sorgulanamaz
  • API için JSON export zor
  • Filtreleme yapılamaz

✅ Önerilen Çözüm: Custom JSON Fields

Seçenek 1'i öneriyorum çünkü:

✅ Neden Bu Çözüm?
1. Zaten custom_json_fields kolonu VAR - yeni migration yok!
2. Her tenant kendi sektörüne göre yapılandırır
3. Sorgulanabilir - JSON query'ler destekleniyor
4. API dostu - Frontend kolayca kullanır
5. Mevcut features, faq_data kolonları → Ortak alanlar olarak kalabilir
6. Sertifika, aksesuar gibi sektörel alanlar → custom_json_fields'e taşınır

İmplementasyon Planı:

Adım 1: Ortak vs Sektörel Alanları Belirle
Ortak (Her sektör kullanabilir):
• features - Ürün özellikleri (genel)
• faq_data - Sıkça sorulan sorular
• tags - Etiketler

Sektörel (Sadece belirli sektörler):
• certifications → custom_json_fields (sadece İxtif)
• accessories → custom_json_fields (sadece İxtif)
• target_industries → custom_json_fields (sadece İxtif)
• lyrics → custom_json_fields (sadece Muzibu)
• audio_preview → custom_json_fields (sadece Muzibu)
Adım 2: Mevcut Verileri Migrate Et
İxtif için:
1. certifications, accessories, target_industries kolonlarındaki veriyi oku
2. custom_json_fields içine taşı
3. Eski kolonları DROP et (opsiyonel - geriye uyumluluk için tutulabilir)
Adım 3: Admin Panel'e Dinamik Field Ekleme
Admin panelde her tenant şunları yapabilir:
1. "Custom Field Ekle" butonu
2. Field adı, tipi (text, JSON array, number) seç
3. custom_json_fields içinde otomatik sakla
4. Frontend'de otomatik render et
Adım 4: Frontend Render
Blade template'de:
1. Ortak alanları (features, faq) bilinen yapıda render et
2. custom_json_fields'i parse et
3. Her sektörün kendi field'larını göster
4. Icon, label, value yapısını koruyarak dinamik göster