Курьерская служба без надёжного инструмента для диспетчера — как аэропорт без диспетчерской вышки. Мы это знаем: работали с десятками курьерских сервисов, внедряли решения для управления потоком заказов в реальном времени. Диспетчеру нужно одновременно видеть карту с курьерами, обрабатывать очередь заказов и реагировать на изменения — и всё это на мобильном устройстве. На планшете или телефоне — карта с десятками точек, очередь необработанных заказов и статусы активных доставок. Требования к UI плотнее, чем в клиентском приложении, а требования к надёжности — выше, чем в курьерском. Ниже разберём, как мы решаем эти задачи с помощью современного стека, включая Flutter, Google Maps SDK и WebSocket.
Как обеспечить отзывчивость карты при десятках курьеров?
Два типа маркеров на одной карте: зелёные точки — доступные курьеры, красные — активные доставки. При масштабировании нужна кластеризация чтобы карта не превращалась в кашу из иконок. Согласно документации Google Maps SDK, кластеризация обязательна при более чем 100 маркерах. MarkerClusterManager (Google Maps Android) или GMUClusterManager (iOS) с кастомным ClusterRenderer — цвет кластера показывает тип объектов внутри.
Подробнее о кластеризации
Кластеризация группирует маркеры в группы, уменьшая количество отрисовываемых элементов. При зуме кластеры распадаются. Мы используем алгоритм на основе расстояния (20 пикселей) и ограничиваем максимальное количество маркеров на экране до 50.Tap по маркеру курьера — всплывающая карточка: имя, текущий статус, заказов в работе, ETA до следующей точки. Из карточки сразу — назначить новый заказ или позвонить. Tap по маркеру заказа — детали заказа, статус, назначенный курьер (если есть), кнопка переназначить.
Фильтрация и зоны — разработка мобильного приложения
Курьерская служба может работать по зонам города. Диспетчер должен фильтровать карту по зоне, видеть только своих курьеров. Polygon overlay через GMSPolygon / MKPolygon с полупрозрачной заливкой для отображения зон. Переключение зон — таб или dropdown сверху.
| Компонент | Инструмент | Версия |
|---|---|---|
| Карта | Google Maps SDK | Последняя стабильная |
| Кластеризация | MarkerClusterManager / GMUClusterManager | — |
| Оверлеи зон | GMSPolygon / MKPolygon | iOS 14+ / Android 10+ |
Как автоматизировать распределение заказов?
Ручное назначение: диспетчер видит новый заказ, смотрит на карте ближайших свободных курьеров (подсвечены), выбирает из списка. Список сортируется по расстоянию от точки отправки (серверный расчёт через PostGIS ST_Distance). В среднем диспетчер обрабатывает до 50 заказов в час. Наши алгоритмы сокращают время распределения на 30%.
Автоматическое распределение — кнопка «авто» включает серверный алгоритм. Диспетчер может вмешаться и переназначить. При переназначении заказа — предыдущий курьер получает push-уведомление «заказ снят». Без этого курьер может приехать на адрес и узнать что заказ уже доставил другой.
Очередь необработанных заказов
Список новых заказов в реальном времени через WebSocket. DiffUtil (Android) / SwiftUI AnimatedList для анимации добавления/удаления строк. Приоритет — срочные заказы выделяются цветом, сортировка по умолчанию — по времени оформления. Счётчик непринятых заказов — badge на иконке таба. Если диспетчер не обрабатывает очередь больше 5 минут — звуковой сигнал.
Почему важен чат с курьером?
Коммуникация в реальном времени снижает количество ошибок и ускоряет решение проблем. Мы рекомендуем встроенный чат, но для небольших команд достаточно deep link в Telegram или WhatsApp с номером курьера. Для корпоративного решения используем Firebase Realtime Database или Supabase Realtime как backend для чата, простой RecyclerView / LazyColumn на клиенте. Голосовые сообщения — приоритет на мобильном диспетчере. Записать и отправить быстрее, чем печатать.
Аналитика смены
Простой дашборд: заказов принято / в работе / завершено / отменено. Средний интервал доставки. Курьеры по статусам. Обновляется в реальном времени из WebSocket-потока. Для углублённого анализа добавляем таблицу с метриками:
| Метрика | Описание | Период |
|---|---|---|
| Среднее время доставки | От назначения до завершения | Текущая смена |
| Заказов на курьера | Количество заказов на одного курьера | За день |
| Процент своевременных доставок | Доставлено в срок | За неделю |
Не нужен отдельный экран аналитики — достаточно плашки поверх карты или боковой панели на планшете. Это позволяет диспетчеру оперативно оценивать ситуацию.
Что входит в разработку?
- Архитектурная документация — описание компонентов, диаграммы потоков.
- Исходный код — под контролем версий (Git), с CI/CD.
- Доступы к сторам — публикация в App Store и Google Play.
- Обучение команды — 2 сессии по работе с панелью администратора.
- Гарантия — исправление ошибок в течение 6 месяцев после релиза.
Мы занимаемся мобильной разработкой более 5 лет, реализовали 30+ проектов для логистики и доставки. Наши решения прошли проверку в эксплуатации — гарантируем стабильность и производительность. Если вы хотите улучшить свою курьерскую службу, закажите разработку мобильного приложения для диспетчера.
Сроки и стоимость
Срок: от 8 до 14 недель с учётом интеграции. Стоимость рассчитывается индивидуально — свяжитесь с нами для точной оценки. Получите консультацию по вашему проекту уже сегодня.







