3. Модуль распознавания ----------------------- В разделе представлены эндпоинты, которые повторяют логику работы модуля распознавания. Более подробно с работой можно ознакомиться в документации `Руководство программиста по REST API V2 `_ . 3.1 Templates ============= 3.1.1 Добавить template ============================== **URL интерфейса:** {host}/api/add_item_template **Метод запроса:** POST **Входные данные:** .. code:: { "id": "3" } **Выходные данные:** .. code:: { "code": 0, "data": { "image": "example_base64", "sid": "20250409172600091096974" } } 3.1.2 Получить список templates объектов ========================================= **URL интерфейса:** {host}/api/get_item_template_list **Метод запроса:** POST **Входные данные:** .. code:: { "id": "001" } **Выходные данные:** .. code:: { "code": 0, "data": ["20250325182631900286512", "20250325182635248390972", "center"], "max": 30 } 3.1.3 Удалить template объекта ============================== **URL интерфейса:** {host}/api/delete_item_template **Метод запроса:** POST **Входные данные:** .. code:: { "id": "3", "sid": "20250325182635248390972" } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.1.4 Получить список объектов ============================== **URL интерфейса:** {host}/api/get_item_list **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": [ { "count": 3, "id": "001" }, { "count": 1, "sid": "002" } ] } 3.1.5 Удалить объект ==================== **URL интерфейса:** {host}/api/delete_item **Метод запроса:** POST **Входные данные:** .. code:: { "id": "001" } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.1.6 Очистить все templates ============================= **URL интерфейса:** {host}/api/clear_all_template **Метод запроса:** POST **Выходные данные:** .. code:: { "code": 0, "data": null } 3.1.7 Экспортировать templates ============================== **URL интерфейса:** {host}/api/export_template **Метод запроса:** POST **Входные данные:** .. code:: { "ids": ["003", "002"] } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.1.8 Статус экспорта templates ================================ **URL интерфейса:** {host}/api/export_template_status **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "filename": "12067_20250409.evo", "msg": "Export completed", "status": 3 } 3.1.9 Импортировать templates ============================= **URL интерфейса:** {host}/api/import_template **Метод запроса:** POST **Входные данные:** Файл **Выходные данные:** .. code:: { "code": 0, "data": null } 3.1.10 Статус импорта templates ================================= **URL интерфейса:** {host}/api/import_template_status **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "msg": "Import successful", "status": 4 } 3.1.11 Скачать templates ========================= **URL интерфейса:** {host}/api/download/{filename} **Метод запроса:** GET **Выходные данные:** Файл 3.2 Синхронизация ================= 3.2.1 Установить автономную синхронизацию ========================================== **URL интерфейса:** {host}/api/set_sync_normal **Метод запроса:** POST **Входные данные:** .. code:: { "upload": false, "download": false } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.2 Установить синхронизацию Master ====================================== **URL интерфейса:** {host}/api/set_sync_master **Метод запроса:** POST **Входные данные:** .. code:: { "upload": false, "download": false } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.3 Установить синхронизацию Slave ===================================== **URL интерфейса:** {host}/api/set_sync_slave **Метод запроса:** POST **Входные данные:** .. code:: { "upload": false, "download": false, "masterIP": "192.168.1.32", "mastersyncPort": "7443" } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.4 Запустить автономную синхронизацию ========================================= **URL интерфейса:** {host}/api/manual_sync **Метод запроса:** POST **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.5 Получить статус синхронизации =================================== **URL интерфейса:** {host}/api/get_sync_status **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "count": 100, "message": "Free", "synctime": "2024-04-09 15:26:51" } } 3.2.6 Установить лимит синхронизации ==================================== **URL интерфейса:** {host}/api/set_sync_limit **Метод запроса:** POST **Входные данные:** .. code:: { "limit": 3 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.7 Установить лимит продажи ======================================== **URL интерфейса:** {host}/api/set_sold_out_limit **Метод запроса:** POST **Входные данные:** .. code:: { "day": 3 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.2.8 Получить лимит синхронизации ================================== **URL интерфейса:** {host}/api/get_sync_limit **Метод запроса:** POST **Выходные данные:** .. code:: { "code": 0, "data": { "limit": 3 } } 3.3 Распознавание ================= 3.3.1 Установить скорость распознавания ======================================== **URL интерфейса:** {host}/api/set_predict_speed **Метод запроса:** POST **Входные данные:** .. code:: { "speed": "normal" } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.3.2 Получить результат ========================= **URL интерфейса:** {host}/api/get_result **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "items": [ { "id": "002", "score": 0.29 }, { "id": "003", "score": 0.28 } ], "sid": "20250409172600091096974" } } 3.3.3 Установить максимальное количество результатов ==================================================== **URL интерфейса:** {host}/api/set_max_result **Метод запроса:** POST **Входные данные:** .. code:: { "num": 3 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.3.4 Feedback результатов ================================= **URL интерфейса:** {host}/api/result_feedback **Метод запроса:** POST **Входные данные:** .. code:: { "id": "001", "sid": "17001010826330419672962" } Помимо обязательных полей, чтобы детализировать информацию для сервера мониторинга и сделать сбор статистики более точной, в качестве входных параметров могут быть переданы: - *response_time_ms: 30* — время затраченное клиентским приложением на получение, обработку данных, формирование ТОП-5 и вывод результатов на экран; - *method_of_selection: "pinpad"* — строковое значение действия пользователя: - *recognition* — выбор товара через результат предсказания; - *pinpad* — выбор товара через ручной поиск; - *without_recognition* — выбор товара был до получения результата распознавания; - *abandoned* — отмена: - *unknown* — неизвестный вариант. - *position_relevance: "top4"* — строковое значение соответствия позиции ТОП-5 SKU: - *top_unknown* — выбранный товар системе не известен; - *top_not_in_top5* — выбранный товар не входит в предложенный ТОП-5 SKU; - *top1* — выбранный товар соответствует ТОП-1 из предложенных SKU; - *top2* — выбранный товар соответствует ТОП-2 из предложенных SKU; - *top3* — выбранный товар соответствует ТОП-3 из предложенных SKU; - *top4* — выбранный товар соответствует ТОП-4 из предложенных SKU; - *top5* — выбранный товар соответствует ТОП-5 из предложенных SKU. - *product_category: "Beverages"* — категория, к которой относится выбранный товар; - *product_name: "Juice"* — название товара, выбранного по итогу взвешивания; - *product_weight: 0.5* — вес выбранной товарной позиции; - *top_recognition:* — информация по каждому варианту из ТОП-5 распознавания, с указанием для каждого кода, наименования, категории и рейтинга распознавания. **Выходные данные:** .. code:: { "code": 0, "data": null } 3.3.5 Текущий режим обучения ============================= **URL интерфейса:** {host}/api/get_learnmode **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "mode": 1 } } 3.3.6 Установить режим обучения =============================== **URL интерфейса:** {host}/api/set_learnmode **Метод запроса:** POST **Входные данные:** .. code:: { "mode": 1 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4 Прочее ========== 3.4.1 Установить время ====================== **URL интерфейса:** {host}/api/set_time **Метод запроса:** POST **Входные данные:** .. code:: { "sec": 1742894010, "usec": 615948 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.2 Получить информацию об устройстве ======================================= **URL интерфейса:** {host}/api/get_device_info **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "app": "2.0.7", "board": "1109", "download": false, "engine": "9.6", "firmware": "9.9.5.6", "item_count": 100, "learnMode": 1, "max_result_num": 5, "predict_speed": "fast", "sn": "10110102", "sync": "9.6.0.0", "sync_limit": 3, "sync_mode": "normal", "upload": false } } 3.4.3 Установить дополнительную информацию =========================================== **URL интерфейса:** {host}/api/set_extra_info **Метод запроса:** POST **Входные данные:** .. code:: { "store_name": "test", "store_id": "001", "store_dep": "test" } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.4 Получить дополнительную информацию ======================================== **URL интерфейса:** {host}/api/get_extra_info **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "store_name": "test", "store_id": "001", "store_dep": "test" } } 3.4.5 Получить изображение ========================== **URL интерфейса:** {host}/api/get_image **Метод запроса:** GET **Выходные данные:** Файл изображения 3.4.6 Выполнить калибровку ============================ **URL интерфейса:** {host}/api/set_calib **Метод запроса:** POST **Входные данные:** .. code:: { "top": 39, "left": 444, "height": 482, "width": 348 } **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.7 Получить данные калибровки ================================ **URL интерфейса:** {host}/api/get_calib **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "top": 39, "left": 444, "height": 482, "width": 348 } } 3.4.8 Сбросить устройство ========================= **URL интерфейса:** {host}/api/reset_device **Метод запроса:** POST **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.9 Перезагрузить =================== **URL интерфейса:** {host}/api/reboot **Метод запроса:** POST **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.10 Автономное обновление ============================= **URL интерфейса:** {host}/api/offline_upgrade **Метод запроса:** POST **Входные данные:** Файл прошивки **Выходные данные:** .. code:: { "code": 0, "data": null } 3.4.11 Статус автономного обновления ==================================== **URL интерфейса:** {host}/api/offline_upgrade_status **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "msg": "Upgrading", "status": 2 } 3.4.12 Получить информацию о плате =================================== **URL интерфейса:** {host}/api/get_board_info **Метод запроса:** GET **Выходные данные:** .. code:: { "code": 0, "data": { "board": "1109", "clientID": "12067", "engine": "9.6", "firmware": "9.9.5.6", "sn": "9Y412177", "syncMode": "normal" } }