İstek üzerine geziler

Bu dokümanda, Fleet Engine'daki isteğe bağlı seyahat hizmeti açıklanmaktadır. Bu doküman, Fleet Engine nedir? başlıklı makaleyi okuduğunuzu ve ihtiyacınız olan Fleet Engine hizmet özelliğinin farkında olduğunuzu varsaymaktadır.

Bu dokümanları okurken aşağıdakileri göz önünde bulundurun:

  • Seyahat ile bu seyahati tamamlayan sürücü arasındaki gerçek ilişkiyi modellemek için seyahatleri araçlara atarsınız. Fleet Engine'da araçların işleyiş şeklini daha iyi anlamak için Araçlara giriş başlıklı makaleyi okuyun.
  • Bu belgede, yalnızca isteğe bağlı seyahatler için geçerli olan bazı araç öğeleri de açıklanmaktadır.
  • Araç çağırma için Fleet Engine iki kaynak kullanır: Trip ve Vehicle. Fleet Engine hem gRPC hizmeti hem de REST arayüzleri sağlar:
    • TripService: gRPC ve REST
    • VehicleService: gRPC ve REST
    • Bu kılavuzda basitlik açısından gRPC örnekleri kullanılmıştır.

İsteğe bağlı yolculuk nedir?

Fleet Engine'da bir gezi, çeşitli ulaşım hedeflerine ulaşabilecek bir isteğe bağlı geziyi temsil eder. Örneğin:

  • Kişiler: Bir veya daha fazla kişiyi teslim alma ve bırakma konumları arasında taşıyın.
  • Yemek ve ürünler: Belirli bir işletme konumundan bir veya daha fazla yemek siparişi alıp bu siparişleri konumlarında bir veya daha fazla alıcıya teslim edin.

Gezi öğeleri

Aşağıdaki resimde bir seyahatin temel öğeleri gösterilmektedir: atanan araç kimliği, seyahat durumu ve seyahat yol işaretleri. Yol noktası türleri, yolculuğun aşamasına bağlı olarak değişir: teslim alma, ara nokta ve teslim etme. Herhangi bir seyahatte ara hedef veya yol noktası isteğe bağlıdır. Resim örneğinde, araç teslim alma konumuna ulaşmıştır.

Geziler için veri modeli

Arka uç, seyahatleri araçlara atarken araç için planlanmış diğer seyahatleri de bilmesi gerekir. Bu nedenle, aşağıdaki diyagramlarda ilişkili Vehicle kaynağının diyagramının yanında Trip kaynağının veri modeli gösterilmektedir. İki kaynak arasındaki ilişkileri keşfetmek için her iki şemayı da inceleyebilirsiniz. Aşağıdakileri göz önünde bulundurun:

  • Seyahatler, kimliğe göre bir araca atanır.
  • Seyahat-araç ilişkisi çoklu-tektir. Yani belirli bir seyahat, araç için planlanmış tek seyahat olabileceği gibi araç için planlanmış birçok seyahat arasından biri de olabilir.
  • Seyahat nesneleri, seyahat için iki adet yol noktası listesi içerir. Biri seyahat için, diğeri ise atanan araç içindir. Bu konu bu dokümanda daha ayrıntılı olarak açıklanmaktadır.
  • Araç çağırma hizmetinde, seyahat ara noktalarının listesi de bulunur. Bu liste bu dokümanda daha ayrıntılı olarak açıklanmıştır.

Yolculuk veri modeli

Araç veri modeli

Gezi türleri

Hizmetiniz bir gezi oluşturduğunda tripType alanını aşağıdakilerden biri olarak ayarlayabilir: EXCLUSIVE veya SHARED.

Özel geziler

Özel seyahat, yolculuğu diğer seyahatlerle çakışmayan ve aracın programındaki diğer seyahatlerden önce veya sonra tamamladığı bir seyahattir. Bu, sisteminiz özel gezileri atarken yalnızca bir araca atayabileceği ve bu gezilerin aynı anda değil, sırayla tamamlanacağı anlamına gelir. Örneğin, aşağıdaki özelliklerden herhangi birine sahip özel geziler oluşturabilirsiniz:

  • Programında başka seyahat bulunmayan bir araç için tek bir teslim alma ve tek bir teslim etme noktası olan seyahat.
  • Programında başka bir seyahat bulunmayan bir araç için teslim alma, ara yol noktası ve bırakma noktası içeren bir seyahat.
  • Araç için önceden planlanmış bir seyahatin sonuna eklenen teslim alma ve bırakma noktası olan bir seyahat. Bu durumlarda her gezi diğerine özeldir ancak geziler arka arkaya sıralanır. Ayrıca bu tür seyahatler, gerekirse ara hedefler içerebilir.

Paylaşılan geziler

Paylaşılan seyahat, yolculuğunun diğer seyahat rezervasyonlarıyla örtüşebileceği bir seyahattir. Sisteminiz bu seyahat türlerini, birbirine karışan hedeflerle eşzamanlı olarak gerçekleşecek şekilde atayabilir. Örneğin, bir seyahat için teslimat, başka bir seyahat için teslim alma işleminden sonra gerçekleşebilir. Ayrıca, paylaşılan gezilerde ara yollar kullanılamaz.

Genellikle, Seyahat senaryoları bölümünde gösterilen paylaşılan havuz oluşturma senaryolarından biri için paylaşılan bir seyahat kullanırsınız.

Gezi yol işaretleri

Google Haritalar'da yol noktası, genellikle bir enlem/boylam koordinatıyla tanımlanan, rota üzerindeki bir yerdir. İsteğe bağlı seyahatlerde bir yol noktası, aşağıdakiler gibi ek bilgiler içeren bir TripWaypoint nesnesi ile temsil edilir:

  • Gezi kimliği
  • WaypointType (alış, ara durak veya teslimat)
  • Önceki gezi yol noktası ile mevcut yol noktası arasındaki yol ve mesafe bilgileri
  • Gezi yol işaretine giden yol boyunca trafik koşulları
  • Seyahat süresi ve seyahat yol noktası için tahmini varış zamanı

Referansları inceleyin:

Gezi yol noktası türleri

Gezi yol noktası, bir araç yolculuğunun genel yaşam döngüsü ile ilgili olarak tanımlanır:

  • Araçtan teslim alma yol noktası: Bir sürücünün daha sonra teslim etmek üzere yemek siparişini teslim aldığında veya bir kişiyi daha sonra bırakmak üzere teslim aldığında olduğu gibi, yolculuğun başlangıcı veya başlangıç noktası için kullanılır.
  • Ara yol noktası: Sürücünün aynı rezervasyondaki bir yolcuyu bırakması ancak daha fazla yolcu olduğu için seyahatin tamamlanmaması gibi çeşitli amaçlarla kullanılabilen ara hedef. Bu yol noktası isteğe bağlıdır ve yalnızca özel geziler için kullanılabilir.
  • Bırakma yol noktası: Yolculuğun son konumu için kullanılır (ör. kalan yolcu araçtan çıktığında).

Gezi yol noktası listeleri

Trip öğesi, her biri TripWaypoint türündeki tekrarlanan bir alan olan iki yol noktası listesi içerir. Bir liste, seyahatin kendisi için gerekli alanları, diğeri ise seyahatle ilişkili araç için kalan tüm yol noktalarını tanımlar. Bu sayede yolculuğun tüm unsurları (seyahat ve araç yolculuğunun tamamı) hakkında tam bir görünüm elde edebilirsiniz.

  • Araç için kalan yol işaretleri: vehicle_waypoints adlı bir alandır. Araca atanan tüm seyahatler için kalan tüm yol noktalarını içerir.
  • Seyahat için kalan yol işaretleri: remaining_waypoints adlı bir alandır. Bu rota, aracın seyahatin son teslim noktasına ulaşmadan önce sırayla kat etmesi gereken yol noktalarını içerir. Senaryoları Seyahat senaryoları bölümünde bulabilirsiniz.
    • Programında başka seyahat bulunmayan bir araca atanan tek hedefli bir seyahat için, aracın teslim alma yol noktasından ayrılmadığı varsayılarak yalnızca teslim alma ve bırakma konumu dahil edilir.
    • Aracın diğer seyahatler için de planlandığı diğer seyahat senaryolarında, seyahat planındaki herhangi bir seyahat için kalan yol noktaları, aracın ilgili seyahatin teslim noktası yol noktasına ulaşmadan önce geçmesi gereken diğer seyahatlerdeki tüm yol noktalarını içerir. Örneğin, aracın A seyahati için teslim noktasına doğru yol aldığı art arda yapılan bir seyahatte, B seyahati için kalan yol noktaları A seyahati için teslim noktası yol noktasını içerir. Fleet Engine, bu bilgileri vehicle_waypoints alanını kullanarak hesaplar.

Trip öğesinin referansını inceleyin: gRPC veya REST.

Seyahat senaryoları

Aşağıdaki şemalarda, desteklenen çeşitli seyahat senaryoları gösterilmektedir. Bu senaryolarda yalnızca paylaşılan havuzlama gezisi SHARED türüne sahiptir; diğer tüm geziler EXCLUSIVE türündedir. Diyagramlarda, seyahat durumunun yanı sıra seyahat gerçekleştiren aracın kalan yol noktaları da gösterilir. Bu kavramlar bu kılavuzun ilerleyen bölümlerinde açıklanmaktadır.

Tek varış noktası olan gezi

Tek hedefli seyahat, bir alma ve bir bırakma konumu olan bir EXCLUSIVE seyahat Örneğin, bir sürücü bir yolcuyu bir yerden alıp başka bir yere götürür veya bir sürücü bir restorandan yemek siparişini alıp müşteriye teslim eder.

Birden çok hedef içeren geziler

Birden fazla hedefi olan seyahat, alma ve bırakma konumları arasında bir veya daha fazla ara hedef içeren bir EXCLUSIVE seyahattir. Örneğin, üç araç paylaşma müşterisi bir kişinin telefonundan birlikte araç rezervasyonu yapıyor ancak her birinin ayrı varış noktası var.

Art arda yapılan geziler

Arka arkaya geziler, birbiri ardına gerçekleşen bir dizi bağımsız gezi içeren EXCLUSIVE gezilerdir. Zincirdeki her gezi tek veya çok hedefli olabilir. Bu senaryoda, sürücü mevcut seyahati tamamlamadan önce başka bir müşteriyi almaya söz verir.

Bu seyahatler yalnızca arka arkaya planlamaya izin veren araçlara atanabilir. Vehicle REST, gRPC referansına bakın.

Ortak havuz gezileri

Paylaşılan havuz gezisi, diğer gezi türlerinden farklıdır. Öncelikle, EXCLUSIVE değil SHARED seyahati olmalıdır. Burada araç, özel yolculuklarda olduğu gibi sırayla değil, eşzamanlı olarak yolculukları yürütür. Paylaşılan bir toplu taşıma gezisi, yolculuğunu diğer gezilerle paylaşır ancak alma ve bırakma konumu bilgilerini geziler arasında paylaşmaz. Bunun yerine, her seyahat, rezervasyon yapan son kullanıcının kendi seyahati dışındaki diğer seyahatlerin alma veya varış bilgilerini görememesi için özel bir rezervasyondur. Örneğin:

  • Bir havaalanı servisi, çeşitli müşterileri evlerinden alıyor ve rota üzerindeki farklı havaalanı terminallerine bırakıyor. 2. kullanıcı, seyahatin ilerleme durumunu takip etmek için tüketici uygulamanızı kullanabilir. Ancak uygulama, seyahatlerinin bazı bölümleri çakışsa bile 2. kullanıcının yalnızca kendi seyahat bölümünü gösterir. 1. kullanıcının alındığı veya bırakılacağı yeri göstermez.
  • Bir yemek dağıtım sürücüsü, farklı müşteri adreslerine teslim etmek için aynı restorandan üç yemek siparişi alır. Tüketici uygulamanızı kullanan 3. kişi, yemeğinin nereden ve ne zaman alındığını ve sürücü rotasını görebilir ancak 1. ve 2. kişilerin yemek teslim noktalarını göremez.

Gezi durumu ve yaşam döngüsü

Bu bölümde, seyahat durumu ve bu durumun araç üzerindeki etkisi ile isteğe bağlı seyahatleri atarken ve yönetirken karşılaştığınız çeşitli senaryolar açıklanmaktadır.

Geziler genellikle oluşturulma aşamasından tamamlanma aşamasına kadar çeşitli aşamalardan geçer. Genel olarak bir gezi, durumuna bağlı olarak etkin veya etkin olmayan olabilir. Seyahat durumu, Fleet Engine'daki çeşitli kullanım alanı senaryolarını ve yolculuk sırasında aracın ilerleme durumunu belirleme olanağınızı etkiler. Bu dokümanın geri kalanında bu senaryolar ele alınmaktadır.

Aşağıdaki tabloda, etkin ve etkin olmayan türlere göre gezi durumu listelenmiştir.

Etkin gezi durumları Etkin olmayan seyahat durumları
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Gezi durumu ve kalan araç yol noktaları

Halihazırda bir seyahat gerçekleştiren bir araca ek seyahatler atarken, araç için kalan ara noktalar ile seyahat durumunun bu kalan ara noktaları nasıl etkilediği arasındaki ilişkiyi anlamanız gerekir.

Örneğin, yalnızca özel seyahatleri destekleyen ve bir seyahat tamamlamakta olan bir araca yeni bir araç paylaşma isteği atayabilirsiniz. Bu durumda, seyahati arka arkaya seyahat olarak modellersiniz. Bu tür bir gezi atarken sisteminiz, yeni gezi için yol noktalarının devam eden gezi için yol noktalarından sonra gerçekleşmesini sağlamalıdır.

Fleet Engine, araç yolculuğu sırasında önceki bir seyahat yol işaretini aracın kalan yol işaretleri listesinden yalnızca araç bir sonraki hedefe doğru yola çıktığını veya hedefe ulaştığını bildirdiğinde kaldırır. Yani aşağıdakilerden herhangi biri:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • TAMAMLANDI

Yolculuğun durumu COMPLETED olarak değiştiğinde Fleet Engine, yolculuğun son yol işaretini aracın kalan yol işareti listesinden kaldırır.

Buna karşılık, bir yol noktasına varıldığını belirten durum değişiklikleri genellikle aracın kalan yol noktası listesi üzerinde herhangi bir etki yapmaz:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Talep üzerine araç çağırma örneğiyle açıklamak gerekirse: Şoförün bir müşteriyi evinde aldıktan sonra müşterinin bir görevi tamamlamasını beklediği bir yere götürdüğünü ve ardından müşteriyi evine geri götürdüğünü varsayalım. Gezi ilk oluşturulduğunda üç yol noktası vardır: PICKUP, INTERMEDIATE ve DROPOFF. Aşağıdaki tabloda, yolculuğun çeşitli aşamalarında kalan yol noktaları için bir sorgunun sonuçları gösterilmektedir:

Gezi durumu Kalan yol işaretleri
ARRIVED_AT_PICKUP PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
COMPLETE PICKUP
INTERMEDIATE
DROPOFF

Yeniden atanan veya iptal edilen geziler için durum koşulları

Aşağıdakilerden herhangi birini yapmadan önce seyahat durumunu NEW veya CANCELED olarak ayarlamanız gerekir.

  • Bir seyahat için araç atamalarını değiştirirken. Örneğin, bir sürücü bir seyahat için araç atamasını reddederse ve bu atamanın farklı bir araca yeniden atanması gerekirse.
  • Bir seyahat için araç atamasını temizlerken. Örneğin, bir sürücü yoldayken bir geziyi iptal ederse ve araç atamasını temizlemek isterseniz durumun NEW veya CANCELED olması gerekir.

Seyahat durumuna göre arama sonuçları

Belirli bir araç için SearchTrips hizmetini kullandığınızda, SearchTripsResponse'daki etkin gezilerin listesini döndürür. Etkin geziler, Vehicle öğesinin active_trips alanında da görünür. Ayrıntılar için SearchTripsResponse referansına bakın: gRPC veya REST.

Bu nedenle, etkin durumu olan tüm geziler active_trips alanında gösterilir ancak tamamlanan veya iptal edilen geziler gösterilmez.

Sırada ne var?