📦 İxtif - Veri Migration Planı

🎯 Hedef: Sektörel alanları custom_json_fields'e taşı | 📅 2025-12-04

⚠️ KRİTİK UYARI - OKUMADAN BAŞLAMA!

Bu işlem 1,019 ürünün verisini değiştirecek!
✅ Mutlaka backup al
✅ Önce test ortamında dene
Rollback planı hazır olsun

📊 Mevcut Durum (İxtif.com)

Toplam Ürün: 1,019

Tüm ürünler aktif durumda ve veriler ayrı kolonlarda JSON formatında tutuluyor.

Kolon Adı Dolu Ürün Sayısı Durum
features 91 KALSIN Ortak Alan
faq_data 93 KALSIN Ortak Alan
certifications 88 TAŞINSIN Sektörel
accessories 88 TAŞINSIN Sektörel
target_industries 88 TAŞINSIN Sektörel
competitive_advantages 88 TAŞINSIN Sektörel
use_cases 332 KALSIN Ortak Alan
primary_specs 410 KALSIN Ortak Alan
highlighted_features 88 TAŞINSIN Sektörel

🎯 Migration Stratejisi

✅ Hedef

Sektörel alanları (certifications, accessories, target_industries, competitive_advantages, highlighted_features) custom_json_fields kolonuna taşıyarak database'i temizlemek ve esneklik kazanmak.

Neden Bu Alanlar Taşınacak?

🔍 Karar Kriterleri:
certifications → Sadece endüstriyel ekipmanda gerekli (müzikte yok)
accessories → Ürün aksesuarları (sektöre özel)
target_industries → Hedef sektörler (endüstriyel alan bilgisi)
competitive_advantages → Rekabet avantajları (sektöre özel)
highlighted_features → Öne çıkan özellikler (sektörel vurgu)

Neden Bu Alanlar Kalacak?

✅ Ortak Alanlar:
features → Her üründe olabilir (müzikte: 320kbps, İxtif'te: AC motor)
faq_data → Her ürün için FAQ olabilir (evrensel)
use_cases → Kullanım alanları (her sektörde farklı ama yapı aynı)
primary_specs → Ana özellikler (her ürünün teknik özellikleri var)

🚀 Migration Adımları

1

Backup Al

Ne yapılacak:

  • shop_products tablosunun tam yedeğini al
  • Özellikle certifications, accessories, target_industries, competitive_advantages, highlighted_features kolonlarının verilerini kaydet
  • Veri kaybı durumunda geri yükleyebileceğin bir snapshot oluştur
Mantık:
1. Tüm shop_products tablosunu export et
2. Sadece taşınacak kolonları ayrı bir dosyaya kaydet
3. Backup dosyasını güvenli bir yere taşı
4. Backup'ın çalıştığını test et

Beklenen Sonuç: 1,019 ürünün verisi güvenle yedeklendi

2

custom_json_fields Yapısını Hazırla

Ne yapılacak:

  • custom_json_fields kolonunun mevcut olduğunu kontrol et
  • JSON yapısını tasarla (hangi alanlar nasıl saklanacak)
  • Örnek veri ile test et
Hedef JSON Yapısı:
custom_json_fields = {
  "certifications": [{icon, name, year, authority}],
  "accessories": [{icon, name, price, description, is_standard}],
  "target_industries": [{icon, text}],
  "competitive_advantages": [{icon, text}],
  "highlighted_features": [{...}]
}

Beklenen Sonuç: JSON yapısı net ve tutarlı

3

Verileri Birleştir ve Taşı

Ne yapılacak:

  • Her ürün için mevcut certifications, accessories, target_industries, competitive_advantages, highlighted_features verilerini oku
  • Bu verileri custom_json_fields içinde birleştir
  • Mevcut custom_json_fields verisi varsa üzerine yazma, birleştir
Mantık:
Her ürün için:
1. Mevcut certifications verisini oku → JSON parse et
2. Mevcut accessories verisini oku → JSON parse et
3. Mevcut target_industries verisini oku → JSON parse et
4. Mevcut competitive_advantages verisini oku → JSON parse et
5. Mevcut highlighted_features verisini oku → JSON parse et
6. Tümünü custom_json_fields altında birleştir:
{
"certifications": [eski veri],
"accessories": [eski veri],
...
}
7. custom_json_fields kolonunu güncelle

Beklenen Sonuç: Tüm veriler custom_json_fields'te toplandı

4

Test Et ve Doğrula

Ne yapılacak:

  • Rastgele 10 ürün seç
  • Eski kolonlardaki veri ile custom_json_fields'teki veriyi karşılaştır
  • Hiçbir veri kaybı olmadığını doğrula
  • Frontend'de ürün detay sayfasını kontrol et (veriler görünüyor mu?)
Test Senaryosu:
1. Ürün ID: 5 için certifications kolonunu oku
2. Aynı ürünün custom_json_fields.certifications verisini oku
3. İkisi aynı mı? Karşılaştır
4. Frontend'de /shop/cpd18fvl adresine git
5. Sertifikalar bölümü görünüyor mu?
6. JSON structure değişmediyse ✅

Beklenen Sonuç: Hiçbir veri kaybı yok, frontend çalışıyor

5

Eski Kolonları Temizle (OPSİYONEL)

Ne yapılacak:

  • Veriler başarıyla taşındıysa eski kolonları NULL yap veya DROP et
  • DİKKAT: Hemen DROP ETME! Önce 1-2 hafta bekle
  • Rollback ihtimaline karşı verileri sakla

⚠️ ÖNEMLİ UYARI

Eski kolonları hemen DROP ETME!
• Önce NULL yap (veriyi sakla)
• 1-2 hafta sistem sorunsuz çalışsın
• Sonra DROP işlemi yap
• Geriye dönüş için zaman kazan

Güvenli Temizleme:
1. Hafta (İlk hafta):
• Verileri custom_json_fields'e kopyala
• Eski kolonları olduğu gibi bırak
• Frontend'i custom_json_fields'ten okuyacak şekilde güncelle

2. Hafta (İkinci hafta):
• Sistem stabil mi kontrol et
• Hiçbir sorun yoksa eski kolonları NULL yap

3-4. Hafta:
• Hala sorun yoksa DROP işlemi yap

⚠️ Dikkat: Bu adım acele edilmemeli!

🔙 Rollback Planı

⚠️ Eğer Bir Şeyler Ters Giderse...

Senaryo 1: Migration Sırasında Hata

Çözüm:
1. Migration işlemini durdur
2. Adım 1'de aldığın backup'ı geri yükle
3. Sorunu tespit et, düzelt
4. Yeniden dene

Senaryo 2: Veri Kaybı Tespit Edildi

Çözüm:
1. custom_json_fields'i boşalt (UPDATE SET custom_json_fields = NULL)
2. Eski kolonlar hala doluysa sorun yok, devam et
3. Eski kolonlar boşsa backup'tan restore et
4. Frontend'i eski kolonları okuyacak şekilde geri al

Senaryo 3: Frontend Bozuldu

Çözüm:
1. Git ile frontend kodunu geri al (git reset)
2. Eski kolonları okuyacak şekilde kodu düzelt
3. Cache temizle: php artisan view:clear, responsecache:clear
4. Test et

✅ Rollback Güvenliği

Eski kolonları DROP etmediğin sürece her zaman geri dönebilirsin!
Bu yüzden acele etme, önce test et.

💡 Öneriler ve Dikkat Edilmesi Gerekenler

1. Test Ortamında Dene

Direkt canlı sistemde YAPMA! Önce local veya test ortamında tüm süreci uygula.

2. Küçük Batch'lerle Başla

Önce 10 ürün ile dene, sonra 100, sonra hepsini taşı. Tüm ürünleri birden taşıma!

3. Frontend Kodunu Hazırla

Migration yapmadan önce frontend'in custom_json_fields'i okuyabilecek şekilde hazır olması gerekir. İki yöntem:
Yöntem 1: Frontend'i önce güncelle (hem eski hem yeni kolonları okusun), sonra migrate et
Yöntem 2: Migrate et, sonra frontend'i güncelle (riskli!)

4. Admin Panel Uyumu

Admin panelde ürün düzenlerken custom_json_fields'e yazabilmesi gerekir. Form input'ları güncellenmeli.

5. API Endpoint'leri Kontrol Et

Eğer API varsa, certifications, accessories gibi alanları custom_json_fields'ten dönecek şekilde güncelle.

6. Cache Temizliği

Migration sonrası MUTLAKA cache'leri temizle:
• php artisan cache:clear
• php artisan view:clear
• php artisan responsecache:clear
• OPcache reset

🎯 Özet

Adım Süre Risk
1. Backup Al 10-15 dakika Düşük
2. JSON Yapısını Hazırla 30 dakika Düşük
3. Verileri Taşı 1-2 saat Orta
4. Test Et 2-3 saat Düşük
5. Eski Kolonları Temizle 1-2 hafta bekle Yüksek (acele etme!)

✅ Sonuç

Bu migration ile:
• Database 5 kolon temizlenecek
custom_json_fields sektörel alanları tutacak
• Sistem daha esnek olacak
• Yeni sektörler için kolon eklemek gerekmeyecek