{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

Бот в телеге вместо корпоративного приложения

Кто не в курсе - я пишу программный комплекс ( мозги ) для компании по доставки еды. Типа Додо ИС, но веселее, т.к. сам, без инвестиций и группы разрабов. Сразу обмолвлюсь - начал дело как хобби, т.к. программист. Проект уже давно внедрен и сегодня полностью управляет всеми процессами компании - включая документацию, банкинг, персонал, клиенты, телефонию и так далее. Да, комплекс большой выходит, но времени потрачено немало, написано около 100 тыс строк кода - но в целом я никуда не спешу.

Внедряется и тестируется всё сразу по мере разработки в 2 тестировочные площадки в Тюмени, на которых прямо в текущий момент стоят повара и готовят еды, а курьеры это дело возят.

В прошлом посте писал о том, что курьерам вместо приложений я решил сделать чат-бот в телеге. Логика простая - по приложениям я не специалист, приложение это дело большое, изучать долго, да и зачем - когда есть телега, а курьерам нужно только заказы отмечать.

Да, на словах всё просто. На деле идея споткнулась об несколько камней и растянулась во времени.

Для чего оно вообще нужно? Можно ж и так.

Можно, но задача - чтобы работу делал робот, а не человек. Зачем человек, если может программа. А программу нужно обеспечить чёткими данными - когда заказ передан, когда доставлен, сколько километров и так далее. Тогда программа сможет опираясь на эти данные посчитать хорошо, сколько курьер заработал. Хорошо, автоматически, и без риска обмана со стороны коллектива ( не стоит забывать отечественные традиции ).

Первая проблема на этом этапе возникла - что курьеры иногда возят по несколько заказов. И едут с заказа на заказ. Соответственно считать расстояние требуется уже между точками, - а это потребовало вводить новую логическую единицу - "маршрут". Маршрут содержит в себе заказы, или просто точки куда нужно заехать ( купить сметаны например по дороге обратно ).

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

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

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

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

В общем всё сделали - всё классно, работает. Курьеров научили, приучили, дали время приработаться.

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

Причина оказалась банальна - курьеры "забывают" ( либо забивают ). Для нашего люда нововведения без увеличения зарплаты проходят тяжко, и коллектив имеет свойство сопротивляться. Или забивать - если это не отражается на зарплате.

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

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

Школьные знания по геометрии подсказывали, что имея координаты 2х точек, можно с легкостью найти расстояние между ними. Погуглил формулу, вставил в рассчёты зарплаты со следующим условием - если отметка о доставке поставлена на расстоянии более 200м от адреса - то такой заказ просто не считается в зарплату. Просто не считается.

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

По результатам сообщу позже.

0
2 комментария
Fred Han

Программист никогда про себя не напишет что он программист. Напишет фронтенд, бэкенд, кодер, червь, гик, фрик, датовец, натовец, но точно не это это слово на букву П

Ответить
Развернуть ветку
Serious Mann
Автор

Никогда не говори никогда

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда