Your comments

И опять, автораздача хорошо когда крупная фирма с большим количеством заказов, а как такой вариант когда в сутки 100-150 заказов и активных водителей за эти сутки 20-30 человек

Ну а как тогда. Кто первый нажал тот и поехал. Допустим отключено автораздача, один стоит 200 метров от заказа другой 5 км и отдают тому кто 5 км видите ли он первый нажал, абсурд . Где логика?

Роман имел ввиду такую раздачу заказом. Я поддерживаю и считаю, что это честная раздача. Пример взят с другой проги.


Сортировка автоназначения:

1. Расстояние по дорогам общего пользования от точки местонахождения водителя до точки подачи, но не менее 250 метров, которое округляется по правилам. Например, 4001 будет округлено как 5000.
Правила округления расстояния
Расстояние Округление
менее 300 300
301-600 600
601-1000 1000
1001-1500 1500
1501-2200 2200
2201-3000 3000
более 3000 до тысячи в большую сторону[^1]
2. Приоритет.
3. Время простоя, но не более 60 минут.
4. Рейтинг водителя.

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

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

Два отказа подряд от автоназначения ведут к изменению статуса на "Не назначать" на 30 минут.
Процедура автоназначения запускается повторно каждые 3 минуты, но при условии, что заказ находится в статусе "Поступил" и на него нет запросов от водителей.

Обработка запросов
Обработка запросов происходит один раз в 40 секунд (примерно).
Запрос водителя не будет обработан, если:

1) водитель находится в черном списке клиента;
2) запрос сделан более 15 минут назад;
3) (для заказа на текущее время) водитель заканчивал предыдущую смену, самостоятельно менял статус, район месторасположения. Статус "Свободен" был изменен позже появления заказа (менее 90 секунд назад), но не ранее времени принятия заказа.

Сортировка запросов на текущую заявку:

1) водители с приоритетом (только в зоне "Ближайшие", если вне ее - не учитывается);
2) расстояние по дорогам общего пользования от точки местонахождения водителя до точки подачи, диапазон - от 250 до 10 000 метров, учитывая правила округления;
3) статус смены ("Свободный" приоритетнее, чем "Не назначать");
4) время простоя, но не более 60 минут;
5) рейтинг водителя;
6) отсутствие конкуренции: запрос только от одного водителя, заказ поступил менее 20 секунд назад. Данный водитель будет назначен исполнителем, если через 40 секунд не последует запроса от другого водителя.

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

Сортировка запросов на предварительный заказ:

1) водители с приоритетом;
2) рейтинг водителя.
Если все условия совпали (в том числе одинаковые рейтинги) - выбирается случайный.
Если водитель отказывается от заказа, назначенного по запросу, следующий исполнитель выбирается сразу же из списка собранных запросов (по тем же критериям). В случае, если другие запросы отсутствуют или просрочены, заказ возвращается в общий список.

Предложение заказов
1. Только на основании координат водителя по GPS.
2. Расчитывается кратчайшее расстояние от водителя до адреса подачи по дорогам общего пользования.
3. Учитывается установленный фильтр автоназначения.
4. Не предлагаются, если пользователь находится во вкладке "Ближайшие" или любой другой.
5. Заказ есть в списке "Ближайшие", но это не означает, что он будет предлагаться, так как в "Ближайшие" попадают на основе просчета расстояния по прямой от водителя до адреса подачи, а не по дороге.
6. Предлагался заказ А, но если после этого других не последовало, то повторного не будет.
7. Предлагался заказ А, а затем заказ В - их повторное предложение будет только через 3 минуты.