Иногда у работника склада возникает ситуация, что при приемке товара по штрихкоду отсутствует номенклатура (да, в идеальном мире менеджеры должны делать заказы, всё заранее подготоваливать, но в реально не всегда так бывает) и заполнить необходимые поля не всегда есть время. Данный сервис создан как раз для помощи ему в данной ситуации. Мы просто передем в него http запрос, в ответ получаем найденную продукцию (качество заполнения зависит от страницы, которая выдала информацию).
Сервис представляет из себя - web-scraper, внутри него спрятан интерфейс productProvider. Каждая реализация данного интерфейса - отдельный сайт, который он просматривает в поисках товара при каждом запросе.
Модель возвращаемого товара на текущий день такова:
Свойство | Тип | Описание |
barcode | string | Штрихкод |
article | string | Артикул |
name | string | Наименование |
description | string | Описание товара |
manufacturer | string | Производитель товара |
unit | string | Единица измерения товара |
weight | number | Вес 1 unit товара |
picture | base64 | Изображение товара |
HTTP интерфейс сервиса:
Метод | Путь | Описание |
GET | /api/barcode/first/:barcode | Выдает быстрый результат (от самого быстрого провайдера), у остальных провайдеров запрос отменяется. При использовании этого метода ответ не кешируется |
GET | /api/barcode/thebest/:barcode | Сначала получает всевозможные варианты, затем вычисляет самый заполненный. Результат кешируется в локальном хранилище |
DELETE | /api/localstorage/:barcode | Удаляет результат из локального хранилища |
Зависимости
Для полноценной работы приложения необходимо также поднять такие сервисы как:
browserless/chrome - это headless chrome браузер, предназначен для рендеринга страниц на клиенте
mongodb - база данных, предназначенная для кеширования ответов сервера
Контрибьюция
Данный сервис я делал исходя из своих потребностей, поэтому в качестве сайтов-провайдеров используются ресурсы по ветеринарным препаратам, а также национальный-каталог.рф, для продуктов. Кто хочет добавить свои сайты может самостоятельно сделать productProvider и отправить pull request или написать соответствующий issue (главное, чтобы на вашем сайте товар искался по штрихкоду).
Ссылка на репозиторий проекта: https://github.com/korableg/getproduct
Ссылка на Docker образ: https://hub.docker.com/r/korableg/getproduct
Примеры запуска контейнеров вы сможете найти в репозитории проекта, в каталоге scripts.
Все замечания и предложения по проекту пожалуйста пишите в Issues.
Приложенный файл написан на платформе 8.3.18.1483