Workspace Digital Awards 2025 — успейте номинировать кейсы по льготной цене до 1 декабря. Принять участие!
Script Heads
Автоматизация HoReCa
Script Heads
#Программирование сайта#Приложение под ключ #Разработка программного обеспечения

Автоматизация HoReCa

273 
Script Heads
Script Heads Россия, Москва
Поделиться:
Автоматизация HoReCa
Клиент

ООО «ФУДСЭНДГУДС»

Бюджет

30 000 000

Сфера

Торговля

Регион

Россия, Москва

Сдано

Октябрь 2023

Задача

Клиент намеревался создать сервис складского учета продуктов питания, который автоматизирует процессы формирования заказов, их отгрузки, приемки и логистики. Все это происходит с помощью технологичных сборочных линий с фиксацией результата на каждом этапе: от получения сборщиком заказа в системе, через отметки о сборке каждой единицы с фиксации веса, до укладки в транспортировочный контейнер и отправки заказчику. С другой стороны, это сервис-каталог доставки для заведений общественного питания, где они могут приобретать необходимую им продукцию таким образом чтобы поставки были регулярными и в надлежащем качестве. Для этого им предлагаются специальные интерфейсы заказа и приемки. Вся система в целом обеспечивает консистентный, уникальный опыт простоты обслуживания заказов на каждом этапе. Бюджет, который закладывался на проект был порядка 30 млн. руб.

Как работали склады до автоматизации?

В начале дня на складе менеджеры по закупкам формировали заказы. В этот момент определялся их состав исходя из поступивших ранее звонков и сообщений от клиентов, в которых они просили привезти все необходимое. Каждую позицию менеджерам необходимо было добавить в базу данных 1С. В дальнейшем она являлась источником правды обо том, что, когда и кому нужно привести.

Далее для сборки заказов необходимо помечать готовые к отправке позиции, специальными этикетками. Их печатали по многу выгружая данные из 1С и вырезая ножницами. Таких этикеток могло быть до одной тысячи в день. Также менеджерам нужно было подготовить отчеты на подпись для директора и бумаги для водителей с информацией о заказах.

Вся эта работа происходила днем и к вечеру формировалось все необходимое для сборки заказов, которые нужно отвезти клиентам следующим утром. Бывает такое, что на складе нет нужных товаров, тогда в дело вступают докупщики, которые срочно отправляются искать недостающие позиции.

Далее в дело вступали курьеры, которым вручали список адресов и какие продукты им нужно отгрузить. Им нужно было сообразить такой маршрут чтобы успеть к каждому вовремя учитывая время на приемку заказов каждым клиентом, которая часто шла не по плану.

Разумеется все это происходит в суматохе, люди допускают ошибки при формировании и сборке заказов, указав или не то количество свежих авокадо или отгрузив 60 килограмм картофеля не тому клиенту.

Решение

Программный комплекс состоит из двух модулей: обслуживание заказов и логистика. В данный момент они функционируют следующим образом.

Что под капотом?

На складе есть сервер, где развернут 1С и роутеры Mikrotik один из которых подключен с помощью Wireguard по зашифрованному каналу к серверами в Яндекс Облаке. Таким образом мы можем связать базу данных, весы, камеры, принтеры и приложения в одну сеть, где данные обрабатываются быстро и безопасно. Посмотрим на компоненты ближе.

1Весы

У весов есть сетевые карты и собственный бинарный протокол по которому они общаются. Как только весы подключены, к ним можно на определенный порт и запросить данные. При установленном соединении они пересылают данные в реальном времени 50 раз в секунду. Так в приложении сборщик видит точные данные и может их фиксировать.

2Принтеры

Также как и весы, у принтеров есть сетевая карта и собственный бинарный протокол. У них очень ограниченный API и они могут рисовать только базовые фигуры, коды и текст. Кроме того принтер не может обработать два запроса одновременно и зависает. Также через некоторое время без получения запросов он уходит в сон и перестает быть доступным в сети.

Чтобы решить эти проблемы мы научили наш сервис работы с устройствами отправлять запросы к принтерам время от времени и ставить новые запросы в очередь, чтобы они отправлялись по одному.

Вместе с этим, периодически запрашивая у весов статус чтоб они не засыпали мы знаем не случилось ли с ними что-то нехорошее. Вроде залитой соком сетевой карты. А еще у нас есть алгоритм, который преобразует любую картинку в BPM в понятный принтеру формат из доступных ему элементарных фигур.

3Мобильные приложения

Для экономии ресурсов на разработку мы сделали одно кросс-платформенное приложение для всех участников процесса. У каждого был свой логин, под которым согласно роли отображался интерфейс для сборщика с перечнем заказов и товаров них с фиксацией веса и факта сборки, докупщика со списком товаров для покупки, и курьера. Здесь самое интересное. Дело в том, что телефон водителя должен в реальном времени отправлять следующие данные:

- Координаты

- Уровень заряда аккумулятора

- Статус активности модуля GPS/ГЛОНАСС

- Идентификатор устройства

В том числе когда приложение свернуто или закрыто. Также желательно не расплавить и не взорвать от нагрузки смартфон в салоне или кармане водителя.

А еще не сильно разряжать аккумулятор. Для этого мы сделали специальную задачу внутри телефона, который устанавливается вместе с приложением в Android State. Она запускается раз в секунду и выполняет минимальный алгоритм по сбору и отправке данных.

Чтобы настроить эту логику нашим инженерам пришлось выехать в поля с телефонами и ноутбуками корректируя алгоритм на реальных данных. Так удалось добиться нужной плавности и точности.

4Синхронизация

За нее отвечает специальный сервис на NodeJS и отдельная база данных, где есть данные необходимые для подключения ко всем устройствам. Этот сервис поднимает соединения, получает данные, обрабатывает их и кладет в Redis, откуда их быстро могут забирать клиенты. Так может обрабатываться до 10к запросов в секунду.

5Интеграция с 1С

Для этой платформы мы написали специальный обработчик, который запускается раз в секунду и получает данные от сервера приложений о событиях произошедших с товарами, например заказ или отгрузка.

Так после заказа до появления данных в 1С проходит не более 2х секунд.

Результат

Обслуживание заказов

В процессах обслуживания заказов задействованы три категории специалистов:

- Менеджеры

- Сборщики

- Закупщики

Менеджеры формируют, верифицируют и назначают в доставку заказы в специальном веб-приложении.

У сборщиков есть мобильное приложение в котором отображается информация о том, что и в каком количестве ему нужно собрать. Достаточно найти на складе продукт, отнести его на весы, получить напечатанную этикетку и отметить как позицию как собранную.

У закупщиков, отвечающих за срочные поставки продуктов тоже есть свое приложение, где они сразу видят информацию о том, что сборщик столкнулся с нехваткой товара. Так к концу смены сборщиков у них сразу есть вся необходимая информация.

Связь базы данных, приложений, принтеров и весов — ключевая часть автоматизации. Когда продукт найден на складе приложение сообщает на какие весы его нести. Некоторые могут взвешивать десятки килограмм, а некоторые только пару. На месте сборщик кладет товар на весы и жмет кнопку «Зафиксировать». В этот момент принтер печатает уникальную этикетку со всеми данными о заказе, а камера фотографирует продукт на весах и отправляет полученные данные на сервер. После приложение сообщает сборщику в какой контейнер отнести эту позицию.

Логистика

Обслуживают:

- Менеджеры

- Курьеры

- Клиенты

У менеджеров есть карта, на которой видны адреса всех клиентов ожидающих сегодня поставки. Им нужно спланировать в каком порядке каждому курьеру объехать клиентов учитывая время в пути от одной точки до другой, сколько времени он проведет на разгрузке и особенности маршрута. Все расчеты система осуществляет на лету. План можно сделать в вручную или автоматически, как подскажет система на основе данных о прошлых доставках.

Чтобы менеджеру было проще, в интерфейсе предусмотрены специальные фильтры, где можно выбрать конкретного курьера, дату, заказы и их статусы. Отдельно отмечаются новые заказы на которые никто еще не назначен. Когда происходят задержки здесь можно поменять адреса местами или добавить новые. В этом случае маршрут перестраивается автоматически, а клиенты получают уведомления.

В режиме реального времени на карте видно как двигаются курьеры, нет ли у них проблем. К примеру, когда клиент принимает заказы в приложении, каждую отдельную позицию он может принять полностью, частично или отказаться. Все это он отмечает в приложении сам или просит курьера, у которого также есть возможность вносить такую информацию. По завершении приемки есть возможность оставить оценку и комментарий.

Курьеры могут обманывать своего нанимателя выполняя заказы на стороне или просто бездействовать выключая телефон с запущенным приложением. Чтобы предупредить такое поведение, кроме геолокации также отправляются данные о статусе заряда, уровне приема мобильной сети и состоянии телефона. Это не зависит от того запущено приложение или нет. Так можно отделить технические проблемы у водителя от обмана.

Отзыв клиента

Хаматханов Магомед Исаевич
Хаматханов Магомед Исаевич

Генеральный директор

Co ScriptHeads мы прошли долгий путь от первого запуска, через сложный пивот к B2B
сегменту. За это время они сделали несколько кроссплатформенных мобильных приложений на React-Native: для клиентов, курьеров и работников склада. Также веб- приложение для менеджеров с групповыми чатами и бэкенд на NodeJS с PostgreSQL.

Сейчас Foods&Goods — это сложный сервис HoReCa, который включает в себя большие объемы данных , интеграции с 1C , принтерами, весами через защищенные каналы
wireguard и отслеживание курьеров в реальном времени по GPS. Отдельно хочу отметить, что релизы проходят быстро и система адекватно масштабируется в Яндекс Облаке так , что не приходится тратить на нее кучу средств или наблюдать проблемы с доступностью сервиса.

скан отзыва
https://horeca-cloud.ru

Стек технологий


Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Script Heads с удовольствием обсудит вашу задачу

Оставить заявку