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

Нужно определить правило завершения: какой радиус считается допустимым, что делать при плохом GPS, какие доказательства нужны и кто может закрыть спорный заказ вручную.

Что проверить в первую очередь

  • Проверьте, сохраняются ли координаты курьера при завершении заказа.
  • Сравните координаты с геокодированным адресом доставки.
  • Проверьте радиус допуска и настройки для плотной городской застройки.
  • Посмотрите, можно ли завершить заказ без GPS или в офлайн-режиме.

Основные причины

Такая проблема редко появляется сама по себе. Обычно ломается связка из нескольких настроек: данные уходят не туда, событие приходит не в том порядке, старая логика остается в кеше или права проверяются не на том уровне. Поэтому сначала нужно отделить симптом от причины.

  • Приложение доверяет кнопке завершения без проверки координат.
  • Адрес геокодируется неточно или используется центр улицы вместо дома.
  • Радиус слишком большой и покрывает соседние кварталы.
  • Офлайн-событие закрытия синхронизируется без повторной проверки.

Пошаговая диагностика

  • Возьмите несколько завершенных заказов и сравните адрес, GPS и время.
  • Проверьте точность координаты: accuracy может быть хуже заданного радиуса.
  • Проверьте сценарий многоэтажного дома, ТЦ, склада и подъезда.
  • Посмотрите, сохраняется ли фото, код клиента или подпись получателя.
  • Проверьте права диспетчера на ручное завершение.

Как исправить

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

  • Добавьте геозону завершения с учетом точности GPS.
  • Запрашивайте дополнительное подтверждение при выходе за допустимый радиус.
  • Сохраняйте координаты, accuracy, время, устройство и способ завершения.
  • Для спорных случаев используйте фото, код получения или подтверждение клиента.
  • Разделите обычное завершение и ручное закрытие с причиной и аудитом.

Безопасный план решения

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

Как проверить результат

  • Заказ нельзя завершить далеко от адреса без специального подтверждения.
  • Плохая точность GPS не засчитывается как надежное нахождение на месте.
  • Ручное закрытие видно в админке с причиной и ответственным.
  • История доставки содержит координаты и доказательство выполнения.

Чего не стоит делать

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

Как не допустить повторения

  • Храните все события маршрута и завершения доставки.
  • Проверяйте геокодирование адресов до назначения заказа.
  • Настройте разные правила для курьера, пункта выдачи, склада и самовывоза.
  • Добавьте отчеты по завершениям вне радиуса.

Что подготовить перед исправлением

  • Ссылку на проблемную страницу, кабинет, заказ, интеграцию или API-метод.
  • Точное время ошибки и пример пользователя, товара, платежа или запроса.
  • Скриншот, текст ошибки, лог веб-сервера, приложения или webhook-события.
  • Краткое описание ожидаемого поведения: что должно было произойти вместо ошибки.

Частые вопросы

Что делать, если GPS в городе неточный?

Учитывать поле accuracy и добавлять альтернативное подтверждение: код клиента, фото, подпись или ручное решение диспетчера.

Можно ли полностью запретить ручное закрытие?

Обычно нет: бывают нестандартные ситуации. Но ручное закрытие должно быть ограничено правами и попадать в аудит.

Когда стоит обратиться за помощью

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

Итог

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