Кухонные мониторы KDS.v2

Настройка в Юпитере

  • В настройках торгового зала включить опцию "Работа с кухонными мониторами KDS.v2"
  • Задать "ID торговой точки в ЛК" (значение могут сказать Святослав или Маргарита)
  • Задать "Адрес сервера KDS.v2", адрес самого kds-broker.exe. Например http://127.0.0.1:5678

image-1768322499407.png

  • Сформировать отчет Администратор системы / Монитор повара / Места приготовления KDS.v2. Отчет покажет токены мест приготовления, которые нужно будет указать в настройках кухонных мониторов. Также этот отчет нужно передать Маргарите для авторизации токенов. Это можно сделать сохранив отчет через кнопку "Печать" / "В файл".
  • Формируем отдельную подзадачу для менеджера, где указываем кол-во станций у клиента, прикладываем файл. Менеджер после подтверждения со своей стороны передает задачу на программиста, который авторизирует id станций. 

image-1768325083344.png

  • После подтверждения авторизации, передаем данные для подключения планшетов к KDS брокеру клиенту. Создаем задачу, ответы их которой будут приходить клиенту, указываем ip адрес и порт, которые пользователь должен открыть в браузере, а таже список с токенами мест расположения принтера, включая названия, которые будут понятны пользователю.
    Передаем инструкцию по работе с KDS.
  • Настроить автозапуск HTTP_WebServer-сервера Юпитер 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

    Настройка Брокер KDS v2

    Установка (если не установлен)

    1. Скачиваем KDS брокер с ftp, 0:/UPLOAD/1_Support/KnowHow/JUPITER/KDS Брокер/
    2. Распаковываем по пути C:\KDS

    Конфигурация KDS брокера

    1. Настраиваем c:\KDS\.env
      1. Указываем PORT для работы KDS брокера
      2. Указываем CRM_BASE_URL, адрес HTTP_WebServer Юпитера, который настраивали ранее по организации. 
    2. Настраиваем *ORG*.json по пути c:\KDS\configs\. Для каждой организации/базы должен быть свой файл. 
      1. Указываем "monitor_ids", это коды мест расположения принтеров, которые передавали менеджеру. Для каждой станции должен быть указан код в настройках. Внимательнее отнестить с запятым, делать по образцу. 
      2. Указываем путь до файла рецептов организации "recipes_path"
      3. Указываем путь до файлов картинок блюд организации "photos_path"
    3. Настраиваем c:\KDS\ui\settings.ini, в разделе [base.api_ip] нужно указать ip адрес и порт для связи с KDS брокером. 

    Обновление KDS брокера

    Для обновления достаточно обновить папку ui (внешний вид) и kds-broker.exe.

    Если надо форму рецепта обновить, то папка forms.

    Остальное не надо копировать при обновлении.

     

    Проверка подключения

    Как послать тестовый запрос на брокер? (лучше get) - просто чтобы проверить что он жив и слушает?
    Проще всего сделать GET на любой живой эндпоинт брокера:
    • Проверка “жив” (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)).

    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, // Количество гостей
      "open_date": "2026-02-16 17:24:31", // Дата и время создания заказа
      "delivery_at": "2026-02-16 19:00:00", // Дата и время, когда заказ нужно доставить для заказов на доставку или когда приготовить для заказов на вынос.
      "lines": [ // Массив строк заказа
        {
          "uid": "6:3:0:5129161", // Уникальный идентификатор строки заказа
          "item_id": "3:3:0:3682", // Уникальный идентификатор товара
          "item_name": "ЧИЗКЕЙК", // Название товара
          "item_code": "123", // Код товара
          "item_cooking_time": 15, // Кол-во минут, необходимое для приготовления блюда (единицы).
          "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": "ГОВЯДИНА С  ЛАПШОЙ",
          "item_code": "321",
          "item_cooking_time": 15,
          "qty": 1,
          "deleted": false,
          "monitor_id": "52a3a7d76860ed04655aa561f85a3865",
          "monitor_name": "Горячий",
          "modifiers": [ // Массив модификаторов по строке заказа
            {
              "uid": "6:3:0:5129163", // Уникальный идентификатор строки модификатора
              "item_id": "3:3:0:6021", // Уникальный идентификатор товара-модификатора
              "item_name": "ПШЕНИЧНАЯ", // Название товара-модификатора
              "item_code": "555", // Код товара-модификатора
              "item_cooking_time": 4, // Кол-во минут, необходимое для приготовления блюда-модификатора (единицы)
              "qty": 2, // Количество модификатора (на единицу товара)
              "monitor_id": "52a3a7d76860ed04655aa561f85a3865", // Уникальный идентификатор кухонного монитора
              "monitor_name": "Горячий" // Название места расположнеия принтера (монитора)
            }
          ]
        },
        {
          "uid": "6:3:0:5129164",
          "item_id": "3:3:0:3687",
          "item_name": "КОКА-КОЛА 200МЛ",
          "item_code": "412",
          "item_cooking_time": 10,
          "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": "Передан некорректный идентификатор заказа" // Текст ошибки
        }
    }

     

     

     


    Система JUPITER                                 www.jupiter.systems                                 (с) 2024г.