редакции
Внезапное падение продаж и отваливающиеся холодильники: как мы вели техподдержку GOODDY
Сибирские айтишники, которые могут (почти) всё

Привет! Это Софториум — команда с хардовым подходом в разработке. С 2021года мы развиваем продукты компаний и решаем задачи, с которыми справляются не все. Свои проекты нам доверяют Sokolov, Альпинтех, Umai.kg, аптечные сети «Столички» и "Неофарм".К нам приходят, чтобы:
- найти причину отмены покупок и падения продаж;
- закодить push-уведомления в приложении;
- понять, почему техника не «слушается» программу;
- избавить менеджеров от ручного прогнозирования поставок.
За 9 месяцев мы сделали всё вышеперечисленное и даже больше для GOODDY — сервиса по продаже готовой еды. В кейсе расскажем как.
GOODDY — сеть микромаркетов с ассортиментом из 1000+ блюд
Микромаркеты устанавливают в бизнес-центрах и офисах крупных компаний и пополняют свежей едой несколько раз в неделю. Посетители и сотрудники скачивают приложение, выбирают блюдо в холодильнике, сканируют код и оплачивают покупку в 2 клика. В итоге тратят меньше времени на обед и не опаздывают с перерывов.
Так HR-бренд работодателя растёт и процветает, поставщики увеличивают продажи, а GOODDY зарабатывает деньги на комиссиях. Все в плюсе. IT-инфраструктура GOODDY выглядит так: Заказчик обратился за поддержкой и доработкой всего проекта. Вместе мы смогли решить целый комплекс задач: отладили систему платежей, настроили обновления так, чтобы сторы их больше не отклоняли, и устранили другие неполадки. Теперь расскажем обо всем подробнее. Одна из первых проблем, с которой мы столкнулись — холодильники один за другим переставали отображаться в системе управления. По необъяснимым причинам терялась связь с бэкендом, из-за этого пропадала возможность следить за состоянием холодильника — его температурой, уровнем влажности и другими показателями. Самое главное — нельзя было увидеть, кто и когда его открывает. Содержимое могли украсть, потому что видеокамеры тоже отключались. Симптоматика одна, а причин может быть множество. Долго искали, что не так — нашли целых две проблемы. WebSocket — это технология, которая позволяет установить связь между сервером и клиентом. Клиент — это приложение на компьютере или смартфоне пользователя, а сервер — это удаленное устройство, которое хранит данные и обеспечивает доступ к ним. Так вот сервер переставал работать из-за того, что диск устройства был полностью заполнен логами — записями событий в системе. Новые логи формировались постоянно, а старые при этом не стирались. Память на диске переполнялась, и это останавливало работу многих сервисов, в том числе WebSocket-сервер. Сделали функцию очистки диска, проверки статуса WebSocket-сервера и его перезагрузки в административной панели. После перезапуска настроили вывод лога с записью о последнем событии в программе, чтобы понимать, не произошёл ли какой-то баг. Доработка системы управления холодильниками — только часть задач, с которыми к нам обратился заказчик. Другим его запросом была переработка мобильного приложения. Вернее, отказ от него в пользу веб-технологий. Спойлер: не получилось. Почему — расскажем ниже. Мобильное приложение GOODDY — нативное, то есть, по сути, у компании два разных приложения для iOS и Android. Поддержка и продвижение таких сервисов стоят дорого, поэтому у заказчика была идея отказаться от них и сделать PWA. PWA — лёгкое веб-приложение, которое запускается и работает в браузере непосредственно в момент обращения к нему. Оно не «болтается» в памяти телефона, и им можно быстро пользоваться. Обслуживать веб-приложение намного дешевле, потому что это сайт, который визуально трансформируется в мобильный клиент. Были сомнения, что запрос заказчика можно реализовать. Да так, чтобы PWA стабильно работало, выполняло все функции и не плодило баги. Поэтому сперва решили оценить риски и запустить прототип — на этом-то этапе и вскрылись проблемы. Самая главная функция приложения — сканирование штрих-кодов — не работала. Делать PWA без этой опции не имело никакого смысла, ведь с помощью штрих-кодов люди оплачивают товары, а система учёта фиксирует продажи. PWA-приложение для подключения к камерам использует сторонние библиотеки, разрабатывать которые с нуля долго, дорого и сложно. Решение — воспользоваться уже готовыми библиотеками, чтобы не тратить драгоценные часы. И если библиотеки для Android были в свободном доступе и работали стабильно, то с iOS было сложнее. Платные библиотеки ушли из России, бесплатных было несколько, но они не работали на последних версиях айфонов — 14 и 15. Из-за этого камера не фокусировалась и не могла распознать штрих-код. На этом эксперимент с прототипом завершили. Стало понятно, что сэкономить на PWA не выйдет: дешевле поддержать нативное приложение, чем писать библиотеки с нуля. В мае 2023 года у GOODDY резко упали продажи. Холодильники стояли, люди к ним подходили, но покупку не завершали — в статистике было много отмен. Внимание, Софториум, вопрос: что не так? Чтобы понять в чем проблема, подключили логирование. Теперь уже в мобильном приложении. Мы внедрили запись действий пользователя и работы приложения в лог-файлы, и когда у юзера что-то ломалось, он мог отправить информацию о краше на сервер. По информации из лога команда разработки понимает, из-за чего произошёл баг. Делайте ваши ставки в комментариях, откуда пошёл сбой. Беда пришла, откуда не ждали — платёжный шлюз PayU глючил. PayU — это зарубежная система, которая то уходила из России, то проводила ребрендинг и меняла домены, то отказывалась принимать оплату с определённых карт. В итоге мы предложили отказаться от них и подключили отечественный шлюз, который исправно выполняет свои функции. Для подстраховки добавили возможность создавать продажи вручную. Если оплата не проходила по не зависящим от платформы причинам, оператор вручную собирал заказ и генерировал для покупателя ссылку, с помощью которой можно было купить товар в браузере. В целом, у мобильного приложения был огромный минус — большая часть логики была на клиенте, в том числе платёжная. Работа шлюзов и обработка запросов с платежами шли со стороны клиентской части — то есть фронтенда. Чтобы внести в сервис хоть какие-то изменения, приходилось постоянно обновлять приложение в сторах. Мы доработали код таким образом, чтобы сложная логика, связанная с геоданными, получением информации для дебага и платежами, была реализована на бэкенде. Теперь клиент приложения просто посылает запросы на сервер, а последний выполняет требуемые действия. На этом проблемы приложения не закончились. Оно использовало старые версии пакетов, в том числе для определения геолокации юзера. Из-за этого местонахождение покупателей определялось неверно. Проблема в том, что продажи GOODDY во многом построены на доверии. Холодильник может открыть любой человек. Очевидно, не у всех возникнет честное желание отсканировать код и отдать деньги за товар. Для этого и необходимо определять геопозицию — чтобы зафиксировать, у какого холодильника находится пользователь и избежать краж. Мы заменили пакет на более свежий — от другого вендора. Геопозиция заработала, но сторы отказывались заливать приложение с обновлениями. Требовали указать, для чего сервису данные о местоположении пользователя. Мы указали в специальной графе магазинов, для чего собираем эту информацию. Сейчас всё исправно работает. Для оптимизации процессов GOODDY и получения более глубоких данных о продажах мы внедрили систему штрих-кодов. Это позволит сети отслеживать каждую единицу товара и в дальнейшем создать удобную систему аналитики, которая спрогнозирует спрос и финансовые результаты. Как всё происходит: Функцию разрабатывали с нуля: подключали библиотеку формирования штрих-кодов и настраивали их генерацию таким образом, чтобы они подходили по формату для принтера наклеек. Там своя специфика с размерами, отступами и так далее. Штрих-коды стали базой для создания системы аналитики продаж, которой пользуются поставщики, партнёры и владельцы GOODDY. С помощью наклеек легко отследить, какие продукты есть в наличии и где они находятся, а также что и в каком объёме покупают. Но об этом ниже. Самый большой фронт работ касался административной панели. Нам предстояло сделать из уже существующего управляющего софта гибрид ERP-платформы и аналитической системы. Подробнее расскажем о каждом направлении задач ниже. Доработка статистики и отчётов Требовалась доработать систему аналитики, чтобы GOODDY, их партнёры и поставщики могли видеть, какие позиции пользуются спросом, а что потребители берут реже. Готовая еда — скоропортящийся продукт, в его продаже важно всеми способами избежать списаний. Продажа товаров через штрих-коды, о которой мы говорили выше, позволяет отследить в административной панели оборот продукции по каждому конкретному автомату. Мы сделали систему фильтров для формирования отчётов по продажам. С её помощью можно посмотреть, например, сколько салатов, супов и вторых блюд купили в выбранном минимаркете, сформировать документ со статистикой и выгрузить его в XLS-формате. Разработка системы прогнозирования поставок Важная деталь бэк-офиса GOODDY — оформление поставок в микромаркеты. Чтобы сделать этот процесс проще, исключить ручные расчёты и последствия человеческого фактора, наша команда разработала систему прогнозирования поставок. Она собирает статистические данные по продажам: Далее платформа анализирует информацию и предполагает количество покупок на ближайшие неделю и месяц. Наша команда вместе с заказчиком продумывала алгоритмы и формулы для автоматического расчёта. Теперь поставщикам понятно, какие товары и в каком объёме нужно привезти в конкретный холодильник. Система аналитики продаж раскрутила маркетинг. Зная оборот товаров в конкретной точке, можно управлять спросом с помощью промо-акций. Если у товара истекает срок годности, скидка сделает его более привлекательным. Возможно, он избежит списания. Наша команда разработала в админке функции, позволяющие: Мы добавили их в приложение таким образом, чтобы их можно было настраивать прямо из админ-панели. До нас, к слову, пушей не было вообще. Сделали функцию, через которую можно выбрать группу людей, контекст использования приложения, написать текст уведомления и массово разослать его. Например, если пользователи не заходили в систему месяц и не совершали покупки, можно настроить для них рассылку с промо: «Зайдите в приложение и получите скидку». Более того — пуши можно рассылать не только покупателям, но и поставщикам с партнёрами. За 9 месяцев решили много задач — всё в один материал не уместить. Если вы дошли до этого момента, наверняка у вас остались вопросы — пишите их в комментариях. И подписывайтесь на наш телеграм-канал — там мы рассказываем о себе чуть больше, чем где бы то ни было. И ведем эфиры с топами бизнеса.


Как холодильники потеряли связь с бэкендом

Как решили проблему
Отказ от PWA из-за ухода зарубежных библиотек с рынка

Внезапное падение продаж


Чиним геопозицию пользователя, чтобы избежать краж

Продажи через штрих-коды

Превратили административную панель в центр управления бизнесом


Улучшение системы скидок и промо-акций

Push-уведомления

Вот такой мы получили отзыв о нашей работе:
Мне понравилось взаимодействие с ребятами, спасибо им за отзывчивость и профессионализм.Изначально мне казалось, что аутсорсинг/аутстаффинг это дорогая и не удобная модель, но это совсем не так. Мало того, что вы экономите средства на HR, лиде, который будет всем этим управлять и налогах, так вы ещё и получаете в команду проверенных ребят, которые могут затащить любую задачу, а это супер важный поинт.Бывает так, что попадаешь на разработчиков, которые ковыряются — ковыряются, а по итогу ничего сделать толком не смогли, а часы оплачены. Так что 100% могу рекомендовать Софториум!