Giriş
Bazı projeler teknik olarak karmaşık olmaz; organizasyonel olarak karmaşık olur.
Geçen yıl çalıştığımız bir e-ticaret müşterisi tam da bu kategorideydi. Birden fazla pazaryerinde aktif olan, günlük onlarca sipariş işleyen, yedi kişilik bir operasyon ekibine sahip olan bu firma — kağıt üzerinde gayet sağlıklı görünüyordu. Ama içeriye girince tablo farklıydı.
Bu yazıda o firmada yürüttüğümüz uçtan uca dijital dönüşüm sürecini, aldığımız kararların gerekçelerini ve inşa ettiğimiz sistemin bileşenlerini aktarıyorum.
Başlangıç Noktası: Mevcut Durumun Analizi
Firmaya ilk gittiğimizde üç gün boyunca yalnızca izledik. Kod yazmadık, öneri sunmadık. Sadece operasyonun nasıl aktığını anlamaya çalıştık.
Gördüklerimiz şunlardı:
Sipariş yönetimi: Trendyol, Hepsiburada ve kendi e-ticaret sitesinden gelen siparişler üç farklı panel üzerinden takip ediliyordu. Her sabah operasyon sorumlusu bu üç paneli açıyor, siparişleri bir Excel dosyasına manuel olarak aktarıyor ve depo ekibine WhatsApp üzerinden iletiyordu.
Depo ve toplama: Depo çalışanları bu Excel listesini kağıda yazdırıp raf raf dolaşarak ürünleri topluyordu. Kağıt üzerinde ürün kodları yoktu — yalnızca ürün isimleri. Yanlış ürün toplama vakası günde ortalama 4-5 sipariş etkiliyor, bu da iade ve müşteri şikayetine dönüşüyordu.
Paketleme: Toplayıcıdan gelen ürünler paketleme masasında tek tek kontrol edilmeksizin kutulanıyordu. Eksik veya fazla ürün paketlere giriyordu. Kargo barkodları ayrı bir bilgisayardan manuel olarak oluşturuluyor ve sıklıkla yanlış siparişle eşleştiriliyordu.
Fatura: Muhasebe, sipariş tamamlandığında WhatsApp üzerinden bilgilendiriliyor ve faturayı manuel olarak kesiyordu. Fatura kesmek geciktiğinde veya eksik bilgi iletildiğinde işlemler askıda kalıyordu.
Kargo: Firma, MNG, Yurtiçi ve Sürat olmak üç farklı kargo şirketiyle çalışıyordu. Her kargo şirketi için ayrı bir panel açılıyor, barkodlar ayrı ayrı oluşturuluyordu. Hangi siparişin hangi kargo şirketiyle gönderildiğini takip etmek ciddi emek gerektiriyordu.
Üç günlük gözlem sonucunda çıkardığımız tablo şuydu: Firmadaki her çalışan iyi niyetli ve çalışkandı. Sorun insan değil, sistem yokluğuydu.
Mimari Karar: Neyi Neden Yaptık
Böyle bir operasyonu dijitalleştirirken iki farklı yaklaşım mümkündü:
Seçenek A — Hazır ERP: Piyasada bu tür operasyonlar için çok sayıda hazır ERP çözümü var. Hızlı kurulum, düşük ilk maliyet, ancak her firmanın iş akışına tam oturmuyor ve özelleştirme ihtiyacı doğduğunda pahalı hale geliyor.
Seçenek B — Entegre özel sistem: Firmanın mevcut ERP altyapısını (Logo Tiger 3) merkeze alarak, üstüne özelleştirilmiş bir operasyon katmanı inşa etmek.
Müşteriyle birlikte Seçenek B'ye karar verdik. Gerekçe basitti: Firma yıllar içinde Logo Tiger'a önemli bir veri birikimi oluşturmuştu. Stok kodları, müşteri kayıtları, tedarikçi bilgileri buradaydı. Sıfırdan başlamak bu birikimi çöpe atmak demekti.
Tasarladığımız sistemin katmanları şöyle şekillendi:

Bileşen 1: Pazaryeri Unified Paneli
İlk ve en kritik adım, üç farklı pazaryerinden gelen siparişleri tek bir arayüzde toplamaktı.
Entegrasyon Mimarisi
Trendyol ve Hepsiburada'nın resmi API'larını kullandık. Kendi e-ticaret sitesi WooCommerce üzerinde çalışıyordu, bu da REST API entegrasyonunu nispeten kolaylaştırdı.
Her pazaryeri için ayrı bir adaptör modülü yazdık. Bu modüller, farklı veri formatlarını (her pazaryerinin sipariş nesnesi birbirinden farklıdır) ortak bir şemaya dönüştürüyor:
{
"order_id": "UNI-2024-00841",
"source": "trendyol",
"source_order_id": "TY-998821234",
"customer": {
"name": "Ahmet Yılmaz",
"address": "Bağcılar, İstanbul",
"phone": "05xx xxx xx xx"
},
"items": [
{
"sku": "PRD-00192",
"name": "Termos 500ml Siyah",
"quantity": 2,
"barcode": "8680000192001"
}
],
"cargo_company": "mng",
"status": "confirmed",
"created_at": "2024-03-14T09:22:00Z"
}Bu unified şema sayesinde sistemin geri kalan tüm katmanları pazaryerinden bağımsız hale geldi. Yeni bir kanal eklenmesi gerektiğinde (örneğin Amazon veya Çiçeksepeti) yalnızca yeni bir adaptör yazılması yeterli.
Logo Tiger Senkronizasyonu
Onaylanan her sipariş otomatik olarak Logo Tiger'a irsaliye olarak aktarıldı. Bu entegrasyon Logo'nun SOAP tabanlı web servis API'sı üzerinden sağlandı.
Sipariş onaylandı (Trendyol)
│
▼
Unified Panel'de görüntülendi
│
▼
Logo Tiger'a irsaliye oluşturuldu
│
▼
Depo terminal sistemine iletildi
Stok Yönetimi
Unified Panel, Logo Tiger'daki stok durumunu gerçek zamanlı olarak okuyordu. Stok sıfırlandığında veya belirli bir eşiğin altına düştüğünde ürün otomatik olarak ilgili pazaryerlerinde pasife alınıyordu. Bu, "sipariş geldi ama ürün yok" senaryolarının önüne geçti.
Bileşen 2: Depo Terminal Sistemi
Unified Panel'de onaylanan siparişler, artık WhatsApp veya Excel üzerinden değil, doğrudan depo terminallerine iletiliyordu.
Terminal Altyapısı
Depoya dört adet endüstriyel Android terminal yerleştirdik (Zebra TC21). Bu cihazlar WiFi üzerinden merkezi sisteme bağlanıyor ve her toplayıcıya kendi görev listesini sunuyordu.
Terminal ekranında her sipariş için şunlar görünüyordu:
- Sipariş numarası ve kaynağı
- Ürün listesi (barkod, isim, adet)
- Her ürünün raf konumu (Örn: A-12-3 → A koridoru, 12. raf, 3. göz)
- Toplama sırası (en verimli rota algoritmasıyla hesaplanmış)
Barkod Doğrulama
Toplayıcı her ürünü toplarken terminaldeki barkod okuyucuyla ürünü taramak zorundaydı. Sistem, taranan barkodun siparişteki ürünle eşleşip eşleşmediğini anlık olarak doğruluyordu.
Yanlış ürün taranırsa: Terminal sesli ve görsel uyarı veriyordu. İşlem devam etmiyordu.
Doğru ürün taranırsa: Ekrandaki liste güncelleniyor, toplanan ürün yeşil olarak işaretleniyordu.
Siparişteki tüm ürünler tamamlandığında terminal, toplayıcıya kasasını hangi paketleme istasyonuna götürmesi gerektiğini gösteriyordu.
Görev Dağılımı ve Çakışma Yönetimi
Birden fazla toplayıcı aynı anda çalıştığında aynı ürünü aynı anda iki farklı kişinin toplamaya çalışması sorununu çözmek gerekiyordu. Basit bir kilit mekanizması tasarladık: Bir toplayıcı belirli bir ürünü toplamaya başladığında, o stok kalemi diğer toplayıcıların listesinde kilitli görünüyor ve bir sonraki mevcut alternatif raf konumuna yönlendirme yapılıyordu.
Bileşen 3: Paketleme İstasyonu
Bu projenin en ilgi çekici bileşeniydi.
Klasik paketleme sürecinde bir çalışan kağıt listesiyle gelir, ürünleri tek tek sayar, kutuya koyar ve kapatır. Hata yapma olasılığı yüksektir çünkü süreç tamamen dikkat ve deneyime bağlıdır.
Biz bu süreci bir yazılım katmanıyla destekleyen bir istasyon tasarladık.
Fiziksel Kurulum
Her paketleme istasyonu şunlardan oluşuyordu:
- 24" dokunmatik monitör (tezgah üstü, eğimli tutucu)
- Sabit barkod okuyucu (eller serbest)
- Termal etiket yazıcı (kargo barkodları için)
- USB bağlantılı web kamerası (kutu içi fotoğraflama için)
- Küçük form faktörlü PC
Sipariş Tanıma: İki Yöntemli Doğrulama
Toplayıcı kasasıyla paketleme istasyonuna geldiğinde sistem onu iki farklı yöntemle tanıyabiliyordu:
Yöntem 1 — Kasa Numarası: Her toplama kasasının dışında QR kod vardı. İstasyondaki okuyucuya kasa tutulduğunda sistem, o kasaya atanmış siparişi otomatik olarak ekrana getiriyordu.
Yöntem 2 — Görsel Tanıma: Kasa içeriği kameraya gösterildiğinde, basit bir görüntü işleme katmanı kutudaki ürünlerin barkodlarını okuyarak siparişi eşleştiriyordu. Bu yöntem kasa QR kodunun hasar görmesi veya okunamaz olması durumunda yedek olarak devreye giriyordu.
Son Kontrol Akışı
Sipariş ekrana geldiğinde paketleme çalışanı şu adımları izliyordu:
- Ürün doğrulama: Ekranda siparişteki tüm ürünler listeleniyor. Çalışan her ürünü barkod okuyucudan geçiriyor.
- Görsel kontrol: Tüm ürünler kutuya yerleştirildikten sonra kamera bir fotoğraf çekiyor. Bu fotoğraf hem kayıt altına alınıyor hem de yapay zeka modeline gönderiliyor.
- Kutu boyutu tahmini: Yapay zeka modeli (OpenAI Vision API), kutu içeriğinin fotoğrafını analiz ederek tahmini bir kutu boyutu öneriyor. Bu öneri çalışanın kutunun boyutunu seçmesine yardımcı oluyor ve hem malzeme israfını hem de kargo maliyetini optimize ediyor.
- Paketleme onayı: Çalışan "Onayla" butonuna bastığında sistem kargo etiketini otomatik olarak oluşturuyor ve termal yazıcıdan çıkartıyor.
Kasa geldi → QR / Görsel tanıma → Sipariş ekrana geldi
│
▼
Her ürün barkod taraması (doğrulama)
│
▼
Kutu içi fotoğraf → AI → Kutu boyutu önerisi
│
▼
Çalışan onayı → Kargo etiketi yazıcıdan çıktı
│
▼
Sipariş "Paketlendi" statüsüne geçti → Logo Tiger güncellendi
Kayıt ve İzlenebilirlik
Her paketin fotoğrafı, hangi çalışanın hangi saatte paketlediği, kullanılan kutu boyutu ve kargo etiketi bilgisi sistemde saklandı. Müşteri şikayeti geldiğinde ("Ürün eksikti") ilgili siparişin paket fotoğrafına saniyeler içinde ulaşmak mümkündü.
Bileşen 4: Unified Kargo Katmanı
Firma üç farklı kargo şirketiyle çalışıyordu ve her birinin entegrasyon yöntemi farklıydı:
- MNG Kargo: REST API
- Yurtiçi Kargo: SOAP Web Servisi
- Sürat Kargo: Dosya tabanlı entegrasyon (CSV yükleme)
Bu üçünü tek bir katmanın arkasına koyduk. Sistem, hangi kargo şirketiyle çalışıldığından bağımsız olarak aynı arayüzü sunuyordu.
Kargo Seçim Mantığı
Hangi siparişin hangi kargoyla gönderileceği kurallar motoruyla belirlendi:
Eğer sipariş kaynağı = Trendyol → Yurtiçi (anlaşmalı)
Eğer sipariş kaynağı = Hepsiburada → MNG (anlaşmalı)
Eğer kendi site + desi ≤ 5 → Sürat
Eğer kendi site + desi > 5 → Yurtiçi
Eğer teslimat adresi = belirli iller → [özel kural]
Bu kurallar yönetici panelinden düzenlenebilir yapıdaydı, kod değişikliği gerektirmiyordu.
Barkod Standardizasyonu
Her kargo şirketinin barkod formatı farklı olduğundan, kargo etiketi şablonları tek bir yapıya sokuldu. Paketleme istasyonu, hangi kargo şirketi olursa olsun aynı yazıcıdan doğru formatta etiket üretebiliyordu.
Bileşen 5: Fatura Otomasyonu
Sipariş "Kargoya Verildi" statüsüne geçtiğinde sistem Logo Tiger üzerinden otomatik olarak e-fatura oluşturuyordu.
Bu bileşen teknik olarak en basit olanıydı ama operasyonel etkisi büyüktü. Muhasebe artık fatura kesmek için sipariş takibi yapmak zorunda değildi; sistem gerekli tüm bilgileri (müşteri, ürünler, fiyatlar, KDV) ERP'deki kayıtlardan çekiyor ve faturayı otomatik oluşturuyordu.
E-fatura gönderimi GİB entegrasyonuyla doğrudan yapıldı.
Sipariş gecesi itibarıyla tüm faturalar kesilmiş oluyordu.
Bileşen 6: Yönetici Dashboard
Tüm bu sistemi izleyebilmek için ayrı bir dashboard inşa ettik.
Dashboard'da gerçek zamanlı olarak şunlar görünüyordu:
Operasyonel metrikler:
- Bekleyen / toplanan / paketlenen / kargolanan sipariş sayısı
- Günlük sipariş hacmi ve kaynaklara göre dağılım
- Ortalama paketleme süresi (istasyon bazında)
- Aktif toplayıcı sayısı ve tamamladıkları sipariş adedi
Kargo performansı:
- Kargo şirketi bazında ortalama teslimat süresi
- İade ve hasar oranları
- Maliyet analizi (desi başına maliyet, kargo şirketi karşılaştırması)
Stok uyarıları:
- Kritik stok seviyesindeki ürünler
- Son 7 günde en çok satılan ürünler
Sonuçlar
Sistem devreye alındıktan sonraki ilk dört haftada ölçtüğümüz değişimler:
| Metrik | Önce | Sonra | Değişim |
|---|---|---|---|
| Yanlış ürün toplama vakası (günlük) | 4.8 | 0.3 | ↓ %94 |
| Ortalama sipariş işleme süresi | 18 dk | 7 dk | ↓ %61 |
| Fatura kesme gecikmesi | 1-3 gün | Aynı gün | — |
| Paketleme hatası (haftalık) | 12 | 1 | ↓ %92 |
| Kargo etiket hatası (haftalık) | 7 | 0 | ↓ %100 |
Bunların yanında müşteri şikayet oranında belgelenmiş bir düşüş yaşandı. Daha önemlisi, operasyon ekibi aynı iş hacmini daha az yorgunlukla taşır hale geldi.
Teknik Yığın
| Katman | Teknoloji |
|---|---|
| Backend | Node.js + Express |
| Veritabanı | PostgreSQL |
| ERP Entegrasyonu | Logo Tiger SOAP API |
| Pazaryeri API | Trendyol Partner API, Hepsiburada Merchant API |
| E-ticaret | WooCommerce REST API |
| Kargo Entegrasyonu | MNG API, Yurtiçi SOAP, Sürat CSV |
| Fatura | GİB e-Fatura API |
| Görüntü İşleme | OpenAI Vision API |
| Depo Terminalleri | Android (Zebra TC21), özel uygulama |
| Frontend | React + TypeScript |
| Altyapı | Self-hosted (müşteri sunucusu) |
Öğrendiklerimiz
Süreç analizi koddan önce gelir. Projeye başlamadan önce harcadığımız üç günlük gözlem süreci, sonraki haftalardaki geliştirme sürecini doğrudan şekillendirdi. Neye ihtiyaç duyulduğunu anlamadan yazılan kod, büyük ihtimalle yeniden yazılır.
Her sistemi değiştirmeye gerek yok. Logo Tiger kötü bir sistem değildi; eksik olan onu besleyen ve ondan beslenen operasyon katmanıydı. Mevcut altyapıyı atmak yerine üzerine inşa etmek hem maliyeti hem de riski düşürdü.
Kullanıcı direnci en büyük değişken. Teknik sistemin çalışması yetmez; depo çalışanlarının terminali benimsemesi, paketleme operatörünün onay adımını atlamaya çalışmaması gerekir. Bu nedenle arayüzlerin çok basit tutulması ve ilk hafta sahada aktif destek sağlanması kritikti.
Görsel kayıt her şeyi değiştirir. Paketleme fotoğrafları başlangıçta "müşteri şikayeti durumunda kanıt" olarak düşünülmüştü. Zamanla çalışanların davranışını da değiştirdiğini fark ettik — kamera olduğunu bilen çalışan daha dikkatli paketliyor.
Kapanış
Eğer benzer bir operasyonel karmaşa yaşayan bir firmada çalışıyorsanız veya böyle bir dönüşüm projesini değerlendiriyorsanız, sorularınız için iletişime geçebilirsiniz.
