Кухонные мониторы KDS.v2
Настройка в Юпитере
- В настройках торгового зала включить опцию "Работа с кухонными мониторами KDS.v2"
- Задать "ID торговой точки в ЛК" (значение могут сказать Святослав или Маргарита)
- Задать "Адрес сервера KDS.v2". Например
http://127.0.0.1
- Сформировать отчет Администратор системы / Монитор повара / Места приготовления KDS.v2. Отчет покажет токены мест приготовления, которые нужно будет указать в настройках кухонных мониторов. Также этот отчет нужно передать Маргарите для авторизации токенов. Это можно сделать сохранив отчет через кнопку "Печать" / "В файл".
- Настроить автозапуск web-сервера Юпитер 11.7. Пример команды запуска сервера:
c:\JP\11.7\Bin\domino8.exe c:\JP\11.7\JUPITER\PROJECT\JUPITER /SERVER LISTEN=http://192.168.10.13:7788/ DBSERVER=JUPITER SCHEME=SSMOLOST USERNAME=HTTP TOKEN=1 RUNONCE=SSMOLOST_HTTP
HTTP API
Юпитер и KDS.v2 обмениваются HTTP запросами. Юпитер в KDS.v2 передает информацию о заказах, которые нужно приготовить. KDS.v2 передает в Юпитер команды на изменение статуса заказа, когда заказ приготовлен.
Все запросы должен иметь заголовок x-api-key в котором указан секретный токен авторизации.
Передача заказа в KDS.v2
POST {Адрес сервера KDS.v2}/order
При каждой отправке (печати) заказа в работу, Юпитер формирует и передаёт информацию в KDS.v2. В KDS.v2 передаются все те же данные, что и выводятся на печать. Если заказ будет печататься несколько раз, например, после его изменения, то он также будет несколько раз передаваться в KDS.v2. Отмена печати (удаление) также передаётся в KDS.v2, удалённые строки отмечаются специальным признаком.
Запрос отправляется на адрес заданный в настройках + "/order". Таймаут ожидания ответа 3 секунды.
В ответ на запрос Юпитер ожидает получить любой ответ с HTTP-статусом 200. Любой иной HTTP-статус считается ошибкой. Юпитер информирует пользователя об ошибках. Дополнительной обработки ошибок на данный момент нет.
POST запрос:
{
"order_uid": "5:3:0:869861", // Уникальный идентификатор заказа в Юпитере
"number": 7, // Номер сборки
"label": "Должанская Ксения", // Заголовок заказа. Если заказ на доставку, то передается адрес, иначе имя сотрудника, который открыл заказ.
"source": "Телефон", // Источника заказа
"type": "Обычный заказ", // Вид заказа
"cooking_time": 44, // Время на приготовление всего заказа по нормативу. Кол-во минут.
"persons": 1, // Количество гостей
"lines": [ // Массив строк заказа
{
"uid": "6:3:0:5129161", // Уникальный идентификатор строки заказа
"item_id": "3:3:0:3682", // Уникальный идентификатор товара
"item_name": "ЧИЗКЕЙК", // Название товара
"qty": 1, // Количество товара
"deleted": false, // Признак удаления. Признак распространяется также на все инструкции и модификаторы строки.
"monitor_id": "52a3a7d76860ed04655aa561f85a3865", // Уникальный идентификатор кухонного монитора
"monitor_name": "Горячий", // Название места расположнеия принтера (монитора)
"instructions": [ // Массив инструкций по строке заказа
{
"name": "Готовить сразу", // Название инструкции
"monitor_id": "52a3a7d76860ed04655aa561f85a3865", // Уникальный идентификатор кухонного монитора
"monitor_name": "Горячий" // Название места расположнеия принтера (монитора)
}
]
},
{
"uid": "6:3:0:5129162",
"item_id": "3:3:0:6061",
"item_name": "ГОВЯДИНА С ЛАПШОЙ",
"qty": 1,
"deleted": false,
"monitor_id": "52a3a7d76860ed04655aa561f85a3865",
"monitor_name": "Горячий",
"modifiers": [ // Массив модификаторов по строке заказа
{
"uid": "6:3:0:5129163", // Уникальный идентификатор строки модификатора
"item_id": "3:3:0:6021", // Уникальный идентификатор товара-модификатора
"item_name": "ПШЕНИЧНАЯ", // Название товара-модификатора
"qty": 2, // Количество модификатора (на единицу товара)
"monitor_id": "52a3a7d76860ed04655aa561f85a3865", // Уникальный идентификатор кухонного монитора
"monitor_name": "Горячий" // Название места расположнеия принтера (монитора)
}
]
},
{
"uid": "6:3:0:5129164",
"item_id": "3:3:0:3687",
"item_name": "КОКА-КОЛА 200МЛ",
"qty": 1,
"deleted": false,
"monitor_id": "52a3a7d76860ed04655aa561f85a3865",
"monitor_name": "Горячий"
}
]
}
Изменение статуса заказа в Юпитере
POST {Адрес сервера Юпитера 11.7}/kds/v2/set_order_status
После того как заказ полностью приготовлен и собран, KDS.v2 передает в Юпитер команду на изменение статуса. Получив запрос, Юпитер изменят статуса заказа на "Готов к передачи клиенту". При необходимости статус заказа передается на сайт\приложение\агрегаторы.
POST запрос:
{
"order_uid": "5:3:0:869861", // Идентификатор заказа у которого нужно изменить статус
"status": 1 // Идентификатор статуса. Всегда 1
}
Ответ успех:
{
"status": "ok" // Статус обработки запроса. ok - успех, error - ошибка.
}
Ответ ошибка:
{
"status": "error", // Статус обработки запроса. ok - успех, error - ошибка.
"message": {
"text": "Передан некорректный идентификатор заказа" // Текст ошибки
}
}
Настройка KDS v2
Брокер
- Проверка “жив” (HTTP):
- curl.exe -i http://localhost:5678/kds/ping
- или в PowerShell: irm http://localhost:5678/kds/ping -Method Get
Если хочешь именно проверить приём Юпитера:
- curl.exe -i -X POST http://localhost:5678/order -H "Content-Type: application/json" -H "x-api-key: d19b4cc231b64ee3a4c0f61fc1aed40a" -d "{\"order_uid\":\"test-1\",\"lines\":[]}"
Конфигурация брокера
- Брокер читает все *.json из broker/configs при старте и строит маппинг monitor_id -> concept_id (conceptsStore.js (line 1), config.js (line 43)).
- При POST /order брокер определяет concept_id по monitor_id в строках/модификаторах/инструкциях и сохраняет его в заказ (если в одном заказе встретились разные концепции — вернёт 400) (server.js (line 215)).
- Рецепты загружаются на старте по одному файлу на концепцию (recipes_path из конфига). Эндпоинт GET /recipes/:productId выбирает нужный recipes-store по ?concept=... или ?monitor_id=.../?printer_place=... (или по ?order_uid=...; если концепция одна — выберется автоматически) (server.js (line 141)).
Система JUPITER www.jupiter.systems (с) 2024г.


Нет комментариев