- PVSM.RU - https://www.pvsm.ru -
Tinkoff.ru разрабатывает множество сервисов на рынке финансовых услуг. У нас решают свои повседневные задачи аналитики, разработчики, технологи, менеджеры. Все мы ежедневно генерим идеи, анализируем, разрабатываем и делаем все, чтобы создавать лучший продукт на рынке.
Я работаю бекенд-программистом в отделе внутренней разработки. Мы помогаем запускать новые бизнес линии, автоматизируем рабочий процесс и пытаемся сэкономить банку денег там, где это возможно (например отказаться от покупки лицензии на какой нибудь дорогой софт). Рабочий процесс у нас весьма стандартный: менеджеры придумывают бизнес-фичи, технологи их формализуют и ставят задачи, аналитики анализируют данные, а разработчики уже решают поставленные перед ними задачи. В жизни все сложнее, но вы и так это знаете.
Одним из наших бизнес-заказчиков является отдел лояльности клиентов —Tinkoff Target. Прежде чем расскажу об автоматизации аналитики, поясню как устроена наша программа лояльности.
Почти все современные банки выдают : рублями, милями или условными попугаями (баллами, которые ты можешь потратить на что-то конкретное).
Мы не исключение, мы выдаем стандартный в 1% на все и 5% на 3 выбранные категории (например, «Транспорт», «Кино», «Сувениры» и так далее). Много такого кэшбэка не выдать (а очень хочется), и поэтому у нас есть спецпредложения от партнеров банка, которые тоже хотят выдавать . Так вот, в рамках бизнес-линии программ лояльности мы пытаемся найти и убедить различные компании выдавать нашим клиентам на взаимовыгодных условиях. Эти компании и являются нашими партнерами.
Как мы это делаем? Представим, что есть на рынке условная компания «Яблоко». Лучший способ привлечь «Яблоко» к нашей кэшбек-программе — помочь ему продать свой товар или услугу. Здесь задача стоит в привлечении аудитории для партнера. Например — клиентов, которые закупаются у конкурентов или клиентов, которые не знают о существовании «Яблока». А еще, можно для Яблока подобрать подходящих по профилю клиентов, которые очень хотят «Яблоко», просто еще не знают об этом — это я про искусственный интеллект и машинное обучение.
Задача подбора такой целевой аудитории лежит на плечах аналитиков. Их у нас двое, а партнеров много — более 1000. У аналитиков помимо этого еще много всякой интересной работы, а с ростом количества партнеров подбор правильной аудитории превращается в рутину. Такую рутину необходимо автоматизировать и превращать в один клик по кнопке (а лучше вообще без кнопки). К тому же многоступенчатый процесс выполнения подобных задач влечет за собой ошибки, обусловленные человеческим фактором. Далее я расскажу как у нас получилось избавится от подобной рутинной работы.
В Tinkoff.ru большинство аналитиков в своих повседневных задачах используют Apache Zeppelin [2]. Мы давно взяли этот инструмент на вооружение и активно его развиваем (даже комитим в опенсорс). Для всех сотрудников открыт доступ к глобальному хранилищу данных и отчетности, то есть ко всем аналитическим ресурсам Tinkoff.ru с возможностью использования удобного аналитического языка.
Zeppelin написан на Java, включает в себя множество интерпретаторов современных языков и технологий, среди которых Python, Hive, Spark, Groovy, R и многие другие. Написанные скрипты хранятся в ноутбуках, которые состоят из параграфов, внешне UI рабочей среды очень напоминает Jupyter [3]. А основной экран приложения выглядит следующим образом:

У каждой бизнес-линии здесь есть своя рабочая директория с разграничением прав чтения и редактирования.
Огромным плюсом для нас (разработчиков) является наличие очень удобного и интерактивного API [4]. С API жизнь становится проще. Через API с этим инструментом можно делать все что угодно, минуя web UI. Так и пришла идея интегрировать результаты работы аналитиков в наш проект.
Backend у нас написан на Java, Frontend на Angular 5 (так как проект у нас не молодой, часть UI написана на Vaadin от которого мы потихоньку избавляемся). Большая часть проекта это веб-приложение для работы менеджеров, где они ведут взаимоотношения с партнерами, заводят новые спецпредложения, следят за выполнением своих KPI и т.д. У нас есть личный кабинет партнера, где любой партнер банка может наблюдать статистику своих запущенных спецпредложений (начисления, активации и тд), скачивать и подписывать договора, счета, документировать взаимоотношения в общем.

Мы отдаем данные в мобильный банк и вэб портал в раздел «Бонусы» через SOAP веб-сервис. Есть лэндинг, написанный на React, где любой желающий может оставить заявку на участие в программе лояльности. У нас реализованы различные механики начисления кэшбэка и спецрассрочки, интеграции с различными банковскими сервисами.
Традиционно для привлечения новых партнеров менеджеры отправляли аналитикам письмо с набором хотелок партнера для генерации целевой аудитории. Аналитики использовали ранее написанные скрипты на зоопарке языков и магический копипаст.
Очевидно, что при должной формализации требований можно написать универсальный скрипт, что мы и сделали. А для ввода формализованных данных написали удобный UI. Осталось только реализовать работу с Apache Zeppelin в нашем веб-приложении. Схема работы такой интеграции следующая:

Менеджер в ходе общения с партнером создает в приложении задание, заполняя на форме параметры для формирования целевой аудитории. Пример таких параметров следующий:
и другое.
Таких параметров очень много и все они формализованы на UI. После ввода исходных параметров менеджер запускает операцию генерации и алгоритм начинает свою работу:
По грубым подсчетам, автоматизация сбора целевой аудитории, привела к высвобождению более 30% рабочего времени аналитиков (не считая расхода времени на коммуникацию аналитиков с менеджерами).
С июня 2018 по январь 2019 года число выполненных заданий на генерацию превышает 400. По словам менеджеров на коммуникацию и получения требуемого результата они тратили от 0.5 до 4 часов, взяв среднее время для формирования целевой аудитории ~2 часа, было сэкономлено более 800 человеко-часов (более 100 рабочих дней).
Самое важное чего удалось добиться интеграцией с Zeppelin, это минимизировать человеческий фактор на всех этапах процесса генерации целевой аудитории. Ошибки в формировании подходящей партнеру аудитории, как правило, выявляются после проведения начислений. Выдавая всем подряд, после запуска спецпредложения, очень сложно минимизировать понесенные финансовые издержки, а за допущенные ошибки приходится дорого платить.
Еще одним большим плюсом является смещение ответственности в сторону первоисточника процесса, т.к. «бутылочное горлышко» человеческого фактора теперь находится в зоне формирования исходных данных менеджером. А это значит, что тот кто создает задание на генерацию и заполняет исходные параметры, делает это с повышенным вниманием.
В настоящее время мы продолжаем развивать интеграцию и автоматизировать аналитические задачи. Так, с помощью удаленного запуска скриптов написанных в Zeppelin, из приложения мы формируем различные виды аналитических отчетов для менеджеров, которые раньше готовились индивидуально по запросу.
Автор: alexyakovlev90
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/310530
Ссылки в тексте:
[1] кэшбэк: http://got.by/2om2y8
[2] Apache Zeppelin: http://zeppelin.apache.org/
[3] Jupyter: https://jupyter.org/
[4] API: https://zeppelin.apache.org/docs/0.8.0/usage/rest_api/notebook.html
[5] Zeppelin API 0.8: https://zeppelin.apache.org/docs/0.8.0/
[6] Источник: https://habr.com/ru/post/441644/?utm_campaign=441644
Нажмите здесь для печати.