Скрипт мониторинга состояния статусов водителей в агрегаторах

Цена договорная
12 октября 2020, 07:05 • 11 откликов • 49 просмотров
Требуется разработать скрипт мониторинга состояния статусов водителей при работе с агрегаторами такси.

Есть таксопарк. У него есть водители и автомобили. Все подключены к определенным агрегаторам (например, Яндекс.Такси) - по сути сейчас интересуют два самых главных (число может быть расширено в будущем).
Нам нужно, чтобы водители всегда в свою смену находились на линии на нескольких агрегаторах одновременно (т.е. не забывали включать статус "на линии" / "активен") когда они работают. А если не находились - (мы) получали бы об этом уведомление.
Проблема в том, что один из агрегаторов не дает доступ к своему API, следовательно нужно использовать решения типа autoit, ну либо просто логиниться и периодически обновлять страничку, обрабатывая ее.

Что нужно:
- периодически (например, раз в 5 минут) обновлять статусы по каждому водителю, и складывать их в базу.
- если у водителя хотя бы у одного агрегатора статус "Активен" / "На заказе" / "На линии" и т.д - все ок, идем к следующему.
- если у водителя все статусы "Оффлайн" / "Не на линии" / "Занят" - сверяем со списком смен, должен ли он сегодня работать, и есть ли он в списках вообще.
- если у водителя сегодня смена, сейчас обязательные часы работы, а в обоих агрегаторах "Оффлайн" / "Не на линии" - высылаем уведомление. Вид его в целом не важен, это может быть письмо, в общем что-то, что можно интегрировать с IFTTT и Телеграмом впоследствии.

Интерфейс не нужен. Видимо, достаточно конфиг-файла.
Настраиваемые переменные:
- периодичность обновления
- обязательные часы работы в сутках (GMT +03:00) - с .. по
- какие активные статусы мониторим, и какие неактивные (чтобы бесконечно не править код)

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