Тинькофф.
ру развивает множество сервисов на рынке финансовых услуг.
У нас есть аналитики, разработчики, технологи и менеджеры, которые решают свои повседневные задачи.
Мы все каждый день генерируем идеи, анализируем, развиваемся и делаем все, чтобы создать лучший продукт на рынке.
Я работаю backend-программистом в отделе внутренней разработки.
Мы помогаем запускать новые направления бизнеса, автоматизировать рабочий процесс и стараемся сэкономить банк денег там, где это возможно (например, не покупать лицензию на какое-то дорогостоящее программное обеспечение).
Наш процесс работы очень стандартен: менеджеры придумывают бизнес-функции, технологи их формализуют и ставят задачи, аналитики анализируют данные, а разработчики уже решают поставленные перед ними задачи.
В жизни все сложнее, но ты это и так знаешь.
Одним из наших бизнес-клиентов является отдел лояльности клиентов — Тинькофф Таргет. Прежде чем рассказать об автоматизации аналитики, я объясню, как работает наша программа лояльности.
Программа лояльности Тинькофф.
ру или как мы дарим кэшбэк людям Практически все современные банки выдают кэшбэк: в рублях, милях или условных попугаях (баллах, которые можно потратить на что-то конкретное).
Мы не исключение; мы выдаем стандартный кэшбэк 1% на все и 5% на 3 выбранные категории (например, «Транспорт», «Кино», «Сувениры» и так далее).
Много такого кэшбэка выдать невозможно (а очень хочется), поэтому у нас есть специальные предложения от банков-партнеров, которые тоже хотят раздавать кэшбэк.
Так, в рамках бизнес-направления программ лояльности мы пытаемся найти и убедить различные компании выдавать нашим клиентам кэшбэк на взаимовыгодных условиях.
Эти компании являются нашими партнерами.
как нам это сделать? Давайте представим, что на рынке существует фиктивная компания «Яблоко».
Лучший способ привлечь Apple к нашей программе кэшбэка — помочь им продать свой продукт или услугу.
Задача здесь — привлечь аудиторию для партнера.
Например, клиенты, покупающие у конкурентов или клиенты, не знающие о существовании «Яблока».
А еще, у Apple есть возможность подобрать подходящих по профилю клиентов, которые очень хотят «Apple», но просто пока об этом не знают — я говорю об искусственном интеллекте и машинном обучении.
Задача подбора такой целевой аудитории лежит на плечах аналитиков.
У нас их два, а партнёров много — более 1000. Помимо этого, у аналитиков ещё много интересной работы, а с увеличением количества партнёров подбор нужной аудитории превращается в рутину.
Эту рутину нужно автоматизировать и превратить в одно нажатие на кнопку (а еще лучше вообще без кнопки).
Кроме того, многоэтапный процесс выполнения подобных задач влечет за собой ошибки, вызванные человеческим фактором.
Далее я расскажу, как нам удалось избавиться от такой рутинной работы.
Как мы строим аналитику
В Тинькофф.ру большинство аналитиков используют Апач Цеппелин .
Мы давно приняли этот инструмент и активно его развиваем (даже выкладываем в открытый исходный код).
Все сотрудники имеют доступ к глобальному хранилищу данных и отчетности, то есть ко всем аналитическим ресурсам Тинькофф.
ру с возможностью использования удобного аналитического языка.
Zeppelin написан на Java и включает в себя множество интерпретаторов современных языков и технологий, включая Python, Hive, Spark, Groovy, R и многие другие.
Написанные сценарии хранятся в тетрадях, состоящих из абзацев; внешне пользовательский интерфейс рабочей среды очень похож на Юпитер .
А главный экран приложения выглядит так:
Каждое направление деятельности здесь имеет свой рабочий каталог с разграниченными правами на чтение и редактирование.
Огромным преимуществом для нас (разработчиков) является наличие очень удобного и интерактивного API .
Жизнь становится проще с API. Вы можете делать с этим инструментом все, что захотите, через API, минуя веб-интерфейс.
Так пришла идея интегрировать результаты работы аналитиков в наш проект.
Коротко о нашем проекте
Наш бэкенд написан на Java, Frontend на Angular 5 (поскольку проект у нас немолодой, часть UI написана на Vaadin, от которого мы потихоньку избавляемся).Большая часть проекта представляет собой веб-приложение для менеджеров, где они управляют взаимоотношениями с партнерами, создают новые специальные предложения, контролируют выполнение своих KPI и т. д. У нас есть личный кабинет партнера, где любой банк-партнер может отслеживать статистику своей работы.
специальные предложения (начисления, активации и т. д.), скачивание и подписание договоров, счетов и документов взаимоотношений в целом.
Мы предоставляем данные мобильному банку и веб-порталу в разделе «Бонусы» через веб-сервис SOAP. Есть лендинг, написанный на React, где любой желающий может подать заявку на участие в программе лояльности.
Мы реализовали различные механики расчета кэшбэка и специальной рассрочки, а также интеграцию с различными банковскими сервисами.
Интеграция с Apache Zeppelin
Традиционно для привлечения новых партнеров менеджеры отправляли аналитикам письмо с набором пожеланий партнера по формированию целевой аудитории.Аналитики использовали ранее написанные скрипты в зоопарке языков и волшебный копипаст. Очевидно, что при правильной формализации требований можно написать универсальный скрипт, что мы и сделали.
А для ввода формализованных данных мы написали удобный UI. Осталось реализовать работу с Apache Zeppelin в нашем веб-приложении.
Рабочий процесс этой интеграции выглядит следующим образом:
Во время общения с партнером менеджер создает в приложении задачу, заполняя параметры на форме для создания целевой аудитории.
Пример таких параметров следующий:
- Категории кодов BCC и/или MCC, в которых клиент совершает транзакции или совершил транзакцию в определенный период времени на определенные суммы с определенным средним счетом.
- Конкурирующие компании, для которых клиент совершает сделку или совершил сделку в течение определенного периода времени.
Таких параметров очень много и все они формализованы в пользовательском интерфейсе.
После ввода исходных параметров менеджер запускает операцию генерации и алгоритм начинает свою работу:
- Так как все наши скрипты написаны в одном блокноте и менять его мы не хотим, то клонируем его в отдельный каталог.
Zeppelin в ответ на наш запрос возвращает нам идентификатор клона, который мы будем использовать для доступа к новому ноутбуку.
Клонирование рабочих скриптов удобно и для администрирования, так как мы всегда можем заглянуть в скрипты, которые выполнялись под конкретную задачу, и найти проблему.
- Начиная с версии Цеппелин API 0.8 После создания нового ноутбука вам необходимо предоставить к нему CRUD-доступ для последующего администрирования.
- В одном из первых пунктов рабочей тетради обычно объявляются переменные и задаются их первоначальные значения по умолчанию, которые необходимо заменить.
На этом этапе мы вставляем наш абзац в блокнот (с инициализацией переменных и формализованных данных), который формируем перед отправкой.
- Далее простым запросом метода POST запускаем наш ноутбук на исполнение.
А точнее, мы запускаем наши абзацы один за другим, чтобы следить за выполнением всех скриптов и отображать в приложении статус формирования целевой аудитории.
- По окончании операции менеджеру приходит уведомление (в случае, если он не отслеживал статус выполнения).
Результатом выполнения скриптов является сформированный CSV-файл с аудиторией, сохраненный в общем каталоге.
При запуске специального предложения мы можем сформировать несколько аудиторий и при добавлении в предложение назначить им другой тип.
А для разных типов аудитории мы можем гибко настраивать условия и суммы начисления кэшбэка.
Немного грубой аналитики
По приблизительным оценкам, автоматизация сбора целевой аудитории привела к высвобождению более 30% рабочего времени аналитиков (не считая времени, потраченного на общение между аналитиками и менеджерами).С июня 2018 по январь 2019 года количество выполненных задач генерации превысило 400. По словам менеджеров, на общение и получение необходимого результата они потратили от 0,5 до 4 часов, при этом среднее время на формирование целевой аудитории составило ~2 часа, более Сэкономлено 800 человеко-часов (более 100 рабочих дней).
Окончательно
Самое главное, чего добилась интеграция с Zeppelin, — минимизировать человеческий фактор на всех этапах процесса формирования целевой аудитории.Ошибки в создании аудитории, подходящей партнеру, обычно выявляются после проведения начислений.
Выдавая кэшбэк всем желающим после запуска специального предложения, очень сложно минимизировать понесенные финансовые затраты, а за допущенные ошибки приходится дорого платить.
Еще одним большим преимуществом является смещение ответственности в сторону первоисточника процесса, т. к.
«узкое место» человеческого фактора теперь находится в зоне формирования исходных данных руководителем.
Это значит, что тот, кто создает задачу генерации и заполняет исходные параметры, делает это с повышенным вниманием.
В настоящее время мы продолжаем развивать интеграцию и автоматизировать аналитические задачи.
Таким образом, используя удаленный запуск скриптов, написанных на Zeppelin, из приложения, мы формируем различные виды аналитических отчетов для менеджеров, которые ранее готовились индивидуально по запросу.
Теги: #python #api #backend #java #tinkoff #аналитика #блог компании тинькофф #apache zeppelin #cashback
-
Тельнушки
19 Oct, 24 -
На Другой Стороне Стенда
19 Oct, 24