- تمثيل JSON
- الشحن
- VisitRequest
- LatLng
- Waypoint
- الموقع الجغرافي
- TimeWindow
- مركبة
- TravelMode
- RouteModifiers
- VehicleInfo
- TrailerInfo
- HazardousGoodsType
- UnloadingPolicy
- LoadLimit
- الفاصل
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- الصف
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
يحتوي نموذج الشحنة على مجموعة من الشحنات التي يجب تنفيذها بواسطة مجموعة من المركبات، مع تقليل التكلفة الإجمالية إلى أدنى حدّ، وهي مجموع ما يلي:
- تكلفة توجيه المركبات (مجموع التكلفة لكل إجمالي الوقت والتكلفة لكل وقت السفر والتكلفة الثابتة على جميع المركبات)
- عقوبات الشحن غير المُنفَّذة.
- تكلفة المدة الزمنية الإجمالية للشحنات
| تمثيل JSON |
|---|
{ "shipments": [ { object ( |
| الحقول | |
|---|---|
shipments[] |
مجموعة الشحنات التي يجب تنفيذها في النموذج |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات |
globalStartTime |
وقت البدء والانتهاء العام للنموذج: لا يمكن اعتبار الوقت خارج هذا النطاق صالحًا. يجب أن تكون الفترة الزمنية للنموذج أقل من سنة، أي يجب أن تكون الفترة الزمنية بين عند استخدام حقول يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
globalEndTime |
في حال ترك السياسة بدون ضبط، سيتم استخدام يوم 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000، nanos: 0) وفقًا بالتوقيت العالمي المنسّق (UTC) كإعداد تلقائي. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
globalDurationCostPerHour |
"المدة العالمية" للخطة الإجمالية هي الفرق بين أقرب وقت بدء فعّال وآخر وقت انتهاء فعلي لجميع المركبات. يمكن للمستخدمين تحديد تكلفة لكل ساعة لهذه الكمية لمحاولة تحسينها من أجل إكمال المهمة في أقرب وقت ممكن، على سبيل المثال. يجب أن تكون هذه التكلفة بالوحدة نفسها التي تستخدمها السمة |
durationDistanceMatrices[] |
لتحديد مصفوفات المدة والمسافة المستخدمة في النموذج. إذا كان هذا الحقل فارغًا، سيتم استخدام "خرائط Google" أو المسافات الجيوديسية بدلاً من ذلك، استنادًا إلى قيمة الحقل أمثلة على استخدام هذه الكلمة في جملة:
|
durationDistanceMatrixSrcTags[] |
علامات تحدد مصادر مصفوفات المدة والمسافة؛ وتحدد تتوافق العلامات مع |
durationDistanceMatrixDstTags[] |
العلامات التي تحدّد وجهات مصفوفتَي المدة والمسافة؛ تتوافق العلامات مع |
transitionAttributes[] |
تمّت إضافة سمات الانتقال إلى النموذج. |
shipmentTypeIncompatibilities[] |
مجموعات من أنواع الشحن غير المتوافقة (راجِع |
shipmentTypeRequirements[] |
مجموعات متطلبات |
precedenceRules[] |
مجموعة من قواعد الأسبقية التي يجب فرضها في النموذج |
maxActiveVehicles |
تفرض قيودًا على الحد الأقصى لعدد المركبات النشطة. تكون المركبة نشطة إذا كان مسارها يتيح شحنة واحدة على الأقل. ويمكن استخدام ذلك للحد من عدد المسارات في حالة وجود سائقين أقل من المركبات في حالة وجود أسطول من المركبات غير متجانس. سيختار التحسين بعد ذلك أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن تكون إيجابيًا تمامًا. |
الشحن
شحن سلعة واحدة، من إحدى عمليات الاستلام إلى إحدى عمليات التسليم لكي يتم اعتبار الشحنة مكتملة، يجب أن تزور مركبة فريدة أحد مواقع الاستلام (وتُخفض سعتها الاحتياطية وفقًا لذلك)، ثم تزور أحد مواقع التسليم لاحقًا (وبالتالي تُعيد زيادة سعتها الاحتياطية وفقًا لذلك).
| تمثيل JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| الحقول | |
|---|---|
displayName |
الاسم المعروض الذي يحدّده المستخدم للشحنة يمكن أن يصل طوله إلى 63 حرفًا وقد يستخدم أحرف UTF-8. |
pickups[] |
مجموعة بدائل الاستلام المرتبطة بالشحن في حال عدم تحديد موقع جغرافي، يجب أن تنتقل المركبة إلى موقع جغرافي يتوافق مع عمليات التسليم. |
deliveries[] |
مجموعة من بدائل التسليم المرتبطة بالشحنة في حال عدم تحديد موقع جغرافي، يجب أن تزور المركبة موقعًا جغرافيًا يتطابق مع مواقع الاستلام. |
loadDemands |
متطلبات تحميل الشحنة (مثل الوزن والحجم وعدد المنصات وما إلى ذلك) يجب أن تكون المفاتيح في الخريطة معرّفات تصف نوع الحمولة المقابلة، ويُفضّل أن تتضمّن أيضًا الوحدات. على سبيل المثال: "weight_kg" و"volume_gallons" و"pallet_count" وما إلى ذلك. إذا لم يظهر مفتاح معيّن في الخريطة، يتم اعتبار الحمولة المقابلة فارغة. عنصر يحتوي على قائمة بأزواج |
allowedVehicleIndices[] |
مجموعة المركبات التي يمكنها تنفيذ هذه الشحنة وإذا كانت فارغة، قد تتمكّن جميع المركبات من أدائها. يتم توفير المركبات من خلال الفهرس في قائمة " |
costsPerVehicle[] |
تحدد التكلفة التي يتم تكبدها عند تسليم هذه الشحنة من قبل كل مركبة. في حال تحديدها، يجب أن تتضمّن أيًا مما يلي:
ويجب أن تكون هذه التكاليف في الوحدة نفسها مثل |
costsPerVehicleIndices[] |
مؤشرات المركبات التي ينطبق عليها |
pickupToDeliveryAbsoluteDetourLimit |
تُستخدَم لتحديد الحد الأقصى للوقت المطلق للمسار غير المباشر مقارنةً بأقصر مسار من نقطة الاستلام إلى نقطة التسليم. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على استلام الطلبات وتوصيلها على الأقل. على سبيل المثال، يجب ألا تكون أقصر وقت ممكن للانتقال مباشرةً من خيار الاستلام المحدّد إلى خيار التسليم المحدَّد. بعد ذلك، يفرض ضبط في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من 2017/2010، لا تتوفّر الإحالات الناجحة إلا عندما لا تعتمد مُدد السفر على المركبات. المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
pickupToDeliveryTimeLimit |
تحدّد المدة القصوى للمدة من بداية الاستلام إلى بداية تسليم الشحنة. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. ولا تعتمد هذه الطريقة على البدائل التي يتم اختيارها لاستلام الطلبات وتوصيلها، ولا تعتمد على سرعة المركبة. ويمكن تحديد ذلك إلى جانب قيود الانحراف القصوى: سيراعي الحلّ كلا المواصفات. المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
shipmentType |
سلسلة غير فارغة تحدّد "نوعًا" لهذه الشحنة يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات بين تختلف عن قيمة |
label |
تحدّد هذه السمة تصنيفًا لهذه الشحنة. تم الإبلاغ عن هذا التصنيف في الرد في |
ignore |
إذا كانت القيمة هي "صحيح"، يمكنك تخطّي عملية الشحن هذه وعدم تطبيق سمة يؤدي تجاهل شحنة إلى حدوث خطأ في التحقّق عند توفّر أي يُسمح بتجاهل الشحنة التي يتم تنفيذها في |
penaltyCost |
وفي حال عدم اكتمال الشحنة، تُضاف هذه العقوبة إلى التكلفة الإجمالية للمسارات. تُعتبر الشحنة مكتملة إذا تم زيارة أحد خيارات الاستلام والتسليم. يمكن التعبير عن التكلفة بالوحدة نفسها المستخدَمة في جميع الحقول الأخرى ذات الصلة بالتكلفة في النموذج، ويجب أن تكون موجبة. ملاحظة مهمة: في حال عدم تحديد هذه العقوبة، سيتم اعتبارها غير محدودة، أي أنّه يجب إكمال الشحنة. |
pickupToDeliveryRelativeDetourLimit |
تحدّد هذه السمة الحد الأقصى لمدة التنقّل النسبية مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى التسليم. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على استلام الطلبات وتوصيلها على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من خيار استلام الطلب المحدّد مباشرةً إلى خيار التسليم المحدّد. بعد ذلك، يفرض ضبط في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من 2017/2010، لا تتوفّر الإحالات الناجحة إلا عندما لا تعتمد مُدد السفر على المركبات. |
VisitRequest
طلب زيارة يمكن إجراؤها بواسطة مركبة: لها موقع جغرافي (أو موقعان، راجِع المعلومات أدناه)، وأوقات افتتاح وإغلاق ممثّلة بنوافذ زمنية، ومدة الخدمة (الوقت الذي تقضيه المركبة بعد وصولها لجمع السلع أو تسليمها).
| تمثيل JSON |
|---|
{ "arrivalLocation": { object ( |
| الحقول | |
|---|---|
arrivalLocation |
تشير هذه السمة إلى الموقع الجغرافي الذي تصل إليه المركبة عند إجراء |
arrivalWaypoint |
نقطة الطريق التي تصل إليها المركبة عند إجراء |
departureLocation |
الموقع الجغرافي الذي تغادر منه المركبة بعد إكمال هذا |
departureWaypoint |
نقطة التوقف التي تغادر منها المركبة بعد إكمال هذا |
tags[] |
تحدِّد هذه السياسة العلامات المرفقة بطلب الزيارة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
timeWindows[] |
الفترات الزمنية التي تحدّ من وقت الوصول في إحدى الزيارات يُرجى العِلم أنّه قد تغادر المركبة خارج فترة وقت الوصول، أي أنّ وقت الوصول + المدة لا يجب أن يكونا ضمن فترة زمنية. يمكن أن يؤدي ذلك إلى "وقت الانتظار" إذا وصلت المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية منفصلة، بمعنى ألا تتداخل أي فترة زمنية مع نافذة أخرى أو تكون بجانبها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط |
duration |
مدة الزيارة، أي الوقت الذي تقضيه المركبة بين الوصول والمغادرة (تُضاف إلى وقت الانتظار المحتمَل، راجِع المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار مركبة. ويمكن استخدامها لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة للشحنة. يجب أن تكون هذه التكلفة في الوحدة نفسها التي تشملها السمة |
loadDemands |
تحميل طلبات طلب الزيارة هذا يشبه هذا الحقل حقل عنصر يحتوي على قائمة بأزواج |
visitTypes[] |
تحدِّد أنواع الزيارة. ويمكن استخدام ذلك لتخصيص الوقت الإضافي اللازم لإتمام هذه الزيارة في مركبة (اطّلع على يمكن أن يظهر النوع مرّة واحدة فقط. |
label |
تُحدِّد تصنيفًا لهذا |
LatLng
عنصر يمثّل زوجًا من خطوط العرض/خطوط الطول ويتم التعبير عن ذلك في صورة زوج من الزوجين لتمثيل درجات الطول والعرض والدرجات. يجب أن يتوافق هذا العنصر مع معيار WGS84 ما لم يُذكر خلاف ذلك. يجب أن تكون القيم ضمن النطاقات العادية.
| تمثيل JSON |
|---|
{ "latitude": number, "longitude": number } |
| الحقول | |
|---|---|
latitude |
خط العرض بالدرجات. يجب أن يكون ضمن النطاق [-90.0, +90.0]. |
longitude |
خط الطول بالدرجات. يجب أن يكون في النطاق [ -180.0، +180.0]. |
النقطة الوسيطة
تُغلِّف نقطة طريق. تشير نقاط الطرق إلى مواقع وصول ومغادرة طلبات الزيارات، ومواقع بدء المركبات ونهايتها.
| تمثيل JSON |
|---|
{ "sideOfRoad": boolean, // Union field |
| الحقول | |
|---|---|
sideOfRoad |
اختياريّ. يشير إلى أن موقع نقطة الطريق هذه يعني أن يكون لها تفضيل للمركبة لتوقف عند جانب معين من الطريق. عند تعيين هذه القيمة، يمر المسار عبر الموقع بحيث يمكن للمركبة التوقف في جانب الطريق الذي يتحيز الموقع نحوه من وسط الطريق. لا يعمل هذا الخيار مع وضع السفر "المشي". |
حقل الاتحاد location_type. طرق مختلفة لتمثيل موقع جغرافي يمكن أن يكون location_type واحدًا فقط مما يلي: |
|
location |
نقطة محدّدة باستخدام إحداثيات جغرافية، بما في ذلك عنوان اختياري |
placeId |
معرّف مكان نقطة الاهتمام المرتبط بنقطة الطريق |
الموقع الجغرافي
تُحاط بموقع جغرافي (نقطة جغرافية وعنوان اختياري).
| تمثيل JSON |
|---|
{
"latLng": {
object ( |
| الحقول | |
|---|---|
latLng |
الإحداثيات الجغرافية لنقطة الطريق |
heading |
عنوان البوصلة المرتبط باتجاه تدفق حركة المرور. تُستخدَم هذه القيمة لتحديد جانب الطريق الذي سيتم استخدامه لعمليات الاستلام والإرجاع. يمكن أن تتراوح قيم الاتجاه بين 0 و360، حيث يحدد الصفر اتجاهًا شماليًا تمامًا، ويحدد 90 اتجاهًا شرقيًا تمامًا، وما إلى ذلك. |
TimeWindow
تفرض الفترات الزمنية قيودًا على وقت الحدث، مثل وقت الوصول في إحدى الزيارات، أو وقت بدء مركبة معيّنة وانتهائها.
تفرض حدود الفترة الزمنية الثابتة، startTime وendTime، أقرب وقت وآخر وقت للحدث، على النحو التالي: startTime <= event_time <=
endTime. يُعرب عن الحد الأدنى لفترة زمنية مبدئية، softStartTime، عن تفضيله لوقوع الحدث في softStartTime أو بعده من خلال تحمُّل تكلفة متناسبة مع المدة التي تسبق softStartTime بوقت وقوع الحدث. يُعرِّف الحد الأقصى لفترة زمنية مبدئية، softEndTime، عن تفضيله لوقوع الحدث في softEndTime أو قبله من خلال تحمُّل تكلفة متناسبة مع المدة بعد softEndTime وقوع الحدث. يجب أن تكون القيم startTime وendTime وsoftStartTime وsoftEndTime ضمن الحدود الزمنية العامة (راجِع ShipmentModel.global_start_time وShipmentModel.global_end_time) وأن تلتزم بما يلي:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
| تمثيل JSON |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| الحقول | |
|---|---|
startTime |
وقت بدء الفترة الزمنية الثابتة أمّا في حال عدم تحديده، فسيتم ضبطه على طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
endTime |
وقت انتهاء نافذة الوقت الصعب. أمّا في حال عدم تحديده، فسيتم ضبطه على طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softStartTime |
وقت بدء الفترة الزمنية يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
softEndTime |
وقت الانتهاء البسيط للنافذة الزمنية. طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
costPerHourBeforeSoftStartTime |
تكلفة في الساعة تُضاف إلى التكاليف الأخرى في النموذج في حال وقوع الحدث قبل softStartTime، ويتم احتسابها على النحو التالي: يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا إذا تم ضبط softStartTime. |
costPerHourAfterSoftEndTime |
تكلفة في الساعة مضافة إلى التكاليف الأخرى في النموذج إذا وقع الحدث بعد ويجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا في حال ضبط السمة |
مركبة
تصمم مركبة في مشكلة شحن. سيؤدي حلّ مشكلة الشحن إلى إنشاء مسار يبدأ من startLocation وينتهي في endLocation لهذه المركبة. المسار هو تسلسل من الزيارات (راجِع ShipmentRoute).
| تمثيل JSON |
|---|
{ "displayName": string, "travelMode": enum ( |
| الحقول | |
|---|---|
displayName |
الاسم المعروض للمركبة الذي حدّده المستخدم يمكن أن يصل طوله إلى 63 حرفًا وقد يستخدم أحرف UTF-8. |
travelMode |
وضع التنقّل الذي يؤثر في الطرق التي يمكن للمركبة استخدامها وسرعتها يمكنك أيضًا الاطّلاع على |
routeModifiers |
يشير ذلك المصطلح إلى مجموعة من الشروط التي يجب استيفاؤها والتي تؤثر في طريقة احتساب المسارات للمركبة المحدّدة. |
startLocation |
الموقع الجغرافي الذي تبدأ فيه المركبة قبل استلام أي شحنات إذا لم يتم تحديده، تبدأ المركبة في أول عملية استلام. إذا كان نموذج الشحن يتضمّن مصفوفات المدة والمسافة، يجب عدم تحديد |
startWaypoint |
نقطة طريق تمثّل موقعًا جغرافيًا تبدأ منه المركبة قبل استلام أي شحنات. إذا لم يتم تحديد |
endLocation |
الموقع الجغرافي الذي تنتهي فيه المركبة بعد إكمال آخر |
endWaypoint |
نقطة طريق تمثّل موقعًا جغرافيًا تنتهي فيه المركبة بعد إكمال آخر |
startTags[] |
تُحدِّد العلامات المرفقة ببداية مسار المركبة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
endTags[] |
تحدّد العلامات المرفقة بنهاية مسار المركبة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
startTimeWindows[] |
الفترات الزمنية التي قد تغادر خلالها المركبة موقع البدء. ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه غير متداخلة، أي لا يمكن أن تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط |
endTimeWindows[] |
الفترات الزمنية التي قد تصل خلالها المركبة إلى موقعها النهائي ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه غير متداخلة، أي لا يمكن أن تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط |
unloadingPolicy |
يتم فرض سياسة إلغاء التحميل على المركبة. |
loadLimits |
السعة للمركبة (مثل الوزن والحجم وعدد المنصّات النقّالة) المفاتيح الموجودة في الخريطة هي المعرّفات الخاصة بنوع التحميل، والمتوافقة مع مفاتيح الحقل عنصر يحتوي على قائمة بأزواج |
costPerHour |
تكاليف المركبات: تُجمع جميع التكاليف ويجب أن تكون بالوحدة نفسها المستخدَمة في التكلفة لكل ساعة من مسار المركبة يتم تطبيق هذه التكلفة على إجمالي الوقت المستغرَق في المسار، ويشمل ذلك وقت التنقّل ووقت الانتظار ووقت الزيارة. قد يؤدي استخدام |
costPerTraveledHour |
التكلفة لكل ساعة يتم قطعها لمسار المركبة. لا يتم تطبيق هذه التكلفة إلا على مدة السفر التي يسلكها المسار (أي التي تم الإبلاغ عنها في شهر |
costPerKilometer |
التكلفة لكل كيلومتر من مسار المركبة يتم تطبيق هذه التكلفة على المسافة الواردة في |
fixedCost |
يتم تطبيق تكلفة ثابتة في حال استخدام هذه المركبة لمعالجة شحنة. |
usedIfRouteIsEmpty |
ينطبق هذا الحقل على المركبات فقط عندما لا يوفّر مسارها أي شحنات. يشير هذا العمود إلى ما إذا كان يجب اعتبار المركبة مستعمَلة أم لا في هذه الحالة. إذا كان صحيحًا، تنتقل المركبة من موقعها الجغرافي للبدء إلى موقعها الجغرافي للنهاية حتى إذا لم تكن تنقل أي شحنات، ويتم أخذ تكاليف الوقت والمسافة الناتجة عن التنقّل من موقع البدء إلى موقع النهاية في الاعتبار. بخلاف ذلك، لن تتنقّل هذه المركبة من نقطة الانطلاق إلى موقعها الجغرافي النهائي، ولم يتم تحديد موعد لأي |
routeDurationLimit |
الحدّ الذي يتم تطبيقه على إجمالي مدة مسار المركبة في |
travelDurationLimit |
يتم تطبيق هذا الحدّ على مدة التنقّل لمسار المركبة. في |
routeDistanceLimit |
يتم تطبيق هذا الحدّ على إجمالي المسافة لمسار المركبة. في |
extraVisitDurationForVisitType |
تحدِّد هذه السياسة خريطة من سلاسل trafficTypes إلى المُدد. المدة هي الوقت بالإضافة إلى إذا كان طلب الزيارة عدة أنواع، ستتم إضافة مدة لكل نوع في الخريطة. عنصر يحتوي على قائمة بأزواج |
breakRule |
تصف هذه السمة الجدول الزمني للفاصل الإعلاني الذي سيتم فرضه على هذه المركبة. إذا كانت فارغة، لن يتم جدولة أي فواصل لهذه المركبة. |
label |
تُحدِّد تصنيفًا لهذه المركبة. يتم الإبلاغ عن هذا التصنيف في الرد على أنّه |
ignore |
إذا كانت القيمة صحيحة، يجب أن تكون إذا تم تنفيذ الشحنة من خلال مركبة تم تجاهلها في إذا تم تسليم الشحنة من خلال مركبة تم تجاهلها في |
travelDurationMultiple |
لتحديد عامل ضرب يمكن استخدامه لزيادة أو تقليل مدد السفر لهذه المركبة. على سبيل المثال، يعني ضبط ذلك على 2.0 أن هذه المركبة أبطأ ولديها مدة تنقّل ضعف الوقت اللازم للمركبات العادية. ولا يؤثّر هذا المُضاعِف في مدّة الزيارة. ويؤثر ذلك في التكلفة في حال تحديد تحذير: سيتم تقريب مدد الانتقال إلى أقرب ثانية بعد تطبيق هذه المضاعفة ولكن قبل إجراء أي عمليات رقمية، وبالتالي، قد يؤدي المضاعف الصغير إلى فقدان الدقة. يمكنك أيضًا الاطّلاع على |
TravelMode
وسائل النقل التي يمكن استخدامها من قِبل المركبات
يجب أن تكون هذه الإعدادات مجموعة فرعية من أوضاع التنقّل في واجهة برمجة التطبيقات "الطرق المفضّلة" في "منصّة خرائط Google"، راجِع: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
| عمليات التعداد | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
وضع سفر غير محدّد، ما يعادل DRIVING |
DRIVING |
وضع التنقّل المرتبط باتجاهات القيادة (سيارة، وما إلى ذلك) |
WALKING |
وضع السفر المرتبط باتجاهات المشي |
TRUCK |
السفر بالشاحنة سيشمل هذا الوضع قيودًا مادية وقانونية. |
RouteModifiers
تُحاط مجموعة من الشروط الاختيارية التي يجب استيفاؤها عند احتساب مسارات المركبات. وهذا يشبه RouteModifiers في واجهة برمجة التطبيقات المفضَّلة لتطبيق Routes في "خرائط Google". اطّلِع على: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers.
| تمثيل JSON |
|---|
{
"vehicleInfo": {
object ( |
| الحقول | |
|---|---|
vehicleInfo |
تُستخدَم لتحديد معلومات المركبة. |
VehicleInfo
يتم تغليف معلومات المركبة، مثل معلومات الشاحنة.
| تمثيل JSON |
|---|
{ "totalAxleCount": integer, "totalHeightMm": string, "totalLengthMm": string, "totalWidthMm": string, "totalWeightKg": string, "trailerInfo": [ { object ( |
| الحقول | |
|---|---|
totalAxleCount |
إجمالي عدد المحاور يجب أن يكون أكبر من أو يساوي 2. يجب ضبطه لبدء النقل بالشاحنات أو المقطورات. ينطبق ذلك على وضع السفر |
totalHeightMm |
تمثّل هذه السمة ارتفاع المركبة، بما في ذلك ارتفاعات أي مقطورات مرفقة. يجب ضبطه لتشغيل عمليات النقل بالشاحنات أو المقطورات. ينطبق هذا الإعداد على وضع السفر |
totalLengthMm |
طول المركبة، بما في ذلك أطوال أي مقطورات مرفقة يجب ضبطه لتشغيل عمليات النقل بالشاحنات أو المقطورات. ينطبق ذلك على وضع السفر |
totalWidthMm |
تمثّل هذه السمة عرض المركبة، بما في ذلك عرض أي مقطورات مرفقة. يجب ضبطه لبدء النقل بالشاحنات أو المقطورات. ينطبق ذلك على وضع السفر |
totalWeightKg |
وزن المركبة، بما في ذلك أوزان أي مقطورات مرفقة ويشير الوزن في هذا السياق إلى الوزن الفعلي وليس تصنيف الوزن. يجب ضبطه لبدء النقل بالشاحنات أو المقطورات. ينطبق ذلك على وضع السفر |
trailerInfo[] |
ينطبق ذلك على وضع السفر |
hazardousGoodsTypes[] |
قائمة بالمواد الخطيرة التي يتم نقلها في المركبة، إن وجدت |
TrailerInfo
معلومات حول المقطورات الفردية المرتبطة بالمركبة يجب تقديم أطوال أي مقطورات لنقلها بالشاحنات. يجب أن يشمل إجمالي السمات سمات أي مقاطع دعائية. على سبيل المثال، يجب أن تكون قيمة totalHeightMm دائمًا أكبر من أو تساوي trailerInfo.height_mm.
| تمثيل JSON |
|---|
{ "lengthMm": string } |
| الحقول | |
|---|---|
lengthMm |
مدة المقطع الدعائي |
HazardousGoodsType
أنواع المواد الخطيرة المختلفة
| عمليات التعداد | |
|---|---|
HAZARDOUS_GOODS_TYPE_UNSPECIFIED |
لم يتم تحديد أي نوع من السلع الخطرة. |
EXPLOSIVES |
السلع المتفجّرة. |
GASES |
غازات |
FLAMMABLE |
السلع القابلة للاشتعال |
COMBUSTIBLE |
السلع القابلة للاشتعال |
ORGANIC |
السلع العضوية: |
POISON |
السلع السامة |
RADIOACTIVE |
السلع المشعة: |
CORROSIVE |
السلع المسببة للتآكل |
ASPIRATION_HAZARD |
السلع الخطيرة التي يتم استنشاقها |
ENVIRONMENTAL_HAZARD |
السلع الخطيرة للبيئة |
OTHER |
أنواع أخرى من السلع |
UnloadingPolicy
سياسة حول كيفية تفريغ حمولة المركبة لا ينطبق إلا على الشحنات التي تتضمّن عملية استلام وتسليم.
يمكن إجراء شحنات أخرى في أي مكان على المسار بشكل مستقل عن unloadingPolicy.
| عمليات التعداد | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
سياسة تفريغ غير محدّدة، يجب أن تتم عمليات التسليم بعد عمليات الاستلام المقابلة لها. |
LAST_IN_FIRST_OUT |
يجب أن تتم عمليات التسليم بترتيب عكسي لعمليات الاستلام. |
FIRST_IN_FIRST_OUT |
يجب أن تتم عمليات التسليم بالترتيب نفسه الذي تم به استلام الطلبات. |
LoadLimit
تحدد هذه السمة حد الحمولة الذي ينطبق على المركبة، على سبيل المثال "يمكن لهذه الشاحنة أن تحمل حتى 3, 500 كلغ كحد أقصى". يمكنك الاطّلاع على loadLimits.
| تمثيل JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| الحقول | |
|---|---|
softMaxLoad |
حد أدنى بسيط للتحميل. يمكنك الاطّلاع على |
costPerUnitAboveSoftMax |
إذا تجاوز الحمولة |
startLoadInterval |
الفاصل الزمني المقبول لتحميل المركبة في بداية المسار |
endLoadInterval |
الفاصل الزمني المقبول لتحميل المركبة في نهاية المسار |
maxLoad |
الحد الأقصى المسموح به للحمل |
الفاصل
الفاصل الزمني لمقدار الحمل المقبول
| تمثيل JSON |
|---|
{ "min": string, "max": string } |
| الحقول | |
|---|---|
min |
تمثّل هذه السمة الحد الأدنى للتحميل المقبول. يجب أن تكون القيمة أكبر من أو تساوي 0. في حال تحديد كلاهما، يجب أن يكون |
max |
الحد الأقصى المقبول يجب أن تكون القيمة ≥ 0. في حال عدم تحديد الحد الأقصى للحمل، لا تفرض هذه الرسالة أي قيود عليه. في حال تحديدهما، يجب أن تكون قيمة |
DurationLimit
حدّ يحدّد الحدّ الأقصى لمدة مسار مركبة يمكن أن يكون صلبًا أو لينًا.
عند تحديد حقل حدّ أدنى، يجب تعريف كلّ من الحدّ الأقصى البسيط والتكلفة المرتبطة به معًا.
| تمثيل JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| الحقول | |
|---|---|
maxDuration |
حدّ ثابت يفرض ألا تتجاوز المدة maxDuration المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
softMaxDuration |
الحدّ المقبول هو حدّ لا يفرض الحدّ الأقصى لمدة الرحلة، ولكن عند مخالفته، يتسبب في تحمّل المسار تكلفة. تضاف هذه التكلفة إلى التكاليف الأخرى المحدّدة في النموذج، باستخدام الوحدة نفسها. يجب أن تكون السمة مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
quadraticSoftMaxDuration |
الحدّ المقبول هو حدّ لا يفرض الحدّ الأقصى لمدة الرحلة، ولكن عند انتهاكه، يتسبب في تحمّل المسار تكلفةً تتناسب طرديًا مع المدة. تضيف هذه التكلفة إلى التكاليف الأخرى المحددة في النموذج بالوحدة نفسها. يجب أن تكون
مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
costPerHourAfterSoftMax |
تكلفة الساعة المفروضة في حال انتهاك الحدّ الأدنى الذي يبلغ يجب أن تكون التكلفة غير سالبة. |
costPerSquareHourAfterQuadraticSoftMax |
التكلفة لكل ساعة مربّعة يتمّ تحصيلها في حال انتهاك الحدّ الأقصى وتكون التكلفة الإضافية 0 إذا كانت المدة أقل من الحد الأدنى، وإلّا تعتمد التكلفة على المدة على النحو التالي: يجب أن تكون التكلفة غير سالبة. |
DistanceLimit
حد يحدد أقصى مسافة يمكن قطعها. يمكن أن يكون صلبًا أو لينًا.
إذا تم تحديد حدّ أدنى، يجب تحديد كلّ من softMaxMeters وcostPerKilometerAboveSoftMax وعدم استخدام قيم غير سالبة.
| تمثيل JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
| الحقول | |
|---|---|
maxMeters |
حد صارم يقيد المسافة لتكون maxMeters. يجب أن يكون الحد قيمة غير سالبة. |
softMaxMeters |
عند تطبيق حدّ أدنى للمسافة، لا يفرض الحدّ الأقصى المسموح به للمسافة المقطوعة، ولكن عند مخالفة السياسة، نفرض تكلفة إضافية مقابل تكاليف أخرى محدّدة في النموذج بالوحدة نفسها. إذا تم تحديد softMaxMeters، يجب أن تكون أقل من maxMeters ويجب أن تكون قيمة غير سالبة. |
costPerKilometerAboveSoftMax |
التكلفة لكل كيلومتر يتم تحصيلها إذا كانت المسافة تتجاوز الحدّ الأقصى يجب أن تكون التكلفة قيمة غير سالبة. |
BreakRule
قواعد لإنشاء استراحة زمنية للمركبة (مثل استراحات الغداء) الفاصل هو فترة زمنية متصلة تظل خلالها المركبة في وضع السكون في موقعها الحالي ولا يمكنها إجراء أي زيارة. قد يحدث انقطاع في البث في الحالات التالية:
- أثناء السفر بين زيارتين (ويشمل ذلك الوقت قبل الزيارة أو بعدها مباشرة، ولكن ليس في منتصف الزيارة)، وفي هذه الحالة، يمتد وقت النقل المقابل بين الزيارات
- أو قبل بدء تشغيل المركبة (قد لا يتم تشغيل المركبة في منتصف فترة الراحة)، وفي هذه الحالة لا يؤثر ذلك في وقت بدء تشغيل المركبة.
- أو بعد انتهاء المركبة (كما هو الحال، مع وقت انتهاء المركبة).
| تمثيل JSON |
|---|
{ "breakRequests": [ { object ( |
| الحقول | |
|---|---|
breakRequests[] |
تسلسل الفواصل اطّلِع على رسالة " |
frequencyConstraints[] |
قد تنطبق عدة أنواع من |
BreakRequest
ويجب معرفة تسلسل الفواصل الإعلانية (أي أرقامها وترتيبها) التي تنطبق على كل مركبة مسبقًا. تحدِّد العناصر BreakRequest المتكرّرة هذا التسلسل بالترتيب الذي يجب أن تحدث به. قد تتداخل الفترات الزمنية (earliestStartTime / latestStartTime)، ولكن يجب أن تكون متوافقة مع الطلب (تم وضع علامة في هذا المربّع).
| تمثيل JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| الحقول | |
|---|---|
earliestStartTime |
مطلوب. الحدّ الأدنى (شاملاً) لبداية الاستراحة طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
latestStartTime |
مطلوب. الحدّ الأقصى (شاملاً) لبداية الاستراحة طابع زمني بتنسيق RFC3339 UTC "Zulu"، بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
minDuration |
مطلوب. تمثّل هذه السمة الحد الأدنى لمدة الفاصل. يجب أن تكون موجبة. مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
قيد_التردد
يمكن أيضًا فرض قيود على وتيرة الفواصل الإعلانية المحدّدة أعلاه ومدتها، وذلك من خلال فرض حدّ أدنى لمعدّل تكرار الفواصل الإعلانية، مثلاً "يجب توفير استراحة لا تقل عن ساعة واحدة كل 12 ساعة". بافتراض أنّه يمكن تفسير ذلك على أنّه "خلال أي فترة زمنية منزلقة بمدة 12 ساعة، يجب وضع فترة استراحة واحدة على الأقل لمدة ساعة واحدة على الأقل"، وسيترجم هذا المثال إلى FrequencyConstraint التالي:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
سيراعي توقيت الفواصل في الحلّ ومدّتها جميع هذه القيود، بالإضافة إلى الفترات الزمنية والحد الأدنى للمدد المحدَّدة في السمة BreakRequest.
وقد تنطبق FrequencyConstraint عمليًا على الفواصل الإعلانية غير المتتالية. على سبيل المثال، يلتزم الجدول التالي بمثال "ساعة واحدة كل 12 ساعة":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| تمثيل JSON |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| الحقول | |
|---|---|
minBreakDuration |
مطلوب. الحد الأدنى لمدة الفاصل الإعلاني لهذا القيد غير سالب يمكنك الاطّلاع على وصف مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
maxInterBreakDuration |
مطلوب. أقصى مدى مسموح به لأي فاصل زمني في المسار لا يتضمن استراحة جزئية على الأقل لمدة المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
DurationDistanceMatrix
تُحدِّد مصفوفة المدة والمسافة من مواقع بدء الزيارة والمركبة إلى مواقع انتهاء الزيارة والمركبة.
| تمثيل JSON |
|---|
{
"rows": [
{
object ( |
| الحقول | |
|---|---|
rows[] |
تُستخدَم لتحديد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على عدد العناصر نفسه مثل |
vehicleStartTag |
علامة تحدد المركبات التي تنطبق عليها مصفوفة المدة والمسافة. وإذا كانت فارغة، فإن ذلك ينطبق على جميع المركبات، ولا يمكن أن يكون هناك أكثر من مصفوفة واحدة. يجب أن تتطابق جميع مرات بدء مركبة مع مصفوفة واحدة بالضبط، أي يجب أن يتطابق حقل واحد بالضبط من حقول يجب أن يكون لكل المصفوفات |
الصف
تحدّد هذه السمة صفًا من مصفوفة المدة والمسافة.
| تمثيل JSON |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| الحقول | |
|---|---|
durations[] |
قيم المدة لصف معيّن يجب أن يحتوي على عدد عناصر يساوي مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
meters[] |
قيم المسافة لصف معين. إذا لم تكن أي تكاليف أو قيود تشير إلى المسافات في النموذج، يمكن ترك هذا الحقل فارغًا، وإلا يجب أن يحتوي على عدد عناصر يساوي |
TransitionAttributes
تُحدِّد سمات الانتقالات بين زيارتَين متتاليتَين على مسار. قد تنطبق عدة TransitionAttributes على عملية النقل نفسها: في هذه الحالة، تُجمع كل التكاليف الإضافية ويتم تطبيق القيود أو الحدود الأكثر صرامة (وفقًا للدلالات الطبيعية لعبارة "و").
| تمثيل JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| الحقول | |
|---|---|
srcTag |
علامات تحدّد مجموعة التحولات (src->dst) التي تنطبق عليها هذه السمات تتطابق زيارة المصدر أو بدء المركبة إذا كانت |
excludedSrcTag |
يمكنك الاطّلاع على |
dstTag |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كان الحقل |
excludedDstTag |
يمكنك الاطّلاع على |
cost |
تُستخدَم لتحديد تكلفة تنفيذ عملية النقل هذه. ويكون هذا في نفس الوحدة مثل جميع التكاليف الأخرى في النموذج ويجب ألا يكون سالبًا. ويتم تطبيقه على جميع التكاليف الحالية الأخرى. |
costPerKilometer |
تحدّد تكلفة لكل كيلومتر تُطبَّق على المسافة المقطوعة أثناء تنفيذ هذا النقل. ويتم جمعها مع أي |
distanceLimit |
تحدّد هذه السمة حدًا أقصى للمسافة التي يتم قطعها أثناء تنفيذ هذا الانتقال. اعتبارًا من 2021/6، ستتم إتاحة الحدود القصوى المسموح بها فقط. |
delay |
تحدد هذه السياسة التأخير الذي يحدث عند إجراء عملية النقل هذه. ويحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. المدة بالثواني مع ما يصل إلى تسعة أرقام كسور، وتنتهي بـ " |
ShipmentTypeIncompatibility
تُحدِّد حالات عدم التوافق بين الشحنات استنادًا إلى shipmentType. يتم حظر ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
| تمثيل JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| الحقول | |
|---|---|
types[] |
قائمة بالأنواع غير المتوافقة الشحنتان اللتان تتضمّنان |
incompatibilityMode |
تم تطبيق الوضع على عدم التوافق. |
IncompatibilityMode
أوضاع تحدّد كيفية حظر ظهور الشحنات غير المتوافقة على المسار نفسه
| عمليات التعداد | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم التوافق غير محدّد يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن أبدًا لشحنتَين غير متوافقتَين أن تتشاركا المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
في عمليتَي شحن بأنواع غير متوافقة مع وضع عدم التوافق "
|
ShipmentTypeRequirement
تحدّد هذه السمة المتطلبات بين عمليات الشحن استنادًا إلى سمة "ShippingType". يتم تحديد تفاصيل المتطلّب حسب وضع المتطلّب.
| تمثيل JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| الحقول | |
|---|---|
requiredShipmentTypeAlternatives[] |
تتضمّن هذه السمة قائمة بأنواع الشحن البديلة المطلوبة بموجب سياسة " |
dependentShipmentTypes[] |
يجب الانتقال إلى المسار نفسه للاطّلاع على كل الشحنات من النوع ملاحظة: لا يُسمح بسلسلة المتطلبات التي تعتمد فيها |
requirementMode |
الوضع الذي تم تطبيقه على الشرط |
RequirementMode
الأوضاع التي تحدد مظهر الشحنات التابعة على المسار.
| عمليات التعداد | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
وضع متطلبات غير محدّد يجب عدم استخدام هذه القيمة مطلقًا. |
PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، يجب أن تتشارك جميع الشحنات "التابعة" المركبة نفسها مع شحنة واحدة على الأقل من الشحنات "المطلوبة". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
في وضع لذلك، يجب أن يتضمّن استلام الشحنة "التابع" أيًا مما يلي:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
كما هو الحال من قبل، باستثناء أنّ الشحنات "التابعة" يجب أن تتضمّن شحنة "مطلوب" على مركبتها في وقت تسليمها. |
PrecedenceRule
قاعدة الأولوية بين حدثَين (كل حدث هو استلام أو تسليم شحنة): يجب أن يبدأ الحدث "الثاني" بعد offsetDuration على الأقل من بدء الحدث "الأول".
يمكن أن تشير عدة أولويات إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال: "يتم استلام الطلب (ب) بعد تسليم الطلب (أ)" و"يتم استلام الطلب (ج) بعد استلام الطلب (ب)".
بالإضافة إلى ذلك، لا تسري الأسبقية إلا عند تنفيذ الشحنتين ويتم تجاهلهما.
| تمثيل JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| الحقول | |
|---|---|
firstIsDelivery |
يشير إلى ما إذا كان الحدث "الأول" هو عملية تسليم. |
secondIsDelivery |
يشير إلى ما إذا كان الحدث "الثاني" هو عملية تسليم. |
offsetDuration |
المعادلة بين الحدث "الأول" و"الثاني". يمكن أن تكون سلبية. مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
firstIndex |
فهرس الشحن للحدث "الأول". يجب تحديد هذا الحقل. |
secondIndex |
فهرس الشحن للحدث "الثاني". يجب تحديد هذا الحقل. |