dotCREA

Metal Maket: özel yazılımdan RGS'ye 4.357 ürünlük katalog taşıma ve özel tema

Metal Maket, 1954'ten bu yana aynı ailenin işlettiği bir die-cast model araç mağazasıdır. Mağaza, yıllardır kullandığı özel geliştirilmiş e-ticaret yazılımından RGS E-Ticaret platformuna taşındı. İş iki ayaktan oluştu: 50 MB'lık veritabanı dökümünden katalog, müşteri ve görsellerin aktarılması; ardından koleksiyoncunun aradığı modeli bulabilmesi için ölçek, marka ve üretici ekseninde çalışan bir vitrinin sıfırdan yazılması.

MüşteriMetal Maket · metalmaket.com
SektörDie-cast model araç koleksiyonu — 1954'ten beri
PlatformRGS E-Ticaret — Admin API üzerinden taşıma ve sıfırdan tema
Yıl2026
KapsamKatalog taşıma, Müşteri aktarımı, Tema geliştirme, Filtre ve arama kurgusu
4.357
Taşınan ürün
478
Kategori, ebeveyn sırasıyla
1.780
Ürün görseli
844
Müşteri, 227 adres kaydıyla
1.442
Ürün markayla eşlendi

Devraldığımız durum

  • Kaynak sistem, belgesi olmayan özel geliştirilmiş bir e-ticaret yazılımıydı; elimizdeki tek şey 50 MB'lık bir veritabanı dökümüydü ve ortamda çalışan bir veritabanı sunucusu yoktu.
  • Ürün açıklamalarının bir kısmı dışarıdan kopyalanmıştı; metnin içinde arayüz kodu artıkları duruyordu.
  • Kategori ağacı her üreticiyi ölçeğe göre dallandırdığı için 478 kategoriye şişmişti; gezinme okunamaz haldeydi.
  • Koleksiyoncu ürünü marka, ölçek ve model üreticisinin kesişiminde arıyor; kaynak sistemde bu üç eksen tek bir metin alanının içinde karışıktı.

Hedefimiz

  • Katalogu, müşteri kayıtlarını ve görselleri kayıpsız ve tekrar çalıştırılabilir biçimde taşımak.
  • Ölçek ve üretici bilgisini serbest metinden çıkarıp filtrelenebilir alanlara dönüştürmek.
  • Gezinmeyi kategori sayısına değil, koleksiyoncunun arama biçimine göre kurmak.
  • Bilgi sayfalarındaki metinleri gerçek iş kurallarıyla uyumlu hale getirmek.
Metal Maket ana sayfası, masaüstü görünüm
Ana sayfa — gelişmiş arama kartı ve vitrin

Dökümün okunması ve içeriğin temizlenmesi

  • 50 MB'lık döküm, veritabanı sunucusu kurulmadan akış halinde okundu; dosya hiçbir zaman bütünüyle belleğe alınmadı.
  • Ürün açıklamalarındaki yabancı arayüz kodu artıkları, boş bloklar ve karakter kodları temizlendi; gerçek metin korundu.
  • Türkçe karakterler için ayrı bir adres dönüşümü yazıldı; fiyatlar kuruş cinsine, telefonlar tek biçime çevrildi.
  • Aynı adı taşıyan 89 kardeş kategori grubunun adresleri, üst kategori adıyla nitelenerek çakışmadan kurtarıldı.

Kesintiye dayanıklı aktarım

  • Aktarım fazlara ayrıldı: kategoriler, müşteriler, ürünler, stok, görseller. Her faz tek başına çalıştırılabiliyor.
  • Oluşturulan her kayıt kaynak kimliğiyle birlikte durum dosyasına yazıldı; koşu durdurulduğunda kaldığı yerden devam ediyor, var olanı atlıyor.
  • Platformun dakikalık istek bütçesi tahmin edilmedi: yanıt başlığındaki kalan bütçe okunup hız buna göre uyarlandı.
  • Ağ kopmaları ve ölü bağlantılar için zaman aşımı ve artan beklemeli tekrar denemeler kuruldu; uzun koşular askıda kalmıyor.
  • Görseller ayrı bir adımda paralel indirilip diske alındı; 1.780 dosyanın tamamı eksiksiz yüklendi ve ürünlere bağlandı.
Ana sayfadaki ürün vitrini ve üretici rayı
Vitrin — üretici rayı ve haftanın gelenleri

Koleksiyoncunun aradığı üç eksen

  • Ölçek bilgisi yalnızca serbest metinde vardı (ürün adının önekinde, model kodunda ya da etiketlerde); kural tabanlı olarak çıkarılıp filtrelenebilir alana dönüştürüldü.
  • Model üreticisi, ürünün içe aktarıldığı kategori ağacının kökünden türetildi.
  • Araç markası bilerek özel alan yapılmadı; platformun kendi marka alanı kullanıldı, böylece marka sayfaları ve kısa adresler kendiliğinden geldi.
  • Dökümde markası olmayan kayıtlarda marka, ürün adı ve etiketlerden kurtarıldı; toplam 1.442 ürün markasına bağlandı.

Kategori ağacının sadeleştirilmesi

  • Ölçek kırılımı artık filtreyle yapıldığı için kategori ağacındaki ölçek dalları gereksizleşti.
  • Bu dallarda duran ürünler en yakın üretici kategorisine taşındı; 291 ölçek kategorisi vitrinden kaldırıldı.
  • Platformda kategori silme ucu bulunmadığı için kaldırma, kategoriyi pasifleştirerek yapıldı; veri kaybı olmadı.
Solido kategori sayfası, filtre kenar çubuğuyla
Kategori — aranabilir filtreler ve ürün ızgarası

Vitrin: arama ve filtre kurgusu

  • Ana sayfa; gelişmiş arama kartı, sol kategori rayı, öne çıkan modeller ve haftanın gelenleri bölümleriyle kurgulandı.
  • Kategori sayfasına alt kategori çipleri, sıralama çubuğu ve filtre kenar çubuğu eklendi.
  • Platformun yerel marka filtresi alfabetik ilk elliyi gösterip kategoriye göre daralmadığı için, kategori bazlı marka listesi katalog verisinden üretilip filtreye verildi.
  • Uzun filtre listelerine Türkçe karakterle doğru çalışan istemci taraflı arama kutusu eklendi.
  • Menü ve filtrelerdeki bağlantılar elle değil, gerçek katalog verisinden üretiliyor: yalnızca sonuç döndüren seçenekler basılıyor, çıkmaz sokak kalmıyor.

Platform kısıtlarının aşılması

  • Vektör dosya yüklemesi ve gömülü görsel adresleri desteklenmediği için ikonlar rasterize edilip bir kez yüklendi ve önbelleğe alındı.
  • Özel HTML alanında form ve betik kabul edilmediğinden gelişmiş arama, radyo düğmeleri ve saf CSS ile kuruldu; ulaşılabilir kombinasyonlar önceden hesaplanmış bağlantılar olarak basıldı.
  • Tema tarafında betik kanalı olmadığı için istemci davranışları platformun özel kod alanından yüklendi.
  • Global stil ve özel HTML karakter sınırları derleme sırasında denetleniyor; sessiz kırpılma riski ortadan kaldırıldı.
  • Platformun 2xx yanıtların içinde döndürdüğü uyarılar yüzeye çıkarıldı; düşen blok ve alanlar sessizce kaybolmuyor.
Die-cast model ürün sayfası, galeri ve satın alma alanı
Ürün sayfası — galeri, marka bağlantısı ve satın alma

Tasarım ve erişilebilirlik

  • Bakır tonlu sıcak bir palet kuruldu; kartlar, köşe yarıçapları ve gölgeler tek bir tasarım sistemi üzerinden tanımlandı.
  • Tasarımdaki bakır ton beyaz metinle erişilebilirlik eşiğinin altında kalıyordu; dolgu tonu koyulaştırılarak eşik aşıldı, aksan tonu olduğu gibi korundu.
  • Tema tek komutla kurulup güncelleniyor; sabit blok kimlikleri sayesinde yeniden çalıştırma kopya üretmiyor, yerinde güncelliyor.

Bilgi sayfalarının gerçek metinle düzeltilmesi

  • Kurulumda oluşturulan örnek metinler gerçek iş kurallarıyla çelişiyordu; örneğin kapıda ödeme kabul edilmediği halde sayfada kabul ediliyor yazıyordu.
  • Ödeme, teslimat, hakkımızda ve iletişim sayfaları mağazanın kendi yayınlanmış metinleriyle değiştirildi; her metnin kaynağı kayda geçirildi.
  • Sayfa gövdeleri düz metin olarak basıldığı için biçim başlık, liste ve paragraf yapısına dönüştürüldü; cümlelere dokunulmadı.

Sonuç

4.357 ürünlük katalog, müşteri kayıtları ve görselleriyle birlikte yeni platforma taşındı; ölçek ve üretici bilgisi serbest metinden çıkarılıp filtreye dönüştüğü için koleksiyoncu aradığı modele marka, ölçek ve üretici kesişiminden ulaşabiliyor. Kategori ağacı 478 düğümden gezilebilir bir yapıya indi, tema ve katalog verisi tek komutla yeniden üretilebiliyor.

Süreç
1. aşama
Dökümün çözümlenmesi, içerik temizliği ve veri modelinin çıkarılması
2. aşama
Kategori, müşteri, ürün, stok ve görsel aktarımı
3. aşama
Ölçek, üretici ve marka eksenlerinin kurulması, kategori ağacının sadeleştirilmesi
4. aşama
Tema, arama ve filtre kurgusu
5. aşama
Bilgi sayfalarının düzeltilmesi ve yayın
Teknik künye
RGS E-Ticaret Admin APIPythonÖzel yazılımdan veri aktarımıAkış halinde SQL döküm çözümlemeKod üretimiyle beslenen tema verisiCSS tabanlı filtre arayüzüErişilebilirlik kontrastı denetimi