Pazaryeri siparişlerinde mükerrer kaydı önlemek
Problem
Pazaryeri siparişleri sisteme tek bir yoldan girmiyordu: düzenli senkron işi, pazaryerinin anlık bildirimleri, panelden elle “siparişleri çek” ve stok senkronu aynı sipariş oluşturma akışını çağırabiliyordu. Bu yollar gerçekten aynı anda çalışabildiği için aynı sipariş zaman zaman saniyeler arayla iki kez açılıyor, ikisi de kargoya verilebiliyordu. Sonradan bu kayıtları silen bir temizlik işi vardı; sorunu çözmüyor, gizliyordu.
Trendyol tarafında ikinci bir sorun vardı: müşteri siparişin bir kısmını iptal ettiğinde Trendyol eski paketi kapatıp kalan ürünlerle yeni bir paket açıyor. Bunu bilmeyen sistem siparişi kapanmış pakette bırakıyor, aynı iptali defalarca işleyebiliyordu.
Yaklaşım
- Önce kök neden: “Her şeyi kuyruğa alalım” önerisini inceledik; sorun kuyruk değil, bu yolların ortak bir kilidi paylaşmamasıydı.
- Sipariş başına ortak kilit: Beş entegrasyonun (Trendyol, Hepsiburada, N11, Propars, ikas) bütün sipariş oluşturma yolları aynı kilidi kullanıyor. Kilit alınamazsa iş kısa süre sonra yeniden deneniyor.
- Yeni paketi takip etmek: Trendyol’da kısmi iptal geldiğinde yeni paket bulunuyor, sipariş ona taşınıyor ve ürünler paket içeriğiyle eşleştiriliyor.
- Silmek yerine işaretlemek: İptal edilen satırlar artık silinmiyor, iptal olarak işaretleniyor; faturası kesilmiş siparişler böylece bozulmuyor.
- Son savunma hattı: Aynı siparişin iki kez kaydedilmesini veritabanı seviyesinde engelleyen bir kural.
Öğrenilenler
- Çift kayıt sorunlarında sonradan temizlemek yerine kaydın iki kez oluşmasını en baştan engellemek gerekiyor.
- Pazaryeri dokümantasyonu eksik kaldığında gerçek verileri toplayıp davranışı onlardan çıkarmak en güvenilir yol oldu.
Benim katkım
Kök neden analizini, çözüm tasarımını, uygulamayı ve testleri ben yaptım.
Yazılım Danışmanı