Проверки магазинов и фотоотчёты в Telegram
Shelf Audit — мобильное приложение для сотрудников, которые проверяют выкладку товаров в магазинах. Аудитор находит нужную точку, подтверждает своё местоположение и отправляет фотографии. Руководитель видит отчёты, следит за заданиями и проверяет результаты визитов в том же приложении.
Задача — Организовать выездные проверки магазинов через Telegram
Полевым сотрудникам нужен был понятный порядок работы с телефона: найти магазин, начать проверку на месте и приложить нужные фотографии. Руководителю — видеть, кто выполнил задание, когда прошёл визит и какие материалы прислал сотрудник. Требовалось связать магазины, задания, геопроверку и фотоотчёты, разграничить доступ аудитора и руководителя и сохранить историю проверок. Отдельно в приложении предусмотрены учёт вознаграждений и заявки на выплаты.
Мой вклад — Разработал приложение с нуля
Я разработал Shelf Audit с нуля: спроектировал базу данных, реализовал серверную логику и мобильные интерфейсы для аудитора и руководителя. Настроил вход через Telegram, поиск магазинов по расстоянию, проверку координат и загрузку фотоотчётов. Связал задания с визитами и их результатами, добавил кошелёк, историю выплат и административные инструменты. Продумал структуру организаций и разграничение доступа к их данным.
- Геолокация и магазины
- Реализовал сортировку магазинов по расстоянию и проверку присутствия сотрудника на месте. Предусмотрел обновление координат и обработку недоступной геолокации.
- Вход через Telegram
- Реализовал проверку данных Telegram и создание сессии приложения. Доступ к экранам и операциям связан с ролью пользователя в организации.
- Фотоотчёты
- Разработал сценарий полевого отчёта: привязку фотографий к визиту, загрузку материалов и просмотр поступающих кадров руководителем.
- Задания аудиторам
- Реализовал назначение магазина и исполнителя, сроки и статусы заданий. Проверка связана с конкретным заданием, поэтому её можно проследить от назначения до отчёта.
- Кабинет руководителя
- Разработал ленту фотографий и инструменты контроля проверок. В карточке визита собраны магазин, сотрудник, время, расстояние и загруженный кадр.
- Данные и права доступа
- Спроектировал структуру организаций и связи магазинов, заданий и визитов. Разграничение данных выполняется на стороне базы, а не только скрытием элементов интерфейса.
От задания в магазине до проверки отчёта
Найти магазин и начать проверку
Сотрудник открывает приложение внутри Telegram и видит доступные магазины в порядке расстояния. Поиск помогает быстро найти нужную точку, а геопроверка определяет, можно ли начать визит. В открытой проверке показаны два обязательных вида снимков: касса или холодильник и обычная полка. Когда оба кадра готовы, сотрудник может отправить отчёт.
Просмотреть фотографии и детали визита
Поступившие фотографии собраны в общей ленте. У каждого кадра есть магазин, адрес, время визита и исполнитель. Руководитель может перейти от просмотра полок к отдельной проверке: увидеть фотографию крупнее, проверить время начала и отправки, расстояние до магазина и координаты сотрудника. Эти данные помогают разбирать конкретный визит вместе с его материалами.
Назначить задания и проверить выполнение
Для нового задания руководитель выбирает магазин, назначает сотрудника и указывает срок. В списке видны исполнители, даты и статусы работы. Фильтры позволяют оставить задания конкретного человека или магазина и посмотреть нужный период. Так руководитель может проверить отдельный маршрут или разобрать работу сотрудника, не просматривая всю историю вручную.
Проверить вознаграждения и запросить выплату
В кошельке сотрудника отображаются доступный баланс, заработанная сумма и средства, переданные на выплату. Здесь же указывается номер m10 и открывается заявка на вывод. Перед отправкой приложение показывает сумму и реквизиты для подтверждения. История сохраняет предыдущие заявки и их статусы, чтобы сотрудник мог проверить, какие выплаты ещё ожидаются, а какие уже обработаны.
Управлять проверками и выплатами с телефона
Руководитель отбирает проверки по магазину, товару, сотруднику, периоду и статусу. В административном разделе можно выбрать магазин для загрузки планограммы и просмотреть заявки на выплаты. Для каждой заявки показаны сотрудник, реквизиты, сумма и доступное действие. Эти инструменты также работают в мобильном интерфейсе — перейти от просмотра отчёта к административным операциям можно внутри приложения.
Мобильный интерфейс, геоданные и хранение фотографий
Интерфейс написан на React и TypeScript, а Tailwind CSS используется для оформления мобильных экранов. Supabase отвечает за сессии, доступ к PostgreSQL и хранение фотографий. PostGIS используется для географических данных и проверок расстояния. Связи в базе объединяют организацию, магазин, задание, визит и его материалы; политики доступа ограничивают работу с этими записями. Telegram передаёт данные для входа, а сервер проверяет их перед созданием сессии.
- TypeScript
- React
- Supabase
- PostgreSQL
- PostGIS
- Telegram API
- Tailwind CSS
- Docker