Saha operasyonu yürüten firmalarla konuştuğumuzda hep aynı cümleyle başlıyor sohbet: "Şoförün nerede olduğunu bilmiyoruz." İlk bakışta küçük, günlük bir operasyonel rahatsızlık gibi görünüyor. Oysa bu tek cümlenin arkasında üç ayrı kör nokta birikiyor: görünürlük, hakediş ve denetim. Birini çözmeden diğer ikisi de çözülmüyor, çünkü üçü aynı veri eksikliğinden besleniyor.
Bu yazıda bir personel servis yönetim sistemi üzerinde geliştirdiğimiz canlı konum takibi altyapısından yola çıkarak, saha operasyonunda gerçek zamanlı görünürlüğü nasıl kurduğumuzu anlatıyoruz.
Görünürlük eksikliği aslında nerede başlıyor
Çoğu firma personel taşımacılığı, saha ekibi sevkiyatı ya da kurumsal ulaşım gibi operasyonları hâlâ WhatsApp grupları ve elle tutulan Excel dosyalarıyla yönetiyor. Şoför bir gruba "yola çıktım" yazıyor, bir süre sonra "vardım" yazıyor. İkisi arasında geçen süre bir kara kutu. Sefer gecikti mi, nerede gecikti, kaç dakika durdu — bunların hiçbiri kayıt altında değil.
Bu durumda üç şey aynı anda bozuluyor. Birincisi görünürlük: yöneticinin elinde o anki durumu gösteren bir ekran yok, sadece mesaj geçmişi var. İkincisi hakediş: acenteye ya da şoföre ne kadar ödeneceği, gerçekleşen sefere değil, beyan edilen sefere göre hesaplanıyor. Üçüncüsü denetim: bir ihlal (geç kalkış, güzergah dışına çıkma, durak atlama) yaşandığında bunu kanıtlayacak bir iz yok, sadece karşılıklı anlatılan hikâyeler var.
Canlı konum takibi aslında ne çözüyor
Geliştirdiğimiz sistemde şoför mobil uygulaması konum verisini düzenli aralıklarla sunucuya gönderiyor, sunucu bu veriyi Socket.io üzerinden yönetim paneline ve ilgili acente paneline anlık olarak yayıyor. Burada teknik tercih önemli: anlık yayın için klasik istek-cevap (REST polling) yerine soket tabanlı bir bağlantı kullanmak gerekiyor, çünkü her birkaç saniyede bir "şimdi neredesin" diye sormak hem sunucuyu hem de mobil cihazın pil ömrünü gereksiz yere yoruyor.
Konum verisinin kendisi kadar, bu veriyle ne yapıldığı da önemli. PostGIS kullanarak coğrafi sorguları veritabanı katmanında çalıştırıyoruz: bir aracın belirlenen güzergahtan ne kadar saptığı, bir durağa ne zaman yaklaştığı, bir bölgeye giriş-çıkış yaptığı gibi sorular, uygulama katmanında değil veritabanında cevaplanıyor. Bu, hem performans hem de doğruluk açısından fark yaratıyor — binlerce konum noktasını uygulama tarafında karşılaştırmak yerine, veritabanının bunun için tasarlanmış fonksiyonlarını kullanıyorsunuz.
Çok kiracılı yapılarda görünürlük daha da karmaşıklaşıyor
Tek bir şoförün konumunu göstermek nispeten kolay bir problem. Gerçek zorluk, aynı sistemde birden fazla tarafın aynı anda, ama birbirinin verisini görmeden çalışması gerektiğinde ortaya çıkıyor. Geliştirdiğimiz sistemde 13 farklı taşıma acentesi aynı platformu kullanıyor; her acente kendi şoförlerini, kendi seferlerini ve kendi hakedişini görüyor, ama başka bir acentenin verisine erişemiyor.
Bu izolasyonu arayüzde bir filtre olarak değil, backend katmanında bir kural olarak kurmak gerekiyor. Aksi halde bir gün bir sorgu parametresi değişir, bir acente başka bir acentenin konum verisini görür ve bu basit bir arayüz hatası değil, ciddi bir veri sızıntısı olur. Multi-tenant bir yapıda görünürlük sağlarken asıl mesele "veriyi nasıl gösteririz" değil, "veriyi kime göstermemiz gerektiğini nasıl garanti ederiz" sorusu.
Görünürlük, hakediş ve denetimi otomatikleştiriyor
Konum ve sefer verisi gerçek zamanlı ve güvenilir şekilde toplandığında, bunun üzerine iki şey doğal olarak oturuyor. Birincisi otomatik hakediş hesaplama: acente ya da şoför ödemesi, elle girilen bir rakama değil, gerçekleşen sefer verisine dayanıyor. Excel'e veri aktarma, ay sonunda uzlaşma toplantısı yapma ihtiyacı ortadan kalkıyor.
İkincisi ihlal yönetimi. Bir sefer güzergahtan saptığında ya da bir durak atlandığında bu sistemde otomatik olarak işaretleniyor ve iz bırakıyor. Bu, "o gün öyle olmadı" tartışmalarını büyük ölçüde ortadan kaldırıyor; çünkü artık karşılıklı anlatıya değil, kayıtlı veriye bakılıyor.
Bunların ikisi de aslında aynı temel fikrin uzantısı: operasyonu gözlemlenebilir hale getirdiğinizde, üzerine kurduğunuz her süreç daha az tartışmalı, daha az manuel hale geliyor.
Görünürlük güvenlikten ayrı düşünülemez
Konum verisi hassas bir veridir — bir kişinin nerede olduğunu gösterir. Bu yüzden canlı konum takibi kurarken görünürlüğü artırmakla veriyi korumak arasında bir denge kurmak gerekiyor. Sistemde OTP ile giriş, JWT token rotasyonu ve loglarda kişisel verilerin maskelenmesi gibi önlemler bu dengenin parçası. Görünürlüğü artırmak, herkesin her şeyi görmesi anlamına gelmemeli; kimin neyi ne zaman gördüğü de denetim altında olmalı.
Aynı sorun, daha büyük ölçekte
Kurumsal ölçekli ulaşım operasyonlarında bu sorun küçülmüyor, büyüyor. Araç sayısı arttıkça, güzergah çeşitliliği arttıkça, manuel takibin kırılma noktası daha hızlı geliyor. Bu tür operasyonları dijitalleştirirken kurduğumuz web ve mobil bileşenlerin ortak paydası yine aynı: operasyonun o anki durumunu, geçmişe bakmadan, canlı olarak görebilmek.
Sonuç olarak
Canlı konum takibi tek başına bir özellik değil, saha operasyonunu yöneten her sürecin üzerine oturduğu bir temel. Görünürlük olmadan hakediş tartışmalı kalıyor, denetim kanıtsız kalıyor, yönetici de operasyonu değil operasyonun anlatısını yönetmiş oluyor. Bizim bu konudaki yaklaşımımız şu: önce veriyi doğru ve güvenli şekilde gerçek zamanlı hale getirin, geri kalan süreçler — hakediş, denetim, raporlama — bu temel üzerine çok daha az sürtünmeyle oturur.
- Gerçek zamanlı veri için soket tabanlı bağlantı, polling'e tercih edilmeli.
- Coğrafi sorgular uygulama katmanında değil veritabanı katmanında (PostGIS gibi) çalıştırılmalı.
- Çok kiracılı yapılarda veri izolasyonu backend kuralı olmalı, arayüz filtresi değil.
- Görünürlük artarken veri güvenliği (OTP, token rotasyonu, PII maskeleme) aynı özenle kurulmalı.
Top comments (0)