Kontentga o'tish

Berish vazifalari

Berish vazifasi — bitta jismoniy reys: ushbu buyurtma laganini shu stolga olib borish yoki bu buyurtmani yetkazish manziliga eltish. Vazifalarni Sitora taklif qiladi, sizning kontrolleringiz qabul qiladi va qatʼiy holat mashinasi boʻylab boshqaradi.

offered ──claim──▶ claimed ──xodim yuklaydi──▶ loaded ──▶ en_route ──▶ arrived ──▶ completed
│ │ │
└─ expired └─ failed(code) ◀────────────────────────────────┘ istalgan payt: cancelled

POST /serving-tasks/{id}/claim/. Birinchi daʼvo yutadi; yutqazilgan poyga already_claimed kodi bilan 409 qaytaradi; muddati oʻtgan taklif oynasi offer_expired kodi bilan 410 qaytaradi. Muddati oʻtgan takliflar odamlarga qaytadi — muddat oʻtishini qayta urinish kerak boʻlgan xato deb hisoblamang.

claimed → loaded xodim tomonidan tasdiqlanadi

“claimed → loaded xodim tomonidan tasdiqlanadi” bo'limi

Robotingiz berish joyida kutadi; odam Sitora Proʻda lagan manifestga mos kelishini tasdiqlaydi. Ovqat uchun javobgarlikni odam beradi, mashina uni oʻzi eʼlon qilmaydi.

Siz loaded haqida xabar bera olmaysiz. Xabar endpointi roppa-rosa toʻrtta qiymatni qabul qiladi — en_route, arrived, completed, failed — qolgan hammasi maydon tekshiruvi bilan rad etiladi: 400, uning tanasi code emas, maydon nomi boʻyicha kalitlanadi:

{ "status": ["\"loaded\" is not a valid choice."] }

loaded → en_route → arrived → completed

“loaded → en_route → arrived → completed” bo'limi

POST /serving-tasks/{id}/report/ va {"status": "..."}. Xabarlar qatʼiy tartibda; tartibsiz xabar task_<joriy_holat> kodi bilan (masalan, task_claimed) va vazifaning joriy holatini koʻrsatuvchi izoh bilan 409 qaytaradi. Har qanday xabarga ixtiyoriy telemetry obyektini qoʻshish mumkin; u vazifaning hodisalar jurnalida saqlanadi.

Qabul qilingandan keyingi istalgan holatdan kodlangan sabab bilan xabar qilinadi:

failure_code Maʼnosi
obstacle_blocked Yoʻl toʻsilgan va tiklab boʻlmaydi.
hardware_fault Mexanik yoki elektr nosozlik.
navigation_lost Joylashuvni aniqlash yoʻqoldi.
payload_disturbed Lagan yoki yuk yoʻlda buzildi.
battery_critical Reysni tugatishga quvvat yetmaydi.
operator_abort Operatoringiz aralashdi.
other Boshqa har qanday holat — reason qoʻshing.

Nosozlik xavfsiz: buyurtma darhol inson jarayoniga qaytadi va xodimlar ogohlantiriladi. Nosozliklar haqida halol va darhol xabar bering.

failed haqida xabar berganingizda failure_code majburiy; yoʻq yoki notanish kod 400 (unknown_failure_code) bilan rad etiladi.

Siz yubora olmaydigan, ammo koʻradigan yana bitta failure_code bor: fleet_unresponsive. Sitora uni parkingiz qabul qilgan, soʻng heartbeat eskirgan holda harakatlantirishni toʻxtatgan vazifaga qoʻyadi — buyurtma kutmasligi uchun reys siz oʻrningizga nosoz deb yopiladi va uni xodimlar davom ettiradi. Buni koʻrish robot nosozlik eʼlon qilganini emas, kontrolleringiz jim boʻlganini bildiradi.

Sitoraʼdan keladi — xodim buyurtmani birinchi berib qoʻydi, buyurtma bekor qilindi yoki xodim reysni bekor qildi. Reysni toʻxtating va bazaga qayting. loaded dan keyingi bekor qilish laganni olish uchun xodimlarni ogohlantiradi.

Yakunlash buyurtma holatini hech qachon toʻgʻridan-toʻgʻri yozmaydi. Keyin nima boʻlishini filialning tasdiqlash qoidasi hal qiladi:

  • human_confirmed (sukut boʻyicha) — xodimlar buyurtmani Sitora Proʻda odatdagidek beradi; ularning tasdigʻi siklni yopadi va vazifaga qayta bogʻlanadi.
  • auto_confirm — server sizning completed xabaringizdan keyin buyurtma oʻtishini oʻzi qoʻllaydi. Xabar arrived dan keyin sozlangan kechikishdan (park holati suratidagi auto_confirm_dwell_seconds) erta kelmasligi kerak — mehmon laganni olishi mumkin boʻlgan vaqtdan tezroq yakunlash arrival_dwell_pending bilan 409 qaytariladi.

Har bir vazifa ish tavsifini olib yuradi — va boshqa hech nimani:

{
"order_display_number": 118,
"leg": "dine_in_tray",
"items": [
{ "name": "Grilled trout", "quantity": "1" },
{ "name": "Green tea", "quantity": "2" }
],
"dining_spot": { "id": 12, "number": 4, "label": "Table 4", "spot_type": "table" }
}

Kuryerlik bosqichi manifestlari dining_spot oʻrniga delivery_address olib yuradi. Mehmon yozuvi, telefon raqami, buyurtma izohi, narx yoki toʻlov maʼlumotlari hech qachon boʻlmaydi — bu maydonlar manifestga umuman oʻqilmaydi.

Manifest faqat soʻrov endpointlarida beriladi, u yerda hisob maʼlumotingiz har bir oʻqishda tekshiriladi. U vebhukda hech qachon yuborilmaydi.