ООО "МАЙ ФИТ ИТ"
Программное обеспечение
Россия, Москва
Июль 2023
GOODDY — сеть микромаркетов с ассортиментом из 1000+ блюд
Микромаркеты устанавливают в бизнес-центрах и офисах крупных компаний и пополняют свежей едой несколько раз в неделю. Посетители и сотрудники скачивают приложение, выбирают блюдо в холодильнике, сканируют код и оплачивают покупку в 2 клика. В итоге тратят меньше времени на обед и не опаздывают с перерывов.
Так HR-бренд работодателя растёт и процветает, поставщики увеличивают продажи, а GOODDY зарабатывает деньги на комиссиях. Все в плюсе.
IT-инфраструктура GOODDY выглядит так:
1) серверная часть — он же бэкенд;
2) холодильники с управляющей платой — устройством, которое регулирует температуру, управляет вентиляцией, освещением и так далее;
3)административная панель — управляющий софт для владельцев GOODDY, их партнёров и поставщиков. В ней можно отслеживать всё, что происходит с холодильниками и управлять мобильным приложением;
4)мобильное приложение для покупателей.
Заказчик обратился за поддержкой и доработкой всего проекта. Вместе мы смогли решить целый комплекс задач: отладили систему платежей, настроили обновления так, чтобы сторы их больше не отклоняли, и устранили другие неполадки.
Рассказываем, как мы нашли причину отказа от покупок и вернули продажи на прежний уровень. А ещё избежали краж из холодильников!
Одна из первых проблем, с которой мы столкнулись — холодильники один за другим переставали отображаться в системе управления. По необъяснимым причинам терялась связь с бэкендом, из-за этого пропадала возможность следить за состоянием холодильника — его температурой, уровнем влажности и другими показателями. Самое главное — нельзя было увидеть, кто и когда его открывает. Содержимое могли украсть, потому что видеокамеры тоже отключались.
Симптоматика одна, а причин может быть множество. Долго искали, что не так — нашли целых две проблемы.
Во-первых, для подключения холодильников к бэкенду нужен интернет, и связь терялась, когда на сим-картах холодильников заканчивались деньги.
Во-вторых, отваливался websocket-сервер.
WebSocket — это технология, которая позволяет установить связь между сервером и клиентом. Клиент — это приложение на компьютере или смартфоне пользователя, а сервер — это удаленное устройство, которое хранит данные и обеспечивает доступ к ним.
Так вот сервер переставал работать из-за того, что диск устройства был полностью заполнен логами — записями событий в системе. Новые логи формировались постоянно, а старые при этом не стирались. Память на диске переполнялась, и это останавливало работу многих сервисов, в том числе WebSocket-сервера.
Как решили проблему
Сделали функцию очистки диска, проверки статуса WebSocket-сервера и его перезагрузки в административной панели. После перезапуска настроили вывод лога с записью о последнем событии в программе, чтобы понимать, не произошёл ли какой-то баг.
Доработка системы управления холодильниками — только часть задач, с которыми к нам обратился заказчик. Другим его запросом была переработка мобильного приложения. Вернее, отказ от него в пользу веб-технологий. Спойлер: не получилось. Почему — расскажем ниже.
Мобильное приложение GOODDY — нативное, то есть, по сути, у компании два разных приложения для iOS и Android. Поддержка и продвижение таких сервисов стоят дорого, поэтому у заказчика была идея отказаться от них и сделать PWA.
PWA — лёгкое веб-приложение, которое запускается и работает в браузере непосредственно в момент обращения к нему. Оно не «болтается» в памяти телефона, и им можно быстро пользоваться. Обслуживать веб-приложение намного дешевле, потому что это сайт, который визуально трансформируется в мобильный клиент.
Были сомнения, что запрос заказчика можно реализовать. Да так, чтобы PWA стабильно работало, выполняло все функции и не плодило баги. Поэтому сперва решили оценить риски и запустить прототип — на этом-то этапе и вскрылись проблемы.
Самая главная функция приложения — сканирование штрих-кодов — не работала. Делать PWA без этой опции не имело никакого смысла, ведь с помощью штрих-кодов люди оплачивают товары, а система учёта фиксирует продажи.
PWA-приложение для подключения к камерам использует сторонние библиотеки, разрабатывать которые с нуля долго, дорого и сложно. Решение — воспользоваться уже готовыми библиотеками, чтобы не тратить драгоценные часы.
И если библиотеки для Android были в свободном доступе и работали стабильно, то с iOS было сложнее. Платные библиотеки ушли из России, бесплатных было несколько, но они не работали на последних версиях айфонов — 14 и 15. Из-за этого камера не фокусировалась и не могла распознать штрих-код.
На этом эксперимент с прототипом завершили. Стало понятно, что сэкономить на PWA не выйдет: дешевле поддержать нативное приложение, чем писать библиотеки с нуля.
В мае 2023 года у GOODDY резко упали продажи. Холодильники стояли, люди к ним подходили, но покупку не завершали — в статистике было много отмен. Внимание, Софториум, вопрос: что не так?
Чтобы понять в чем проблема, подключили логирование. Теперь уже в мобильном приложении. Мы внедрили запись действий пользователя и работы приложения в лог-файлы, и когда у юзера что-то ломалось, он мог отправить информацию о краше на сервер. По информации из лога команда разработки понимает, из-за чего произошёл баг.
Делайте ваши ставки в комментариях, откуда пошёл сбой.
Беда пришла, откуда не ждали — платёжный шлюз PayU глючил. PayU — это зарубежная система, которая то уходила из России, то проводила ребрендинг и меняла домены, то отказывалась принимать оплату с определённых карт. В итоге мы предложили отказаться от них и подключили отечественный шлюз, который исправно выполняет свои функции. И — импортозамещение.
Для подстраховки добавили возможность создавать продажи вручную. Если оплата не проходила по не зависящим от платформы причинам, оператор вручную собирал заказ и генерировал для покупателя ссылку, с помощью которой можно было купить товар в браузере.
В целом, у мобильного приложения был огромный минус — большая часть логики была на клиенте, в том числе платёжная. Работа шлюзов и обработка запросов с платежами шли со стороны клиентской части — то есть фронтенда. Чтобы внести в сервис хоть какие-то изменения, приходилось постоянно обновлять приложение в сторах.
Мы доработали код таким образом, чтобы сложная логика, связанная с геоданными, получением информации для дебага и платежами, была реализована на бэкенде. Теперь клиент приложения просто посылает запросы на сервер, а последний выполняет требуемые действия.
Чиним геопозицию пользователя, чтобы избежать краж
На этом проблемы приложения не закончились. Оно использовало старые версии пакетов, в том числе для определения геолокации юзера. Из-за этого местонахождение покупателей определялось неверно.
Проблема в том, что продажи GOODDY во многом построены на доверии. Холодильник может открыть любой человек. Очевидно, не у всех возникнет честное желание отсканировать код и отдать деньги за товар. Для этого и необходимо определять геопозицию — чтобы зафиксировать, у какого холодильника находится пользователь и избежать краж.
Мы заменили пакет на более свежий — от другого вендора. Геопозиция заработала, но сторы отказывались заливать приложение с обновлениями. Требовали указать, для чего сервису данные о местоположении пользователя. Мы указали в специальной графе магазинов, для чего собираем эту информацию. Сейчас всё исправно работает.
Продажи через штрих-коды
Для оптимизации процессов GOODDY и получения более глубоких данных о продажах мы внедрили систему штрих-кодов. Это позволит сети отслеживать каждую единицу товара и в дальнейшем создать удобную систему аналитики, которая спрогнозирует спрос и финансовые результаты.
Как всё происходит:
1. Штрих-коды для продукции формируются через управляющий софт.
2. GOODDY распечатывают их и наклеивают на упаковки.
3. Пользователь сканирует штрих-код через мобильное приложение и оплачивает товар.
Функцию разрабатывали с нуля: подключали библиотеку формирования штрих-кодов и настраивали их генерацию таким образом, чтобы они подходили по формату для принтера наклеек. Там своя специфика с размерами, отступами и так далее.
Штрих-коды стали базой для создания системы аналитики продаж, которой пользуются поставщики, партнёры и владельцы GOODDY. С помощью наклеек легко отследить, какие продукты есть в наличии и где они находятся, а также что и в каком объёме покупают. Но об этом ниже.
Самый большой фронт работ касался административной панели. Нам предстояло сделать из уже существующего управляющего софта гибрид ERP-платформы и аналитической системы. Подробнее расскажем о каждом направлении задач ниже.
Доработка статистики и отчётов
Требовалась доработать систему аналитики, чтобы GOODDY, их партнёры и поставщики могли видеть, какие позиции пользуются спросом, а что потребители берут реже. Готовая еда — скоропортящийся продукт, в его продаже важно всеми способами избежать списаний.
Продажа товаров через штрих-коды, о которой мы говорили выше, позволяет отследить в административной панели оборот продукции по каждому конкретному автомату.
Мы сделали систему фильтров для формирования отчётов по продажам. С её помощью можно посмотреть, например, сколько салатов, супов и вторых блюд купили в выбранном минимаркете, сформировать документ со статистикой и выгрузить его в XLS-формате.
Разработка системы прогнозирования поставок
Важная деталь бэк-офиса GOODDY — оформление поставок в микромаркеты. Чтобы сделать этот процесс проще, исключить ручные расчёты и последствия человеческого фактора, наша команда разработала систему прогнозирования поставок.
Она собирает статистические данные по продажам:
— сколько продукции поставили;
— в какие автоматы;
— сколько товаров купили;
— по какой цене;
— какая вышла прибыль;
и другие показатели.
Далее платформа анализирует информацию и предполагает количество покупок на ближайшие неделю и месяц. Наша команда вместе с заказчиком продумывала алгоритмы и формулы для автоматического расчёта.
Теперь поставщикам понятно, какие товары и в каком объёме нужно привезти в конкретный холодильник.
Улучшение системы скидок и промо-акций
Система аналитики продаж раскрутила маркетинг. Зная оборот товаров в конкретной точке, можно управлять спросом с помощью промо-акций. Если у товара истекает срок годности, скидка сделает его более привлекательным. Возможно, он избежит списания.
Наша команда разработала в админке функции, позволяющие:
— устанавливать скидки на конкретные позиции и категории;
— регулировать период, в который действует скидка;
— выбирать минимаркеты, которые участвуют в акции.
Push-уведомления
Мы добавили их в приложение таким образом, чтобы их можно было настраивать прямо из админ-панели. До нас, к слову, пушей не было вообще.
Сделали функцию, через которую можно выбрать группу людей, контекст использования приложения, написать текст уведомления и массово разослать его. Например, если пользователи не заходили в систему месяц и не совершали покупки, можно настроить для них рассылку с промо: «Зайдите в приложение и получите скидку». Более того — пуши можно рассылать не только покупателям, но и поставщикам с партнёрами.
За 9 месяцев решили много задач — всё в один материал не уместить. Исправили критические баги и сделали сервис прогнозирования продаж. Это значит, что во многих столичных офисах, где установлены микромаркеты Gooddy, жизнь офисных работников стала легче и приятнее, а прибыль владельцев выше!
Анна Сабадаш
Если вы дошли до этого момента, наверняка у вас остались вопросы — пишите их в комментариях. И подписывайтесь на наш телеграм-канал https://t.me/+e3YmBK7CjcQ2ZTRi — там мы рассказываем о себе чуть больше, чем где бы то ни было. И ведем эфиры с топами бизнеса.
Петров Алексей
основатель GOODDY
Мне понравилось взаимодействие с ребятами, спасибо им за отзывчивость и профессионализм.
Мне кажется, что важно приходить к ребятам с объёмом задач, в таком случае, они могут собрать команду именно под ваш проект.
В противном случае, всё будет двигаться урывками, с паузами и низким уровнем вовлечённости. У нас было по разному, но в большей степени это зависило от частоты траншей с нашей стороны.
Изначально мне казалось, что аутсорсинг/аутстаффинг это дорогая и не удобная модель, но это совсем не так. Мало того, что вы экономите средства на HR, лиде, который будет всем этим управлять и налогах, так вы ещё и получаете в команду проверенных ребят, которые могут затащить любую задачу, а это супер важный поинт.
Бывает так, что попадаешь на разработчиков, которые ковыряются - ковыряются, а по итогу ничего сделать толком не смогли, а часы оплачены. Так что 100% могу рекомендовать Софториум, "дяде Жене" отдельный привет ?
Софториум с удовольствием обсудит вашу задачу