Проведите день доставок

От первого входа до сверенной кассы смены. Для человека за столом диспетчера.

Открыть консоль

Начало работы

Нужен браузер для консоли диспетчера и телефон с приложением курьера для каждого курьера. Сборок приложения в магазинах пока нет.

  1. 1

    Откройте консоль

    Нажмите Открыть демо или перейдите по адресу консоли вашего развёртывания.

  2. 2

    Зарегистрируйтесь или войдите

    Служба регистрируется сама: название, телефон, первый склад и ваша почта. Ссылка для входа приходит на почту и работает 15 минут. Кто зарегистрировал службу, тот её владелец.

  3. 3

    Прочитайте карту

    У каждого курьера везде один цвет линии: на карте, в списках и в планах. Короткая метка у имени показывает, он на смене, на перерыве или вне смены.

Команда и роли

В службе три роли. Владелец ведёт компанию: команду, склады, страницу получателя и тариф. Диспетчер ведёт день. Курьер работает в приложении. Один человек может состоять в нескольких службах и переключаться между ними.

  1. 1

    Пригласите людей

    Откройте Компания, затем Команда и нажмите Пригласить. Выберите роль и введите имя. Консоль даст ссылку, которую можно скопировать. Если указать почту, ссылка уйдёт и письмом.

  2. 2

    Передайте приложение

    Курьер открывает ссылку на телефоне. Приложение принимает приглашение, показывает название службы и объясняет, зачем нужна геолокация, прежде чем телефон запросит разрешение.

  3. 3

    Отключайте при необходимости

    Отключённый участник не может войти, а отключённому курьеру нельзя назначать заказы. Курьеру, который потерял вход, можно выдать новую ссылку для входа из того же меню.

Создайте заказ с точкой на карте

Для маршрута используется точка. Текст адреса нужен людям.

  1. 1

    Начните новый заказ

    Введите имя и номер телефона получателя.

  2. 2

    Поставьте точку

    Нажмите на карте там, куда нужно доставить посылку. Точка должна лежать в пределах Армении, API отклоняет координаты за её границами.

  3. 3

    Подпишите адрес

    Армянский обязателен. Русский и английский необязательны, но с ними экраны курьера и отслеживания читаются естественно на каждом языке.

  4. 4

    Добавьте наличные или код

    Для оплаты при получении включите её и укажите сумму в драмах. Чтобы потребовать одноразовый код, включите его: получатель увидит код в своей ссылке.

  5. 5

    Сохраните и отметьте готовым

    Заказ проходит этапы: черновик, готов, назначен, забран, на месте, доставлен. Неудавшаяся доставка возвращается диспетчеру, который может вернуть её в очередь.

Назначение и оптимизация

Назначайте вручную один заказ или запросите план для многих.

  1. 1

    Назначьте один заказ

    Выберите готовый заказ и активного курьера. При переназначении прежнее назначение отменяется, обе записи сохраняются в истории.

  2. 2

    Запросите план

    Выберите заказы и курьеров и попросите у оптимизатора предложение: он составит последовательность остановок для каждого курьера.

  3. 3

    Проверьте и поправьте

    Оптимальность не гарантируется. Переносите остановки между курьерами, меняйте порядок, пересчитывайте остаток.

  4. 4

    Примените один раз

    Применение назначает все остановки в принятом порядке или не меняет ничего. Если заказ изменился, пока вы проверяли, план отклоняется как устаревший.

Отправьте ссылку для отслеживания

Дайте получателю его собственную страницу, на которой нет ничего лишнего.

  1. 1

    Создайте ссылку

    Откройте заказ и скопируйте ссылку для отслеживания. Отправьте её любым привычным каналом.

  2. 2

    Что видно

    Статус, ETA, примерное положение курьера, время последнего обновления и, если нужно, код получения, который называют курьеру.

  3. 3

    Что не видно никогда

    Другие остановки, история маршрута и внутренний номер заказа. Телефон курьера виден, только если владелец включил это в настройках страницы получателя.

  4. 4

    Отзывайте в любой момент

    Отзыв действует сразу. Новая ссылка заменяет прежнюю. После доставки ссылки тоже истекают.

Приложение курьера: основы

Что стоит рассказать курьеру в первое утро.

  1. 1

    Начните смену

    Нажмите «начать» на карточке смены. Местоположение собирается только во время смены: перерыв ставит сбор на паузу, окончание останавливает.

  2. 2

    Выполняйте рейс

    Остановки идут в запланированном порядке. Нажмите на одну, чтобы увидеть, куда ехать, и откройте навигатор одним касанием.

  3. 3

    Отмечайте этапы

    Забрал, на месте, доставлено. Если доставка не удалась, выберите причину: получателя нет, отказ, неверный адрес или другая.

  4. 4

    Зафиксируйте подтверждение

    Сделайте фото, введите, кто принял посылку, или запросите одноразовый код, если заказ его требует.

  5. 5

    Без сигнала не страшно

    Изменения ждут в телефоне и уходят сами, когда появляется связь. В строке состояния видно, сколько их в очереди.

Оплата при получении и сверка

Наличные пересчитываются у двери и сдаются в конце смены.

  1. 1

    Примите у двери

    В заказе с наличными приложение показывает сумму к оплате и подставляет полученную сумму, считая сдачу.

  2. 2

    Следите за остатком

    На главном экране курьера виден накопленный итог к сдаче. Диспетчер видит ту же цифру по каждому курьеру.

  3. 3

    Сдайте

    В конце смены курьер нажимает «сдать наличные». Баланс переходит в состояние ожидания подтверждения.

  4. 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 на сервере.

Документ OpenAPI (JSON)

Свой сервер

Одно развёртывание обслуживает много служб. Каждая видит только свои заказы, курьеров и настройки.

  1. 1

    Проверьте состояние

    GET /healthz отвечает 200, когда работают маршрутизация, оптимизация, база и тайлы, и 503 с названием отказавшей части, когда нет.

  2. 2

    Обновляйте карту

    Раз в неделю обновляйте данные OpenStreetMap: одна команда скачивает их, пересобирает граф маршрутов и проверяет тестовый маршрут.

  3. 3

    Копии и проверка восстановления

    Ночные копии базы проверяются при создании. Запускайте проверку восстановления после изменений схемы и раз в месяц.

  4. 4

    Задайте сроки хранения

    История местоположения и недействующие токены отслеживания удаляются по расписанию. Значения по умолчанию условные, пока юрист не определит настоящие сроки.

Полное руководство: файл OPERATIONS.md в репозитории.