رحلات عند الطلب

يصف هذا المستند خدمة الرحلات عند الطلب في Fleet Engine. من المفترض أنّك قرأت المقالة ما هو Fleet Engine؟ وأنك على دراية بإمكانات خدمة Fleet Engine المحدّدة التي تحتاج إليها.

أثناء قراءة هذه الوثائق، ضع في اعتبارك ما يلي:

  • يمكنك تحديد رحلات إلى مركبات كوسيلة لتمثيل العلاقة الحقيقية بين الرحلة والسائق الذي يُكملها. يمكنك الاطّلاع على مقدّمة عن المركبات للتعرّف بشكل أفضل على آلية عمل المركبات في Fleet Engine.
  • يوضّح هذا المستند أيضًا بعض عناصر المركبات التي تنطبق فقط على الرحلات عند الطلب.
  • تستخدم Fleet Engine للرحلات عند الطلب مصدرَين: Trip وVehicle. يوفر Fleet Engine خدمة gRPC وواجهات REST على حد سواء:
    • TripService: gRPC وREST
    • VehicleService: gRPC وREST
    • ولتبسيط الأمر، يستخدم هذا الدليل أمثلة على gRPC.

ما هي رحلة عند الطلب؟

في Fleet Engine، تمثل الرحلة رحلة عند الطلب يمكنها تحقيق مجموعة متنوعة من أهداف النقل. على سبيل المثال:

  • الأشخاص: يمكنك نقل شخص واحد أو أكثر من مواقع استلام الطلب إلى مواقع التسليم.
  • الطعام والسلع: اختر طلب طعام واحدًا أو أكثر من موقع نشاط تجاري معيّن وسلِّم هذه الطلبات إلى مستلم واحد أو أكثر في مواقعهم.

عناصر الرحلة

يعرض الرسم التوضيحي التالي العناصر الأساسية للرحلة: رقم تعريف المركبة، وحالة الرحلة، ونقاط طريق الرحلة. تختلف أنواع نقاط الطريق حسب مرحلة الرحلة: الاستلام، والوسيط، والتسليم. وفي أي رحلة، تكون الوجهة الوسيطة أو نقطة الطريق اختيارية. في مثال الصورة، وصلت المركبة إلى موقع الاستلام

نموذج البيانات للرحلات

نظرًا لأن الخلفية تعين رحلات إلى المركبات، يجب أن تكون على علم أيضًا بالرحلات الأخرى المجدولة للمركبة. لهذا السبب، توضّح المخطّطات التالية نموذج البيانات لمورد Trip إلى جانب الرسم البياني لمورد Vehicle المرتبط به. يمكنك مراجعة كلا المخططين لاستكشاف العلاقات بين المصدرين، مع مراعاة ما يلي:

  • يتم تخصيص الرحلات لمركبة من خلال رقم التعريف.
  • ارتباط المركبات الرحلات متعدّد إلى واحد. وهذا يعني أنّ رحلة معيّنة قد تكون الرحلة الوحيدة المجدولة للمركبة أو قد تكون واحدة من عدة رحلات للمركبة.
  • تحتوي عناصر الرحلة على قائمتين بنقاط الطرق للرحلة، إحداهما للرحلة نفسها والأخرى للمركبة المخصّصة. تم شرح ذلك بمزيد من التفصيل في هذه الوثيقة.
  • تتضمّن المركبة المتوفّرة عند الطلب أيضًا قائمة بنقاط الطريق الموضّحة بشكل أكثر تفصيلاً في هذا المستند.

نموذج بيانات الرحلة

نموذج بيانات المركبة

أنواع الرحلات

عندما تنشئ خدمتك رحلة، يمكنها ضبط الحقل tripType على أيّ مما يلي: EXCLUSIVE أو SHARED.

رحلات حصرية

الرحلة الحصرية هي تلك التي لا تتداخل رحلتها مع الرحلات الأخرى، ورحلة تكتملها المركبة إما قبل الرحلات الأخرى أو بعدها ضمن جدولها الزمني. وهذا يعني أنه عندما يعيّن نظامك رحلات حصرية، يمكنه فقط أن يعيّنها لمركبة لإتمامها بالتسلسل وليس بالتزامن. للتوضيح، يمكنك إنشاء رحلات حصرية بأي من الخصائص التالية:

  • رحلة تتضمن نقطة استلام واحدة ووجهة واحدة لمركبة بدون رحلات أخرى ضمن جدولها الزمني
  • رحلة تتضمن نقطة استلام أو نقطة طريق متوسطة وتوصيل مركبة بدون أي رحلة أخرى في جدولها الزمني
  • هي رحلة تشمل خدمة استلام وتوصيل إلى نهاية رحلة المركبة المحددة مسبقًا. في هذه الحالات، تكون كل رحلة حصرية للرحلات الأخرى، ولكن يتم ترتيب الرحلات بشكل تدريجي. بالإضافة إلى ذلك، يمكن أن تشمل هذه الرحلات وجهات متوسطة إذا لزم الأمر.

الرحلات المشترَكة

الرحلة المشتركة هي رحلة يمكن أن تتداخل رحلتها مع حجوزات رحلات أخرى. بالنسبة إلى أنواع الرحلات هذه، يمكن أن يحددها نظامك لإجراءها بالتزامن مع الوجهات المتداخلة. على سبيل المثال، قد يحدث الانسحاب في رحلة واحدة بعد الاستلام لرحلة أخرى. بالإضافة إلى ذلك، قد لا تستخدم الرحلات المشتركة نقاط الطريق المتوسطة.

في العادة، تستخدم رحلة مشترَكة لأحد سيناريوهات التجميع المشترَكة الموضّحة في قسم سيناريوهات الرحلات.

نقاط طريق الرحلة

بالنسبة إلى خرائط Google، تمثل نقطة الطريق مكانًا على طول مسار، ويتم تحديده عادةً من خلال إحداثيات خطوط الطول/العرض. بالنسبة إلى الرحلات عند الطلب، يتم تمثيل النقطة الوسيطة بعنصر TripWaypoint الذي يحتوي على معلومات إضافية مثل ما يلي:

  • رقم تعريف الرحلة
  • WaypointType، إما استلام الطلب أو الحصول عليه من خلال متوسط أو التسليم
  • معلومات المسار والمسافة بين نقطة الطريق السابقة والنقطة الحالية
  • أحوال حركة المرور على طول المسار إلى نقطة طريق الرحلة
  • وقت السفر والوقت المقدر للوصول إلى نقطة الطريق

الاطّلاع على المراجع:

أنواع نقاط الطريق للرحلة

يتم تحديد نقطة طريق الرحلة وفقًا لدورة الحياة العامة لرحلة المركبة:

  • نقطة استلام الطعام: تُستخدم هذه العلامة في نقطة انطلاق الرحلة أو بدايتها، كما هو الحال عندما يلتقط السائق طلب طعام من أجل توصيله في وقت لاحق، أو عندما يحضر السائق شخص ما للذهاب في وقت لاحق.
  • نقطة طريق متوسطة: والوجهة المتوسطة التي يمكن استخدامها لأغراض متنوعة، مثل هبوط أحد السائقين من جهة الحجز نفسها، إلا أنّ الرحلة نفسها لم تكتمل لأنّ عدد أكبر من الركاب لا يزالون. وتُعدّ هذه النقطة الاختيارية اختيارية ويمكن استخدامها فقط للرحلات الحصرية.
  • نقطة طريق التسليم: تُستخدَم هذه الوظيفة للموقع الجغرافي النهائي للرحلة، مثلاً عند خروج الراكب المتبقّي من المركبة.

قوائم نقاط الطريق للرحلة

يتضمن الكيان Trip قائمتين من نقاط الطريق، وكل منهما عبارة عن حقل متكرر من النوع TripWaypoint. تصف إحداهما هذه الحقول الضرورية للرحلة نفسها، والأخرى لوصف جميع نقاط الطريق المتبقية للمركبة المرتبطة بالرحلة. يتيح لك ذلك الحصول على صورة كاملة لجميع عناصر الرحلة: الرحلة ورحلة المركبة بأكملها.

  • نقاط الطريق المتبقية للمركبة: حقل باسم vehicle_waypoints. ويحتوي التقرير على جميع نقاط الطريق المتبقية لجميع الرحلات المخصّصة للمركبة.
  • نقاط الطريق المتبقية للرحلة: حقل باسم remaining_waypoints. يحتوي على نقاط الطريق التي يجب أن تسير فيها المركبة بالتسلسل قبل نقطة الانزال الأخيرة للرحلة. راجِع السيناريوهات في سيناريوهات الرحلات.
    • بالنسبة إلى رحلة وجهة واحدة مخصّصة لمركبة بدون رحلات أخرى ضمن جدولها الزمني، لن يشمل ذلك سوى استلام الطلب وموقع التسليم، وبافتراض أنّ المركبة لم تغادر نقطة طريق الاستلام.
    • بالنسبة إلى أي سيناريو آخر للرحلة يتم فيه أيضًا تحديد موعد للمركبة لرحلات أخرى، فإن نقاط الطريق المتبقية لأي رحلة في برنامج الرحلة ستشمل جميع نقاط الطريق من الرحلات الأخرى التي يجب أن تتجاوزها السيارة قبل الوصول إلى نقطة النقل لتلك الرحلة. على سبيل المثال، في رحلة الذهاب والعودة حيث تكون المركبة في طريقها إلى النزول في الرحلة أ، ستشمل نقاط الطريق المتبقية للرحلة "ب" نقطة الانسحاب للرحلة أ. يحتسب Fleet Engine هذه المعلومات باستخدام الحقل vehicle_waypoints.

اطّلِع على مرجع الكيان Trip: gRPC أو REST.

سيناريوهات الرحلات

توضّح المخططات التالية مجموعة متنوعة من سيناريوهات الرحلات المتاحة. في هذه السيناريوهات، تكون رحلة التجميع المشتركة فقط من النوع SHARED، وجميع الحالات الأخرى هي EXCLUSIVE. تُظهر المخططات أيضًا حالة الرحلة ونقاط الطريق المتبقية للمركبة التي تنفذ الرحلة، والمفاهيم الموضحة لاحقًا في هذا الدليل.

رحلة باتجاه واحد

تشمل رحلة وجهة واحدة الرحلة EXCLUSIVE مع موقع جغرافي واحد لتسليم الطلب. على سبيل المثال، يلتقط السائق راكبًا من موقع جغرافي وينقله إلى موقع آخر، أو يسترجع السائق طلب توصيل طعام من مطعم وينقله إلى عميل.

رحلات متعددة الوجهات

الرحلة المتعددة الوجهات هي رحلة EXCLUSIVE تتضمّن وجهة وسيطة واحدة أو أكثر بين الموقعَين الجغرافيَّين حيث يتم الاستلام من الفندق. على سبيل المثال، يحجز ثلاثة عملاء يستخدمون خدمات مشاركة الرحلات رحلة معًا من هاتف شخص واحد، ولكن لكل منهم وجهات منفصلة.

رحلات متعاقبة

الرحلات المتتالية هي EXCLUSIVE تشمل سلسلة من الرحلات المستقلة التي تقع واحدة تلو الأخرى. ويمكن أن تكون كل رحلة في السلسلة وجهة واحدة أو وجهات متعددة. في هذا السيناريو، يلتزم السائق بإحضار عميل آخر قبل إكمال الرحلة الحالية.

يمكن تخصيص هذه الرحلات فقط للمركبات التي تتيح جدولة الرحلات بشكل متتالٍ. يمكنك الاطّلاع على مرجع Vehicle REST وgRPC.

رحلات التجميع المشتركة

تختلف رحلة التجميع المشترَكة عن أنواع الرحلات الأخرى. أولاً، يجب أن تكون الرحلة SHARED وليس رحلة EXCLUSIVE. في هذه الحالة، تنفّذ المركبة الرحلات بشكل متزامن وليس بالتسلسل كما هو الحال مع الرحلات الحصرية. على الرغم من أنّ رحلة التجميع المشتركة تشارك رحلتها مع رحلات أخرى، فهي لا تشارك معلومات عن الموقع الجغرافي لاستلام الطلبات وتوصيلها بين الرحلات. بدلاً من ذلك، تقدّم كل رحلة حجزًا حصريًا لا يتيح للمستخدم النهائي الذي حجز رحلة واحدة الاطّلاع على معلومات حول وجهة الركوب أو الوجهة الخاصة بأي رحلة أخرى، ولكن لا يمكنه الاطّلاع على معلومات حول وجهة الطلب. مثلاً:

  • تنقل خدمة نقل من المطار وإليه العديد من العملاء في أماكن إقامتهم ويودعهم في محطات مطار مختلفة على طول المسار. يمكن للشخص الثاني استخدام تطبيقك للمستهلكين لتتبُّع مستوى تقدّم الرحلة، لكنّ تطبيقه يعرض فقط الجزء الخاص بالرحلة وليس المكان الذي تم نقل الشخص الأول فيه أو المكان الذي سينسحب منه الشخص الأول، على الرغم من التداخل بين أجزاء من رحلته.
  • يختار سائق توصيل الطعام ثلاثة طلبات طعام من نفس المطعم لتوصيلها إلى مساكن عملاء مختلفة. باستخدام تطبيق المستهلك، يمكن للشخص 3 الاطّلاع على مكان ووقت استلام الطعام ورؤية مسار السائق، ولكن لا يمكنه رؤية مواقع تسليم الطعام للشخصين 1 و2.

حالة الرحلة ودورة حياتها

يصف هذا القسم حالة الرحلة وتأثيرها في المركبة والسيناريوهات المختلفة التي تواجهها أثناء تعيين وإدارة الرحلات عند الطلب.

تتجه الرحلة بشكل عام عبر ولايات مختلفة، من الإنشاء إلى الإكمال. بشكل عام، يمكن أن تكون الرحلة نشطة أو غير نشطة، بناءً على حالتها. تؤثر حالة الرحلة في مجموعة متنوعة من سيناريوهات حالات الاستخدام في Fleet Engine، بالإضافة إلى إمكانية التعرّف على مدى تقدّم المركبة خلال الرحلة. يناقش الجزء المتبقي من هذا المستند تلك السيناريوهات.

يدرج الجدول التالي حالة الرحلة حسب الأنواع النشطة وغير النشطة.

حالات الرحلة النشطة حالات الرحلة غير النشطة
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

حالة الرحلة ونقاط الطريق المتبقية للمركبة

عند تعيين رحلات إضافية لمركبة تجري بالفعل رحلة، يجب أن تفهم العلاقة بين نقاط الطريق المتبقية للمركبة وكيف تؤثر حالة الرحلة على نقاط الطريق المتبقية هذه.

على سبيل المثال، يمكنك تعيين طلب جديد لمشاركة الرحلات لمركبة تسمح بالرحلات الحصرية فقط وتكون في منتصف رحلة. في هذه الحالة، قد تعرض الرحلة على أنها رحلة متعاقبة. عند تعيين هذه الرحلة، يجب أن يتأكد نظامك من أن نقاط المسار للرحلة الجديدة تحدث بعد نقاط الرحلة الحالية.

أثناء رحلة المركبة، يزيل Fleet Engine نقطة الرحلة السابقة من قائمة نقاط الطريق المتبقية فقط عندما تُبلغ المركبة عن أنّها في طريقها إلى الوجهة التالية أو عندما تكون مكتملة. وهذا يعني أيًا مما يلي:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • مكتمل

عندما تتغير حالة الرحلة إلى "COMPLETED"، يزيل Fleet Engine النقطة الفاصلة الأخيرة للرحلة من قائمة النقاط المتبقية للمركبة.

على النقيض من ذلك، فإن تغييرات الحالة التي تشير إلى الوصول إلى نقطة وسيطة ليس لها عادةً تأثير على قائمة نقاط الطريق المتبقية للمركبة:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

لتوضيح مثال للرحلة عند الطلب: افترض أن السائق قد اصطحب عميلاً من مكان إقامته، وينقله إلى مكان ينتظر فيه العميل إتمام المهمة، ثم ينقله مرة أخرى إلى مكان إقامته. عند إنشاء الرحلة في البداية، كانت تتضمّن ثلاث نقاط مسار: PICKUP وINTERMEDIATE وDROPOFF. يوضح الجدول التالي نتائج الاستعلام عن نقاط الطريق المتبقية في حالات مختلفة من الرحلة:

حالة الرحلة نقاط الطريق المتبقية
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

متطلبات حالة الرحلات التي تمت إعادة إسنادها أو إلغاؤها

قبل أن تتمكّن من تنفيذ أيّ من الإجراءات التالية، يجب ضبط حالة الرحلة على NEW أو CANCELED.

  • عند تغيير عمليات تخصيص المركبات لرحلة: على سبيل المثال، إذا رفض أحد السائقين تخصيص مركبة لرحلة ما ويحتاج إلى إعادة تعيينها لمركبة مختلفة.
  • عند إنهاء تخصيص مركبة لرحلة: على سبيل المثال، إذا ألغى أحد السائقين رحلة على مساره وأردت محو معلومات تخصيص المركبة، يجب أن تكون الحالة إما NEW أو CANCELED.

نتائج البحث استنادًا إلى حالة الرحلة

عند استخدام خدمة SearchTrips لمركبة معيّنة، تعرض الخدمة قائمة الرحلات النشطة في SearchTripsResponse. تظهر الرحلات النشطة أيضًا في الحقل active_trips الخاص بالكيان Vehicle. يُرجى الاطّلاع على مرجع SearchTripsResponse للحصول على التفاصيل: gRPC أو REST.

بالتالي، تظهر جميع الرحلات التي تحمل الحالة "نشطة" في الحقل active_trips، ولكن لا تظهر الرحلات المكتملة أو المُلغاة.

الخطوات التالية