Проведите день доставок
От первого входа до сверенной кассы смены. Для человека за столом диспетчера.
Начало работы
Нужен браузер для консоли диспетчера и телефон с приложением курьера для каждого курьера. Сборок приложения в магазинах пока нет.
- 1
Откройте консоль
Нажмите Открыть демо или перейдите по адресу консоли вашего развёртывания.
- 2
Зарегистрируйтесь или войдите
Служба регистрируется сама: название, телефон, первый склад и ваша почта. Ссылка для входа приходит на почту и работает 15 минут. Кто зарегистрировал службу, тот её владелец.
- 3
Прочитайте карту
У каждого курьера везде один цвет линии: на карте, в списках и в планах. Короткая метка у имени показывает, он на смене, на перерыве или вне смены.
Команда и роли
В службе три роли. Владелец ведёт компанию: команду, склады, страницу получателя и тариф. Диспетчер ведёт день. Курьер работает в приложении. Один человек может состоять в нескольких службах и переключаться между ними.
- 1
Пригласите людей
Откройте Компания, затем Команда и нажмите Пригласить. Выберите роль и введите имя. Консоль даст ссылку, которую можно скопировать. Если указать почту, ссылка уйдёт и письмом.
- 2
Передайте приложение
Курьер открывает ссылку на телефоне. Приложение принимает приглашение, показывает название службы и объясняет, зачем нужна геолокация, прежде чем телефон запросит разрешение.
- 3
Отключайте при необходимости
Отключённый участник не может войти, а отключённому курьеру нельзя назначать заказы. Курьеру, который потерял вход, можно выдать новую ссылку для входа из того же меню.
Создайте заказ с точкой на карте
Для маршрута используется точка. Текст адреса нужен людям.
- 1
Начните новый заказ
Введите имя и номер телефона получателя.
- 2
Поставьте точку
Нажмите на карте там, куда нужно доставить посылку. Точка должна лежать в пределах Армении, API отклоняет координаты за её границами.
- 3
Подпишите адрес
Армянский обязателен. Русский и английский необязательны, но с ними экраны курьера и отслеживания читаются естественно на каждом языке.
- 4
Добавьте наличные или код
Для оплаты при получении включите её и укажите сумму в драмах. Чтобы потребовать одноразовый код, включите его: получатель увидит код в своей ссылке.
- 5
Сохраните и отметьте готовым
Заказ проходит этапы: черновик, готов, назначен, забран, на месте, доставлен. Неудавшаяся доставка возвращается диспетчеру, который может вернуть её в очередь.
Назначение и оптимизация
Назначайте вручную один заказ или запросите план для многих.
- 1
Назначьте один заказ
Выберите готовый заказ и активного курьера. При переназначении прежнее назначение отменяется, обе записи сохраняются в истории.
- 2
Запросите план
Выберите заказы и курьеров и попросите у оптимизатора предложение: он составит последовательность остановок для каждого курьера.
- 3
Проверьте и поправьте
Оптимальность не гарантируется. Переносите остановки между курьерами, меняйте порядок, пересчитывайте остаток.
- 4
Примените один раз
Применение назначает все остановки в принятом порядке или не меняет ничего. Если заказ изменился, пока вы проверяли, план отклоняется как устаревший.
Отправьте ссылку для отслеживания
Дайте получателю его собственную страницу, на которой нет ничего лишнего.
- 1
Создайте ссылку
Откройте заказ и скопируйте ссылку для отслеживания. Отправьте её любым привычным каналом.
- 2
Что видно
Статус, ETA, примерное положение курьера, время последнего обновления и, если нужно, код получения, который называют курьеру.
- 3
Что не видно никогда
Другие остановки, история маршрута и внутренний номер заказа. Телефон курьера виден, только если владелец включил это в настройках страницы получателя.
- 4
Отзывайте в любой момент
Отзыв действует сразу. Новая ссылка заменяет прежнюю. После доставки ссылки тоже истекают.
Приложение курьера: основы
Что стоит рассказать курьеру в первое утро.
- 1
Начните смену
Нажмите «начать» на карточке смены. Местоположение собирается только во время смены: перерыв ставит сбор на паузу, окончание останавливает.
- 2
Выполняйте рейс
Остановки идут в запланированном порядке. Нажмите на одну, чтобы увидеть, куда ехать, и откройте навигатор одним касанием.
- 3
Отмечайте этапы
Забрал, на месте, доставлено. Если доставка не удалась, выберите причину: получателя нет, отказ, неверный адрес или другая.
- 4
Зафиксируйте подтверждение
Сделайте фото, введите, кто принял посылку, или запросите одноразовый код, если заказ его требует.
- 5
Без сигнала не страшно
Изменения ждут в телефоне и уходят сами, когда появляется связь. В строке состояния видно, сколько их в очереди.
Оплата при получении и сверка
Наличные пересчитываются у двери и сдаются в конце смены.
- 1
Примите у двери
В заказе с наличными приложение показывает сумму к оплате и подставляет полученную сумму, считая сдачу.
- 2
Следите за остатком
На главном экране курьера виден накопленный итог к сдаче. Диспетчер видит ту же цифру по каждому курьеру.
- 3
Сдайте
В конце смены курьер нажимает «сдать наличные». Баланс переходит в состояние ожидания подтверждения.
- 4
Подтвердите получение
Диспетчер подтверждает в панели сверки наличных. Баланс возвращается к нулю.
Обзор API
Всё, что делают консоль и приложения, проходит через один HTTP API. Запросы несут bearer-токен из POST /auth/login или входа по ссылке, refresh-токены меняются при использовании. Каждый запрос работает в пределах активной компании пользователя. Ошибки это небольшие JSON-объекты с полями type, title и status.
| Область | Основные точки входа |
|---|---|
| Аутентификация | /auth/signup, /auth/login, /auth/magic-link, /auth/refresh, /auth/logout, /auth/switch-company, /me |
| Компания и команда | /company, /company/depots, /company/members, /company/invites, /company/billing, /auth/invite/accept |
| Заказы | /orders, /orders/{id}, /orders/{id}/status, /orders/{id}/events, /orders/{id}/notify-late |
| Назначение и планы | /orders/{id}/assign, /plans/recompute, /plans/move-stop, /plans/apply, /geo/optimize |
| Курьеры | /couriers, /couriers/{id}, /couriers/{id}/eta, /courier/me, /courier/shift/start|break|end |
| Работа курьера | /courier/orders, /courier/orders/{id}/status, /courier/location |
| Наличные и заработок | /courier/cash, /cash/settlements, /courier/earnings, /courier/history |
| Отслеживание получателем | /orders/{id}/tracking, /track/{token}, /track/{token}/rating |
| События в реальном времени | /events (server-sent events), /events/latest-cursor |
| Гео | /geo/route, /geo/matrix, /geo/optimize, /healthz |
Гео-методы доступны только вошедшим диспетчерам и курьерам; публичная страница отслеживания сама считает ETA на сервере.
Свой сервер
Одно развёртывание обслуживает много служб. Каждая видит только свои заказы, курьеров и настройки.
- 1
Проверьте состояние
GET /healthzотвечает 200, когда работают маршрутизация, оптимизация, база и тайлы, и 503 с названием отказавшей части, когда нет. - 2
Обновляйте карту
Раз в неделю обновляйте данные OpenStreetMap: одна команда скачивает их, пересобирает граф маршрутов и проверяет тестовый маршрут.
- 3
Копии и проверка восстановления
Ночные копии базы проверяются при создании. Запускайте проверку восстановления после изменений схемы и раз в месяц.
- 4
Задайте сроки хранения
История местоположения и недействующие токены отслеживания удаляются по расписанию. Значения по умолчанию условные, пока юрист не определит настоящие сроки.
Полное руководство: файл OPERATIONS.md в репозитории.