Задача
Продукция бренда продаётся в магазинах разных областей и районов. Чтобы мотивировать продавцов, нужно было начислять кешбэк за каждый проданный товар. При этом важно, чтобы один товар не засчитывался дважды, каждая продажа проверялась, а деньги продавца считались без ошибок.
Решение
UFLEX сделал мобильное приложение для продавцов, админ-панель для команды и сервер, который их связывает. На складе для каждого товара создаются уникальные серийные коды и печатаются в виде QR-этикеток. Во время продажи продавец сканирует QR-коды в приложении или вводит серийный номер вручную, добавляет имя и телефон покупателя и отправляет продажу на проверку. Один серийный код можно использовать только один раз.
Продажу проверяет сотрудник колл-центра: при подтверждении на баланс продавца начисляется кешбэк, при отказе указывается причина. Продавец отправляет заявку на вывод денег с баланса на карту, заявка подтверждается SMS-кодом и рассматривается кассовым менеджером.
Баланс ведётся в отдельной книге учёта: записи не изменяются и не удаляются, а баланс считается как сумма этих записей. Заявка на вывод проверяется внутри транзакции, чтобы она не могла выполниться дважды одновременно.
В админ-панели каждый сотрудник работает в своей роли: администратор, колл-центр, склад и кассовый менеджер. В панели видны магазины по областям и районам, продавцы, покупатели, товары, серийные коды, отправленные SMS и аналитика продаж; списки можно выгрузить в Excel.
Состав системы
- Мобильное приложение продавца — QR-сканер, продажи, баланс, вывод
- Серийные коды и печать QR-этикеток
- Проверка продаж (модерация) — для колл-центра
- Книга учёта баланса и заявки на вывод
- Админ-панель — роли, магазины, продавцы, аналитика
- Вход и подтверждение по SMS-коду
Технологии
- Node.js (Express) — серверная часть
- PostgreSQL (Prisma) — база данных
- React (Mantine) — админ-панель
- Expo / React Native — мобильное приложение
- Eskiz — SMS-сообщения