ساختار داده های در دسترس بودن برای رزروها

تعاریف پارامتر

همانطور که در تعریف Availability مشخص شده است:

  • party_size : تعداد نفراتی که می‌توانند در این بازه زمانی در رستوران حضور داشته باشند. یک رستوران می‌تواند به چندین Slot برای یک زمان خاص مرتبط شود که هر کدام party_size متفاوتی را مشخص می‌کنند، مثلاً اگر ۲، ۳ یا ۴ نفر بتوانند با رزرو قبلی در رستوران بنشینند.
  • spots_open : تعداد جایگاه‌های موجود برای این ورودیِ در دسترس بودن
  • spots_total : تعداد کل جایگاه‌هایی که تاجر برای این پیکربندی دارد (شامل آن‌هایی که در دسترس نیستند)

این سه پارامتر با هم کار می‌کنند تا یک نمایش دیجیتالی از نقشه طبقه بسازند. party_size تعداد افرادی است که هر میز می‌تواند در خود جای دهد (برای هر اندازه‌ای که یک میز می‌تواند در خود جای دهد، یک ورودی وجود خواهد داشت). spots_open و spots_total تعداد میزهایی هستند که می‌توانند party_size را در خود جای دهند.

نمونه پلان طبقه خالی

رستورانی را با نقشه طبقه زیر تصور کنید که هیچ رزرو فعالی ندارد:

شکل ۱: پلان طبقه بدون رزرو فعال
شکل ۱: پلان طبقه بدون رزرو فعال

مقادیر برای party_size ، spots_open و spots_total به صورت زیر خواهد بود:

اندازه مهمانی spots_open spots_total
۴ ۳ ۳
۵ ۳ ۳
۶ ۴ ۴
۷ ۱ ۱
۸ ۱ ۱

فید موجودی برای یک بازه زمانی در این فروشگاه به شکل زیر خواهد بود:

جی‌سون

{
  "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
          }
        }
      ]
}

نمونه پلان طبقه با امکان رزرو

حالا تصور کنید که یکی از میزهای گرد رزرو شده باشد:

شکل ۲: پلان طبقه با یک رزرو فعال
شکل ۲: پلان طبقه با یک رزرو فعال

مقادیر party_size ، spots_open و spots_total اکنون به صورت زیر خواهد بود:

اندازه مهمانی spots_open spots_total
۴ ۲ ۳
۵ ۲ ۳
۶ ۳ ۴
۷ ۱ ۱
۸ ۱ ۱

جی‌سون

{
  "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 خود را برای انعکاس این موضوع به‌روزرسانی کنید.

فرض کنید یک رستوران می‌تواند دو میز کوچک را برای یک مهمانی ۷ تا ۱۰ نفره ترکیب کند.

شکل ۳: پلان طبقه بدون رزرو فعال
شکل ۳: پلان طبقه بدون رزرو فعال

در صورت عدم رزرو فعال، مقادیر party_size ، spots_open و spots_total به شرح زیر است:

اندازه مهمانی spots_open spots_total
۴ ۳ ۳
۵ ۳ ۳
۶ ۴ ۴
۷ ۱ ۱
۸ ۱ ۱
۹ ۱ ۱
۱۰ ۱ ۱

حالا، با همان نقشه طبقه، رزرو برای تعداد ۱۰ نفر انجام می‌شود که شامل دو میز کوچک است.

شکل ۴: پلان طبقه با یک رزرو فعال که دو میز را در بر می‌گیرد
شکل ۴: پلان طبقه با یک رزرو فعال که دو میز را در بر می‌گیرد

سپس، مقادیر party_size ، spots_open و spots_total به صورت زیر است:

اندازه مهمانی spots_open spots_total
۴ ۱ ۳
۵ ۱ ۳
۶ ۲ ۴
۷ ۱ ۱
۸ ۱ ۱
۹ 0 ۱
۱۰ 0 ۱