Бот в телеге вместо корпоративного приложения
Кто не в курсе - я пишу программный комплекс ( мозги ) для компании по доставки еды. Типа Додо ИС, но веселее, т.к. сам, без инвестиций и группы разрабов. Сразу обмолвлюсь - начал дело как хобби, т.к. программист. Проект уже давно внедрен и сегодня полностью управляет всеми процессами компании - включая документацию, банкинг, персонал, клиенты, телефонию и так далее. Да, комплекс большой выходит, но времени потрачено немало, написано около 100 тыс строк кода - но в целом я никуда не спешу.
Внедряется и тестируется всё сразу по мере разработки в 2 тестировочные площадки в Тюмени, на которых прямо в текущий момент стоят повара и готовят еды, а курьеры это дело возят.
В прошлом посте писал о том, что курьерам вместо приложений я решил сделать чат-бот в телеге. Логика простая - по приложениям я не специалист, приложение это дело большое, изучать долго, да и зачем - когда есть телега, а курьерам нужно только заказы отмечать.
Да, на словах всё просто. На деле идея споткнулась об несколько камней и растянулась во времени.
Для чего оно вообще нужно? Можно ж и так.
Можно, но задача - чтобы работу делал робот, а не человек. Зачем человек, если может программа. А программу нужно обеспечить чёткими данными - когда заказ передан, когда доставлен, сколько километров и так далее. Тогда программа сможет опираясь на эти данные посчитать хорошо, сколько курьер заработал. Хорошо, автоматически, и без риска обмана со стороны коллектива ( не стоит забывать отечественные традиции ).
Первая проблема на этом этапе возникла - что курьеры иногда возят по несколько заказов. И едут с заказа на заказ. Соответственно считать расстояние требуется уже между точками, - а это потребовало вводить новую логическую единицу - "маршрут". Маршрут содержит в себе заказы, или просто точки куда нужно заехать ( купить сметаны например по дороге обратно ).
Создание маршрутов потребовало переделывать половину интерфейса. Как и водиться в программировании - решение одной задачи потребовало решения других, и так по цепочке. Месяц работы - и готово.
Теперь администратор перед отправкой курьера на заказ формирует ему маршрут - на этом этапе автоматом через картографию считается расстояние, расчётное время доставки и наиболее оптимальная последовательность движения. Причем это не самая трудоёмкая задача. Помню как Додо заявляли такие фишки как нечто из ряда вон - хотя по уровню техническому это не так сложно - в век когда все нужные библиотеки встраиваются одной строчкой кода.
Курьеру в телегу падает "маршрут", в котором несколько заказов. Как только курьер доставляет заказ - нажимает соответствующую кнопку в чат-боте. Бот соответственно обновляет данные заказа - у администратора этот заказа начинает гореть фиолетовым - значит доставлен, в панели маршрутов становится зачёркнутым. Ну и клиенту уходит смс типа спасибо заказ, бла-бла, вот баллы на следующий заказ.
При этом подтверждение доставки от курьеру осуществляется через отправку в телегу своей геолокации ( Спасибо Паша Дуров за функционал и вообще за апи, без тебя тех.прогресс бы был уровня вайбера).
В общем всё сделали - всё классно, работает. Курьеров научили, приучили, дали время приработаться.
Проходит некое время - я уже написал грешным делом целую панель мониторинга скорости доставки - с графиком, все дела. Смотрю - данные просто губительны для службы доставки еды. Я сначала вообще не понял, что за ерунда. Ну не может быть же так - иначе бы засыпало соц.сети негативными отзывами.
Причина оказалась банальна - курьеры "забывают" ( либо забивают ). Для нашего люда нововведения без увеличения зарплаты проходят тяжко, и коллектив имеет свойство сопротивляться. Или забивать - если это не отражается на зарплате.
По опыту работы скажу, что уговорами дело не решить, особенно когда ты управляешь компанией из другого города.
Решение оказалось простым - по адресу доставки мы обязательно получаем координаты - без этого маршрутизация невозможна. И во время подтверждения заказа курьер отправляет в чатбот тоже координаты - места где находится. Координаты, кто не в курсе, - это всего две цифры, широта и долгота.
Школьные знания по геометрии подсказывали, что имея координаты 2х точек, можно с легкостью найти расстояние между ними. Погуглил формулу, вставил в рассчёты зарплаты со следующим условием - если отметка о доставке поставлена на расстоянии более 200м от адреса - то такой заказ просто не считается в зарплату. Просто не считается.
Нововведение введено недавно, еще пока на уровне тестирования. Сначала конечно не всем понравилось, ведь теперь нужно за зарплату работать не как душе угодно, а на показатель, но вроде привыкают.
По результатам сообщу позже.
Программист никогда про себя не напишет что он программист. Напишет фронтенд, бэкенд, кодер, червь, гик, фрик, датовец, натовец, но точно не это это слово на букву П
Никогда не говори никогда