Автоматизация выдачи товаров

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

С чего все началось

Заказчик обратился к нам уже который раз, довольный нашими предыдущими решениями в области автоматизации бизнеса, в частности для его компании SNPMarket. Ранее, мы делали ему сайт, автоматизацию и оцифровку склада, сервис логистики... всего и не перечислишь!

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

Задачи

Создать автоматический PickPoint

Разработать макеты печатных плат для управления ячейками шкафа

Продумать методы взаимодействия между сайтом, оборудованием и приложением для кладовщиков

Предоставить клиентам и кладовщикам простой и понятный интерфейс

Целевая аудитория

Основным сегментом пользователей нашего ресурса являются оптовые покупатели. Именно из их запросов сформировалась идея реализовать модуль PickPoint.

Боли, с которыми сталкивались наши клиенты:

Конкурентный анализ

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

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

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

Ячейка
Замок
Кнопка разблокировки
Звуковая индикация
Световая индикация
Кластер
Ячейка
Ячейка
Ячейка
Ячейка
Контроллер
ARDUINO NANO
Шкаф
Кластер
Кластер
Кластер
Кластер
web-server
Orange Pi

В качестве контроллеров аппаратной части были выбраны Arduino Nano, отдавать им команды и слушать состояние будет сервис на Orange PI.

Гипотезы

На основе собранной информации по проблемам ЦА и анализу предметной области, в частности конкурентному анализу и выбору аппаратной части, были выдвинуты следующие гипотезы:

Гипотеза 1
При реализации подобного проекта, мы сможем добиться экономического сокращения издержек владельца интернет-магазина.
Гипотеза 2
Сможем разгрузить очередь в пункте выдачи товаров, перенаправив оптовиков на PickPoint.
Гипотеза 3
Разработка удобного и понятного интерфейса модуля "Самообслуживания" (Управление системой PickPoint) позволит ускорить процесс покупки и получения товаров.
Четвертой гипотезы нет :(
Да, мы понимаем, что с ней данный блок смотрелся бы симметричней.

Дизайн

Как обычно, дизайн начался с дискусии и прототипов. А что вообще нужно клиенту видеть на экране? Нужен ли состав заказа, хранимого в ячейке? Кто-то шутку провел аналогию с банковской ячейкой, но, неожиданно идея всем понравилась — ведь банк это
НАДЕЖНОСТЬ ;)

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

Процесс открытия ячейки на сайте или в приложении совпадает с реальным, физическим открытием ячейки в точке выдачи.

Разработка

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

Когда собрали и протестировали макетную плату — взяли текстолит и старым дедовским способом с помощью утюга, принтера и какой-то матери сделали настоящие печатные платы. Намучались мы с ними изрядно, поэтому следующую партию заказали уже на заводе :)

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

Еще одним подводным камнем оказалось, что пружина замка, которая отталкивает дверь при открывании, не справляется с пружинами мебельных петель. Замки менять не стали, приделали к дверцам маленькие ручки.

Программная часть

Необходимо было учесть 2 бизнес-сценария (а впоследствии добавился ещё один) - загрузки и выгрузки ячейки.

Загрузка
КЛИЕНТ
ЗАКАЗ
СБОРКА
PICKPOINT
ВЫБОР СВОБОДНОЙ ЯЧЕЙКИ
ПОДТВЕРЖДЕНИЕ ВЫБОРА НАЖАТИЕМ КНОПКИ НА ЯЧЕЙКЕ
ЯЧЕЙКА ОТКРЫТА
ЗАГРУЗКА
ОБНОВЛЕНИЕ СТАТУСА ЗАКАЗА НА САЙТЕ
УВЕДОМЛЕНИЕ КЛИЕНТА
ВЫВОД ВИДЖЕТА В ЛК
Выгрузка
КЛИЕНТ
НАЖИМАЕТ КНОПКУ ОТКРЫТИЯ В ВИДЖЕТЕ ЛК
ЗВУКОВАЯ И СВЕТОВАЯ ИНДИКАЦИЯ ЯЧЕЙКИ
ПОДТВЕРЖДЕНИЕ НАЖАТИЕМ КНОПКИ НА ЯЧЕЙКЕ
ЯЧЕЙКА ОТКРЫТА
КЛИЕНТ ЗАБИРАЕТ ТОВАР
СТАТУС ЗАКАЗА(ОВ) МЕНЯЕТСЯ НА "ВЫПОЛНЕНО"
УБИРАЕМ ВИДЖЕТ ЕСЛИ ЯЧЕЕК БОЛЬШЕ НЕТ
Бизнес-правила взаимодействия со шкафом

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

Рабочий прототип /
проверка гипотез

По итогу, мы разработали рабочие прототипы и дали доступ группе постоянных оптовых покупателей.

На протяжении двух недель проходило тестирование, фикс багов и сбор фидбека от покупателей.

Что в итоге

ЗА
ДНЕЙ РАБОТАЕТ
СЕРВИС
ГРУ
ВЫДАННЫХ
ПОСЫЛОК
ЗКА
ДОВОЛЬНЫХ
ОПТОВИКОВ

Почему мы гордимся
этим проектом?