Обсяг доставок зростає — 50, 100, 300 замовлень на день. Комісії агрегаторів з'їдають маржу. Власна кур'єрська служба вирішує обидві проблеми: ви контролюєте якість і економите до 40%. За даними нашого досвіду, після впровадження власної системи операційні витрати знижуються на 25–40%, а час доставки скорочується в середньому на 20%. Наші інженери реалізували 30+ проєктів кур'єрської доставки для e-commerce та доставки їжі. За 8–12 тижнів ви отримуєте систему під ключ з диспетчерською панеллю, мобільним додатком кур'єра та трекінгом для клієнта. Система управління кур'єрами складається з трьох компонентів: бекенду, веб-панелі та мобільного додатку. У цій статті — архітектура, моделі даних, алгоритми розподілу та відповіді на ключові питання впровадження. Зв'яжіться з нами для детального розрахунку вашої системи.
Архітектура системи
Компоненти
- Backend: REST API + WebSocket-сервер для реалтайм-координат. Обробляє до 1000 замовлень на день.
- Диспетчерська панель: веб-інтерфейс для управління кур'єрами та маршрутами.
- Мобільний додаток кур'єра: React Native або PWA для прийому завдань та відправки GPS-координат кожні 30 секунд.
Модель даних
couriers ( id, user_id, name, phone, vehicle_type, status: offline | available | busy | on_break, current_lat, current_lng, last_seen_at, zone_ids (jsonb) -- зони доставки, за які відповідає кур'єр ) delivery_tasks ( id, order_id, courier_id (nullable), status: pending | assigned | picked_up | in_transit | delivered | failed, pickup_address, delivery_address, scheduled_at, picked_up_at, delivered_at, proof_photo_url, -- фото при врученні recipient_signature_url, -- підпис отримувача failure_reason ) courier_routes ( id, courier_id, date, task_ids (jsonb, ordered), -- черговість доставок total_distance_km, estimated_duration_min ) Диспетчерська панель
Карта з кур'єрами в реальному часі (Яндекс.Карти або Leaflet). Доступний список нерозподілених замовлень, drag-and-drop призначення, черга завдань з перестановкою. Моніторинг: якщо кур'єр не рухається 20 хвилин — алерт диспетчеру. Історія маршрутів та ефективність за день.
Мобільний додаток кур'єра
Основні екрани:
- Список завдань — поточний маршрут, наступна точка.
- Навігація — інтеграція з Яндекс.Навігатором через deep link.
- Підтвердження доставки — фото вручення, підпис або код підтвердження з SMS.
- Обробка помилок — причина: не відчинили двері, перенесення, відмова.
Трекінг для покупця
Покупець отримує SMS/push з посиланням на трекінг-сторінку. На сторінці — карта з кур'єром у реальному часі та ETA, що перераховується кожні 2 хвилини.
Зони доставки
Географічні зони — полігони на карті, зберігаються в PostgreSQL з розширенням PostGIS. Запит виконується за 5–10 мс:
SELECT * FROM delivery_zones WHERE ST_Contains(polygon, ST_SetSRID(ST_MakePoint(lng, lat), 4326)); Обробка невдалих доставок
Кур'єр не застав отримувача — статус failed з причиною. Автоматично планується повторна доставка на наступний день або клієнт обирає новий час. Диспетчер отримує сповіщення.
Вимоги до інфраструктури
Для роботи системи достатньо двох серверів: один для бекенду та бази даних, другий для WebSocket-сервера та черг. При навантаженні до 1000 замовлень на день використовується PostgreSQL з PostGIS та Redis для кешування. Оптимальна конфігурація: 4 vCPU, 8 GB RAM на кожен сервер.Як працює автоматичний розподіл замовлень?
Ручне призначення: диспетчер перетягує замовлення на кур'єра на карті — підходить до 50 замовлень на день. Автоматична маршрутизація використовує алгоритм Vehicle Routing Problem (VRP). Для невеликих обсягів — жадібний алгоритм (найближчий вільний кур'єр). Для серйозної оптимізації — Google OR-Tools або сервіси OptimoRoute, Route4Me.
| Критерій | Ручне призначення | Автоматичне (VRP) |
|---|---|---|
| Час на диспетчеризацію | 5–10 хв на замовлення | 1–2 сек на весь маршрут |
| Оптимальність маршруту | Залежить від досвіду | Математично оптимальний |
| Масштабованість | До 50 замовлень/день | Будь-яка кількість |
| Вартість реалізації | Безкоштовно (вбудовано) | Вимагає інтеграції OR-Tools або API |
Перехід на автоматичний розподіл скорочує час диспетчеризації в 100–600 разів. Зв'яжіться з нами, щоб обговорити автоматизацію вашої диспетчерської.
# Проста евристика: призначити найближчого вільного кур'єра def assign_courier(task): available_couriers = Courier.objects.filter(status='available') nearest = min(available_couriers, key=lambda c: haversine(c.location, task.pickup_address)) task.assign(nearest) Порівняння інструментів маршрутизації
| Інструмент | Тип | Безкоштовний? | Точність | Масштабованість |
|---|---|---|---|---|
| Google OR-Tools | Бібліотека | Так (Apache 2.0) | Висока | До 200 точок |
| OptimoRoute | API | Комерційний | Дуже висока | Необмежено |
Чому власна доставка вигідніша?
Власна доставка обходиться в 2–3 рази дешевше агрегаторів при обсязі від 100 замовлень на день. Система окупається при обсязі від 50 замовлень на день. Економія на комісіях агрегаторів сягає 40% при 100+ замовленнях, а окупність системи — 6–8 місяців. Ви отримуєте повний контроль над брендом, гнучкі тарифи та розрахунок вартості доставки, а також всі дані для аналітики. Точність ETA становить ±3 хвилини. Гарантуємо стабільну роботу навіть у пік — перевірено на 30+ проєктах.
Процес впровадження
- Аналітика: вивчаємо ваш бізнес-процес, обсяг замовлень, географію.
- Проєктування: архітектура, модель даних, прототип інтерфейсу.
- Реалізація: розробка бекенду, диспетчерської панелі, мобільного додатку.
- Тестування: навантажувальне тестування, юзабіліті-тести з реальними кур'єрами.
- Деплой: розгортання на вашому сервері або в хмарі, навчання команди.
Що входить у роботу
- REST API та WebSocket-сервер для реалтайм-трекінгу
- Диспетчерська панель на React з картою та drag-and-drop
- Мобільний додаток кур'єра (React Native) з навігацією та фотофіксацією
- Інтеграція з CRM/ERP через API
- Документація та навчання
- Гарантійна підтримка 3 місяці
Термін розробки повної системи під ключ — 8–12 тижнів. Вартість розраховується індивідуально. Для консультації та розрахунку зв'яжіться з нами.







