Telegram_logo
+7 (995) 986-01-00hello@scriptheads.io
+7 (995) 986-01-00Telegram_logo

Все кейсы

Автоматизация HoReCa horeca-cloud.ru

ЗаказчикООО «ФУДСЭНДГУДС»
Сайтhttps://horeca-cloud.ru
Бюджет(>10 млн. рублей)
Рекомендация от заказика

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

Идея

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

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

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

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

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

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

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

Решение

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

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

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

  • Менеджеры
  • Сборщики
  • Закупщики

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

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

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

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

Логистика

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

  • Менеджеры
  • Курьеры
  • Клиенты

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

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

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

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

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

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

Весы

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

Принтеры

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

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

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

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

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

  1. Координаты
  2. Уровень заряда аккумулятора
  3. Статус активности модуля GPS/ГЛОНАСС
  4. Идентификатор устройства

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

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

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

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

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

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

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

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

Технологии

которые мы использовали

Посмотреть услуги

Про технологии

Другие кейсы

Работать с нами

Чтобы начать сотрудничество с нами, пожалуйста, заполните простую форму, и мы свяжемся с вами в течение одного рабочего дня!

Телефон / Telegram / WhatsUp / E-mail

Мы уже получили ваш запрос!