هيكلة بيانات مدى التوفر للحجوزات

تعريفات المَعلمات

على النحو الموضح في تعريف Availability:

  • party_size: عدد الأشخاص الذين يمكن اصطحابهم خلال هذه الفترة الزمنية يمكن ربط مطعم بعدة خانات في الوقت نفسه، على أن يحدِّد كلّ منها سمة party_size مختلفة، إذا كان من الممكن على سبيل المثال جلوس شخصين أو 3 أو 4 أشخاص لإجراء حجز.
  • spots_open: عدد الأماكن المتاحة حاليًا لإدخال مدى التوفّر هذا
  • spots_total: إجمالي عدد المواضع التي تتوفّر لدى التاجر لهذه الإعدادات (بما في ذلك المواضع غير المتاحة)

تعمل هذه المَعلمات الثلاث معًا لإنشاء تمثيل رقمي لمخطط المبنى. تمثّل السمة party_size عدد الأشخاص الذين يمكن أن يتسع كل جدول لهم (سيتم توفير إدخال لكل مقاس يمكن أن يتّسع له الطاولة). spots_open وspots_total هما يمثّلان عدد الجداول التي يمكن أن تستوعب party_size ذلك.

مثال على مخطط مبنى فارغ

تخيَّل مطعمًا بمخطط المبنى التالي وليس به حجوزات نشطة:

الشكل 1: مخطط الطابق بدون حجوزات نشطة
الشكل 1: مخطط الطابق بدون حجوزات نشطة

ستكون قيم party_size وspots_open وspots_total على النحو التالي:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1

تظهر خلاصة مدى التوفّر لفترة زمنية واحدة لدى هذا التاجر:

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 4,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

مثال على مخطط مبنى مع حجز

تخيل الآن أن أحد الطاولات المستديرة تم حجزها:

الشكل 2: مخطط الطابق مع حجز نشط واحد
الشكل 2: مخطط طابق مع حجز نشط واحد

ستكون قيم party_size وspots_open وspots_total الآن:

party_size spots_open spots_total
4 2 3
5 2 3
6 3 4
7 1 1
8 1 1

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

تحديد توفر تناول الطعام مع دعم الجداول المجمّعة

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

إذا كان المطعم يتيح دمج الطاولات لتشكيل مجموعة أكبر، يمكنك تعديل spots_open وspots_total لتعكس ذلك.

لنفترض أنّ أحد المطاعم يمكنه دمج طاولتين صغيرتين للجلوس مجموعة مكونة من 7 إلى 10 أشخاص.

الشكل 3: مخطط الطابق بدون حجوزات نشطة
الشكل 3: مخطط مبنى بدون حجوزات نشطة

في حال عدم توفّر حجوزات نشطة، تكون قيم party_size وspots_open وspots_total هي:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1
9 1 1
10 1 1

والآن، وباستخدام مخطط الطابق نفسه، يتم إجراء حجز لحفلة مكونة من 10 أشخاص تجمع بين طاولتين صغيرتين.

الشكل 4: مخطط الطابق مع حجز نشط واحد يشمل جدولين
الشكل 4: خطة الطابق التي تتضمّن حجزًا نشطًا واحدًا يشمل جدولَين

بعد ذلك، تصبح قيم party_size وspots_open وspots_total هي:

party_size spots_open spots_total
4 1 3
5 1 3
6 2 4
7 1 1
8 1 1
9 0 1
10 0 1