December 5, 2023

Портфолио самостоятельных проектов

Система учета для автопроката на базе Google app script + Google sheets

Задачи:

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

Что было:

Заявки с самописного сайта попадают на email, менеджер проверяет возможность аренды через СБ и направлял КП клиенту. После подтвержденеия условий аренды клиентом, менеджер вручную составлял 3 документа - договор, условия аренды (приложение к договору) и акт приема передачи автомобиля.

Еженедельно ответственный менеджер вручную проверяет штрафы на сайте ГИБДД по всем автомобилям парка и если обнаружены новые неоплаченные штрафы, то заносит их в таблицу. По каждому штрафу ответственный менеджер связывается с клиентом и добивается оплаты штрафа. Если клиент уклоняется от оплаты, менеджер собирает пакет документов и передает в ГИБДД для переоформления штрафа на арендатора.

Менеджеры часто забывают взять оплату за перепробег и нехватку топлива при возврате авто.

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

Что сделал:

В качестве решения выбрал Гугл таблицы, это было удобно как менеджерам, так и руководителю бизнеса. Создал две таблицы Google sheets:

База машин, содержит листы:

  • Список авто - список автомобилей в парке со всеми необходимыми атрибутами: госномер, год выпуска, VIN, номер телеметрии, номер страховки, срок истечения страховки, номер СТС, идентификатор авто в системе поска штрафов, и т.д.
  • Техобслуживание - список автомобилей с атрибутами: последний зафиксированный пробег, дата последней фиксации пробега, прогнозное значение текущего пробега, прогнозная дата проведения ТО, прогнозный остаток пробега до ТО.
  • Штрафы - автоматически формируемый список штрафов полученных на автомобили парка. Для реализации был написан скрипт интеграции Таблицы с сервисом парсинга штрафов ygibdd.ru чере встроенный в таблицы серви google app script. Наличие штрафов проверяется каждые 30минут, а по всем полученным штрафам автоматически вычисляется нарушитель и номер договора, в рамках которого нарушение произошло. Там же написал телеграм-бот, который рассказывает менеджерам кто из клиентов и на какие суммы получил штрафы и присылает ссылки на постановление и платежную квитанцию.
  • Некоторые другие листы с данными для ручной обработки.

Реестр догворов, содержит листы :

  • Ответы на форму (реестр договоров) - реестр в котором каждая строка содержит полный набор данных для формирования печатной формы договора, учета, автоматизации процессов и сбора статистики. Данные по договорам вносятся менеджером через Гугл Форму, это позволяет минимизировать ошибки при вводе.
  • Пробеги - на листе отображается список договоров, менеджеры указыввают пробег на старте аренды и при возврате авто.
  • Печатные формы - пять листов с печатными формами документов необходимых для заключения договора с любым клиентом. К таблице привязан скрипт, который берет данные договора из листа "Ответы на форму" по номеру договора, дополняет их данными из "Базы машин" и заполняет печатные формы. Сформировать любой договор можно по его номеру в "два клика".

Что делают скрипты:

Рассчитывают стоимость аренды, допуслуг и перепробега, склоняют ФИО, мигрируют данные в договор из других строк реестра договоров и базы машин, проверяют срок действия прав, формируют несколько разных вариантов пакетов документов (шаблоны для ЮЛ и ФЛ имеют различия), формируют пакет документов в ГИБДД для перенос штрафа, получают штрафы из API Ygibdd.ru, определяют у кого в аренде был автомобиль в момент нарушения, уведомляют в телеграм менеджера о новых штрафах, проверяют корректность документов на авто в базе ГИБДД, позволяют управлять списком машин на ygibdd прямо из таблицы, агрегируют суммы штрафов по автомобилям и людям для статистики, и выполняют еще несколько менее эффектых, но достаточно нудных процессов. Всего для системы в google app script написано больше 2500 строк кода на js.

От локального хранения файлов договоров на офисном компьютере к новой схеме печати из реестра по требованию переходили постепенно, в течении нескольких недель, продолжая дублировать учет по старой схеме. Через месяц после внедрения измерили эффективность:

Скорость формирования пакета документов (внесение в гугл форме данных арендатора, сроков аренды, др. данных и печать) составила менее 5 минут против 40 минут ранее.

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

До внедрения изменений полная ручная проверка парка на штрафы на сайте ГИБДД и перенос данных в таблицу занимали около 4 часов. После внедрения изменений проверка всего парка и связывание найденных штрафов с договорами стало занимать около 3 минут. Процесс автоматизирован до этапа предоставления информаци кто из водителей получил штраф, менеджер подключается только для сбора задолженностей. Штрафы приходят даже когда сайт ГИБДД недоступен. В компании появился быстрый доступ к штрафам - менеджер на выезде может проверить штрафы арендатора в телеграм и сформировать платежку для клиента в момент возврата автомобиля.

Учет и пргнозирование пробегов также стали неожиданно эффектичным процессом, стало очень четко видно сколько дней и километров осталось каждому авто до техобслуживания. Это исключило пробег без ТО и потерю гарантии - ни один авто до сих пор не нарушил регламентнтые сроки обслуживания. В течении 2 месяцев мне удалось подобрать оптимальные параметры прогнозирования достаточно точно описывающие пробег автомобилей во времени.

Система работает с 2019 года и компанию полностью устраивает, проведено более 7000 договоров, но недавно в силу серьезных изменений в законодательстве принято решение о переходе в другую, соответствующую новой редакции 152ФЗ (трансграничная передача).

Парсер данных мониторинга высшего образоавания

Для понимания структуры рынка продактам очень полезно видеть список игроков и их ключевые параметры. Часто эту информацию добыть крайне непросто.

Я столкнулся с такой проблемой при проработке российских ВУЗов, я видел и понимал основной костяк, но не было понятно что там в середине и среди малых региональных. Крайне важно для меня было количество студентов по программам высшего, дополнительного и дополнительного профессионального образования, а также бюджет ВУЗа (общий или подушевой) и структуру подчиненности. Задачка не простая, но в ходе изучения я столкнулся с сайтом https://monitoring.miccedu.ru/?m=vpo. Сайт размещает данные ежегодных мониторингов высшего и средне-профессионального образования в РФ, данные о реализуемых программах, количестве студентов по программам, количество зарубежных студентов, данные о финансировании, структурной подчиненности. Есть два недостатка в этом источнике: данные публикуются с задержкой в год-полтора и в данных не хватает ИНН-КПП для однозначного метчинга с данными из других систем.

Ну, чтоже, а дадата нам на что дана - пишу парсер, который собирает список вузов со страниц всех регионов, потом вторым обходом собирает нужные данные по каждому ВУЗу, попутно обогащая ИНН и КПП из Dadata.ru.

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

Полученный файл csv я загрузил в корпоративный Yandex DataLens и сцепил с данными из других выгрузок (CRM, Приоритет 2030, и др) и на основе этих данных смог проверить некоторые интересные гипотезы, о которых рассказать не могу.

Есть замечания - около 3% ИНН-КПП оказались некорректными или не были получены, т.к. на вход dadata я подавал наименования организаций полуторалетней давности, а часть вузов сменили названия, закрылись или были соеденены с другими. Пришлось попраавить их вручную. Но зато теперь у нас есть сцепка идентификаторов из мониторинга, наших систем и dadata.

Благодаря выгрузке удалось выделить группу ВУЗов активно работающих с зарубежными студентами, провести ABCX-анализ, категоризировать вузы в CRM по признакам принадлежности к минестерству, бюджету и численности по программам высшего образования и ДПО, а также построить структуру подчиненности вузов и выявить практически полностью филиальные сети.

Анализ этих данных послужил мощным толчком для меня и отдела продаж в понимании рынка.

ЗЫ: структура данных за 23 год немного отличается на сайте и скорее всего парсер придется поправить когда потребуется их выгрузить.

Бот для закадрового перевода видео

В последнее время я часто интересуюсь темой ML, но в рускоязычно мнернете мало материалов, либо они низкого качества. Очень хочу смотреть зарубежные видео с русской озвучкой. Яндекс браузер вроде бы решил эту проблему фичей закадрового перевода видео, а для любителей Mozilla и Chrome есть плагины на tampermonkey. Но беда в том что часто на обучение я выделяю время по остаточному признаку - когда появилась минутка, в поезде, в аэропорту, в кафе. В общем когда под рукой только мобильник, и тут решений как будто нет.

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

Задача: переводить быстро видео с youtube и rutube если под рукой есть любое устройство с выходом в интернет.

План:

  • Получчаем ссылку на видео
  • Скачиваем видео
  • Имитируем с помощью vot-cli сессию Яндекс Браузера, чтобы получить аудиодорожку с переводом
  • Склеиваем видео и полученный перевод с помощью ffmpeg c перекрытием аудио 15%
  • Возвращаем собранное переведенное видео

Простое решение - сделать телеграм-бот, который принимает ссылки и возвращает файлы (чтобы офлайн в самолете или поезде смотреть).

Репозиторий проекта и мой персональный переводчик

https://github.com/supernarkis/Multilang.git

https://t.me/Kybeq

Бот умеет в асинхрон, вынес воркеры, в будущем планирую сделать и вебапп. Планирую добавить перевод имени файла, обновление метаданных, перевод целых плейлистов по ссылке, опциональную выгрузку полученных файлов в какой-то сервис (например rutube) и конечно добавить альтернативный переводчик, например Сбертеховский.

Курсы переведенные ботом:

Narkis Mirsaitov @2023