Маппинг статусов заказа — наш Order Service ↔ Яндекс.Еда
Наши статусы (в Order Service)
| Код | Название | Значение |
|---|---|---|
NEW | Новый | Только что создан |
IN_PROGRESS | Готовится | Принят кассиром, готовится на кухне |
READY | Готов | Собран, ждёт курьера / выдачи |
HANDED_OVER | Передан курьеру | Покинул ресторан |
CANCELLED | Отменён | Отказ (кассиром или гостем) |
Статусы Яндекс.Еды (Vendor API)
Точные коды будут известны после подписания договора. По публичной документации и косвенным источникам:
| Их статус (ожидаемый) | Описание |
|---|---|
new | Заказ размещён в приложении |
accepted | Ресторан подтвердил |
cooking | Приготовление |
ready | Готов к передаче курьеру |
handed_over / picked_up | Курьер забрал заказ |
delivered | Курьер вручил гостю |
rejected | Отклонён рестораном |
cancelled | Отменён гостем |
Таблица соответствия
Заказ пришёл от Яндекса нам
| Яндекс → | Наш статус |
|---|---|
new | NEW |
Изменения статуса у нас → push в Яндекс
| Наш | Их (push) |
|---|---|
IN_PROGRESS (кассир нажал «Принять») | accepted |
IN_PROGRESS | cooking (отдельный push через ~минуту после accepted если разные статусы) |
READY | ready |
HANDED_OVER | handed_over |
CANCELLED (кассир «Отклонить», до принятия) | rejected с причиной |
CANCELLED (уже в IN_PROGRESS) | cancelled (ресторан не может выполнить) |
Двойной push для
accepted+cookingУ Яндекса два статуса для «подтвердил» и «готовит» — у нас один. Если их API требует обоих — шлём последовательно: сразу
accepted, через паузуcooking. Уточнить на kick-off.
Изменения статуса у Яндекса → нам (pull/webhook)
| Их | Наш |
|---|---|
cancelled (гость отменил) | CANCELLED + флаг cancelled_by_customer |
delivered | — не меняем (у нас заказ уже в HANDED_OVER, вручение курьера — вне нашей ответственности) |
Причины отклонения/отмены (reject reasons)
| Код | Описание | Кто может выбрать |
|---|---|---|
out_of_stock | Товар закончился | Кассир |
too_busy | Ресторан перегружен | Кассир |
technical_issue | Проблема с оборудованием | Кассир |
closing_soon | Скоро закрытие, не успеваем | Кассир |
customer_cancel | Гость отменил | Заполняется автоматом при pull от Яндекса |
При отклонении причина передаётся в Яндекс. На стороне гостя показывается нейтральная формулировка «Ресторан не смог выполнить заказ» + возврат денег.
Timing SLA
| Переход | Целевое время |
|---|---|
NEW → IN_PROGRESS | ≤ 3 минуты после получения |
IN_PROGRESS → READY | По договору с Яндексом (обычно 15-25 минут) |
READY → HANDED_OVER | ≤ 5 минут после прибытия курьера |
Нарушение SLA — штраф от Яндекса / понижение рейтинга ресторана.