Cyber2Tech

Üç pazaryerinden gelen sipariş,tek panelde toplanır.

Ürün
Kurjet
Tür
Kendi ürünümüz
Süre
Ağu 2025 – May 2026
Ekip
Backend 2 · mobil 3 · web 3 kişi
Yığın
C# / .NET · TypeScript
Kısaca

Bir sipariş restoran panelinden, Trendyol'dan, Yemeksepeti'nden ya da Getir'den ayrı ayrı geliyor; hangi kuryenin hangi paketi taşıyacağına da restoran ya da admin panelden elle karar veriyor. Kurjet'i, bu siparişleri tek panelde toplayan, kurye vardiyasını sahada konumla başlatan ve teslimatı adım adım izleten bir sistem olarak kurduk.

Problem
Üç ayrı kanaldan gelen sipariş
Çözüm
Tek panel + elle atama + canlı takip
01Problem

Üç pazaryeri, tek karar noktası.

Trendyol, Yemeksepeti ve Getir siparişleri backend'e ayrı kuyruk tüketicileriyle düşüyor; restoran panelinden girilen siparişler de aynı akışa katılıyor. Hangi kuryenin hangi paketi taşıyacağını sistem otomatik seçmiyor — restoran ya da admin panelden elle atıyor. Sipariş sayısı arttıkça bu üç kanalı tek yerde görüp doğru kuryeye yönlendirmek, işin kendisi hâline geliyor.

02Kısıtlar

Tasarımı üç kısıt belirledi.

K1

İki taraf aynı anda güncel görmeli

Restoran paneli ve kurye uygulaması ayrı cihazlarda çalışıyor; sipariş durumu SignalR üzerinden ikisine de aynı anda ulaşmalı, biri diğerinden geç haber almamalı.

K2

Kurye yolda, bağlantı zaman zaman zayıflıyor

Kurye uygulaması hareket halindeyken çalışmak zorunda; zayıf şebekede konum güncellemesi gecikebiliyor ya da tekrar gönderilebiliyor. İstemci eski ve yinelenen konumları eleyerek göstergeyi tutarlı tutuyor.

K3

Vardiya yalnız sahadayken başlar

Kurye vardiyayı başlatmak istediğinde restorana yakın olmalı; PostGIS ile hesaplanan mesafe tanımlı yarıçapın (varsayılan 500 metre) dışındaysa vardiya başlamıyor.

03 — Yaklaşım

Sipariş nereden gelirse gelsin, aynı akışa girer.

Sipariş restoran panelinden ya da Trendyol, Yemeksepeti ve Getir entegrasyonlarından kuyruklarla sisteme düşer; mutfak hazırlığını işaretler, restoran ya da admin paketi bir kuryeye elle atar. Kurye tek dokunuşla yola çıktığını, sonra teslim ettiğini işaretler; her adım restoran panelinde anında görünür.

  1. 01Sipariş oluştupanelden ya da pazaryerinden
  2. 02Hazırlanıyormutfakta, kurye henüz atanmadı
  3. 03Kurye seçildirestoran/admin elle atar
  4. 04Yoldakurye tek dokunuşla günceller
  5. 05Teslim edildigünlük sayaçlar güncellenir
paket-durumu.jsontemsilî · PacketInformation durum güncellemesi
{
  "id": "6f2b1e2a-••••",
  "status": "OnTheWay",
  "requestFrom": "Trendyol",
  "pickedUpAt": "15:41"
}
Denediğimiz ve bıraktığımız

Vardiyaya 18 saatlik bir üst sınır koyduk, sonra şimdilik devreden çıkardık. Aynı dönemde eklediğimiz önbellek katmanını da sistemden çıkardık.

04Ekranlar

Kurye nerede, restoran anında görsün.

Kurye konumları haritada gerçek zamanlı güncellenir.
Restoran, kurye vardiyalarını takvimde planlar ve topluca atar.
05Ne öğrendik

Bir sonraki projeye taşıdıklarımız.

  1. 0118 saatlik sabit bir vardiya sınırı koymak yerine, kuralı ne zaman gerektiğini netleştirip esnek bırakmayı öğrendik.
  2. 02Zayıf bağlantıda konum akışını düzeltmenin yolu daha fazla altyapı değil, istemci tarafında eski ve tekrarlı veriyi elemekten geçti.
  3. 03Kurye ataması gibi kritik bir kararı otomatikleştirmeden önce, insanın elle karar verdiği sürümü sağlam kurmayı tercih ettik.
Sonraki vaka
Woonzero

Sipariş kanallarınız
birbirine mi karışıyor?