Menyusun Ketersediaan di Feed

Memilih Format Ketersediaan

Ada dua cara untuk menentukan data ketersediaan: (1) Spots Open atau (2) Recurrence. Pilih satu metode saja yang bisa digunakan di semua penjual dan layanan Anda. Setelah memilih metode, Anda harus tetap melakukannya untuk seluruh integrasi (feed, server pemesanan, dan pembaruan real-time).

Gunakan panduan berikut untuk membantu Anda menentukan format ketersediaan yang lebih cocok:

  • Dalam sistem Anda, apakah Anda menyimpan ketersediaan sebagai slot eksplisit, misalnya, pukul 08.00 - 08.30?
  • Dalam sistem Anda, apakah Anda menyimpan ketersediaan dalam format berulang, yang berarti penjual memiliki layanan yang terjadi dengan frekuensi yang konsisten dengan sedikit penyimpangan? Misalnya, slot berulang setiap 15 menit dari pukul 09.00 - 17.00, dan hanya satu slot yang tersedia untuk setiap penambahan per 15 menit.
  • Untuk layanan penjual Anda, apakah mungkin ada lebih dari satu tempat terbuka dalam satu waktu? Misalnya, 30 tempat terbuka untuk kelas
  • Tidak ada yang sesuai?
    • Menggunakan Spots Open
    • Catatan: Meskipun menggunakan pengulangan lebih efisien dan dapat menghasilkan ukuran feed yang lebih kecil, jika model data Anda tidak mendukung pengulangan secara default, sebaiknya jangan gunakan pengulangan, karena Anda harus menghitung ulang slot berulang sepanjang hari untuk setiap update realtime.

    Spots Open

    Definisi Parameter:

    • spot_open: Jumlah tempat yang saat ini tersedia untuk entri ketersediaan ini.
    • spot_total: Jumlah total spot yang dimiliki penjual untuk konfigurasi ini, termasuk yang tidak tersedia.

    Metode Spots Open menunjukkan secara eksplisit setiap ketersediaan slot dan mendukung model untuk memiliki beberapa slot untuk layanan yang sama. Kedua parameter ini bekerja sama untuk membuat representasi digital dari kapasitas layanan.

    Saat pemesanan terjadi, jumlah spot_open harus dikurangi 1 melalui update realtime (jumlah spot_total harus tetap sama). Setelah spot_open = 0, slot tidak akan muncul lagi.

    Contoh Layanan

    Kelas yoga atau salon kecantikan memiliki denah lantai berikut dan tidak ada pemesanan aktif

    Gambar 1: Denah lantai tanpa pemesanan aktif

    Feed ketersediaan untuk 2 slot di penjual ini akan terlihat seperti:

    JSON

        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    Contoh Layanan dengan Pemesanan

    Gambar 2: Denah lantai dengan satu pemesanan aktif

    Sekarang pengguna memesan salah satu tempat. Saat pemesanan terjadi, update realtime dikeluarkan untuk memperbarui ketersediaan. Dalam feed ketersediaan harian berikutnya, pemesanan ini harus tercermin. Feed ketersediaan untuk penjual ini akan memiliki spot_open berkurang sebesar 1 untuk slot 1 September 2018 16.00:00 GMT. Slot 1 September 2018 20:00:00 GMT tetap tidak berubah.

    Cuplikan Feed dengan Pemesanan

    JSON

        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    Berulang

    Definisi Parameter

    • Berulang: Representasi slot ketersediaan yang berulang secara konsisten.
    • berulang_sampai_dtk: Stempel waktu UTC dari waktu berakhir slot terakhir yang diulang ketersediaannya.
    • berulang_setiap_dtk: Jumlah detik antara slot ketersediaan yang berurutan. Misalnya, jika pengulangan_setiap_dtk = 1800 (30 menit), dan start_sec dimulai pada pukul 09.00, slot akan berulang setiap 30 menit pada pukul 09.00, 09.30, 10.00, dll.
      • Catatan: Tidak perlu menentukan spot_open dan spot_total, keduanya dianggap sebagai 1, kecuali jika ada schedule_exception

    Metode pengulangan menunjukkan ketersediaan setiap hari untuk layanan yang terjadi secara berkala, misalnya, layanan yang terjadi setiap 30 menit dari pukul 09.00 - 17.00 setiap hari. Dengan pengulangan, Anda menentukan durasi slot, pertama kali pada hari slot terjadi, seberapa sering slot harus diulang, dan kapan slot harus berhenti berulang pada hari yang sama. Catatan: kumpulan slot berulang yang baru harus ditentukan untuk masing-masing hari secara terpisah. Jika slot sudah dipesan dalam rentang waktu yang ditentukan, Anda akan menentukan pengecualian jadwal. Misalnya, ulangi setiap setengah jam dari pukul 09.00 hingga 21.00 kecuali dari pukul 11.00 hingga 11.30. Setiap layanan akan memiliki pengecualian pengulangan dan penjadwalan masing-masing.

    Contoh Layanan

    Salon kecantikan memiliki denah lantai berikut dan tidak ada pemesanan aktif

    Gambar 3: Denah lantai tanpa pemesanan aktif. Asumsikan hanya 1 tempat yang buka per layanan (misalnya, Sally menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan dalam satu waktu.)

    Feed ketersediaan untuk 1 slot di penjual ini akan terlihat seperti:

    Cuplikan Feed:

    JSON

        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    Contoh Layanan dengan Pemesanan

    Gambar 4: Denah lantai dengan satu pemesanan aktif. Asumsikan hanya 1 tempat yang buka per layanan (misalnya, Sally menyediakan layanan potong rambut setiap 30 menit, tetapi hanya dapat melayani 1 pelanggan dalam satu waktu.)

    Sekarang bayangkan seorang pengguna memesan potong rambut dengan Santi pada pukul 12.30. Saat pemesanan terjadi, update real-time diberikan untuk memperbarui ketersediaan. Dalam feed ketersediaan harian berikutnya, pemesanan ini harus ditampilkan. Feed ketersediaan untuk penjual ini akan memiliki pengecualian penjadwalan selama pukul 12.30 - 13.00 untuk layanan dengan durasi 30 menit.

    Cuplikan Feed dengan Pemesanan:

    JSON

        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }