Мы разработали проект, который позволит разгрузить очередь к кассам и улучшить качество и скорость обслуживания для постоянных оптовых клиентов.
Заказчик обратился к нам уже который раз, довольный нашими предыдущими решениями в области автоматизации бизнеса, в частности для его компании SNPMarket. Ранее, мы делали ему сайт, автоматизацию и оцифровку склада, сервис логистики... всего и не перечислишь!
В этот раз предстояло подумать, как разгрузить очередь к кассам и улучшить качество и скорость обслуживания для постоянных оптовых клиентов.
Создать автоматический PickPoint
Разработать макеты печатных плат для управления ячейками шкафа
Продумать методы взаимодействия между сайтом, оборудованием и приложением для кладовщиков
Предоставить клиентам и кладовщикам простой и понятный интерфейс
Основным сегментом пользователей нашего ресурса являются оптовые покупатели. Именно из их запросов сформировалась идея реализовать модуль PickPoint.
Боли, с которыми сталкивались наши клиенты:
Чтобы выполнить задачи по аппаратной части и сделать полностью автоматический и надежный шкаф самовывоза, нужно было изучить готовые аналогичные решения конкурентов. Найти их сильные стороны, чтобы сделать еще круче у SNPMarket, и слабые, чтобы у нас они не появились.
В частности, было решено отказаться от дополнительного терминала, что обычно сопуствует подобным шкафам-постаматам. Так как сервис нацелен в первую очередь на оптовых клиентов - у них есть учетная запись на сайте, а соответсвенно гораздо проще будет управлять доступом через ЛК.
Кроме конкурентного анализа, задача аппаратников - определить основные узлы, необходимые для работы ячейки в режимах загрузки и выгрузки, выбрать элементную базу, контроллеры.
В качестве контроллеров аппаратной части были выбраны Arduino Nano, отдавать им команды и слушать состояние будет сервис на Orange PI.
На основе собранной информации по проблемам ЦА и анализу предметной области, в частности конкурентному анализу и выбору аппаратной части, были выдвинуты следующие гипотезы:
Как обычно, дизайн начался с дискусии и прототипов. А что вообще нужно клиенту видеть на экране? Нужен ли состав заказа, хранимого в ячейке? Кто-то шутку провел аналогию с банковской ячейкой, но, неожиданно идея всем понравилась — ведь банк это
НАДЕЖНОСТЬ ;)
В проектирование интерфейса PickPoint использовали разработанную ранее дизайн-систему для SNPMarket, из новых элементов, которые нужно было придумать и реализовать, были только сами ячейки-сейфы. Хотелось, чтобы дверь "сейфа" отражала его текущее состояние. Планировали сделать, чтобы дверь открывалась, но в итоге отказались от сложных анимаций в пользу производительности на слабых мобильных устройствах.
Процесс открытия ячейки на сайте или в приложении совпадает с реальным, физическим открытием ячейки в точке выдачи.
Самая важная задача в таком проекте — достичь максимальной простоты и надежности. Чтобы и кладовщики и клиенты могли без танцев с бубном пользоваться всем доступным функционалом и при этом система была бы гибкой и отказоустойчивой. Для этого мы:
Когда собрали и протестировали макетную плату — взяли текстолит и старым дедовским способом с помощью утюга, принтера и какой-то матери сделали настоящие печатные платы. Намучались мы с ними изрядно, поэтому следующую партию заказали уже на заводе :)
После сборки готового устройства выяснилось, что витая пара очень чувствительна к окружающим наводкам, что отрицательно влияло на надежность данной системы. Ну что ж, снова засучили рукава, заменили витуху на экранированную, сократили общую длину трасс более чем в 4 раза.
Еще одним подводным камнем оказалось, что пружина замка, которая отталкивает дверь при открывании, не справляется с пружинами мебельных петель. Замки менять не стали, приделали к дверцам маленькие ручки.
Необходимо было учесть 2 бизнес-сценария (а впоследствии добавился ещё один) - загрузки и выгрузки ячейки.
Дополнительную сложность добавляло то, что все 3 эндпоинта физически находились на разных серверах. Спасибо линуксу, быстро подняли необходимые тоннели. В качестве протокола взаимодействия выбрали WebSocket. Все модули, как повелось, независимые.
По итогу, мы разработали рабочие прототипы и дали доступ группе постоянных оптовых покупателей.
На протяжении двух недель проходило тестирование, фикс багов и сбор фидбека от покупателей.