ВТБ Локатор

Сервис для подбора оптимального отделения банка, учитывая потребности клиента и доступность услуг.

Разведка

  1. Гуглится следующая ссылка: https://online.vtb.ru/map/offices/. На сайте уже есть карта отделений и банкоматов. Для реализации используются Яндекс карты. Будем использовать их в мобильном приложении

  2. Выгрузим json с локациями. Отделения имеют вид:

    кусочек json’а
         ```json
         {
             "id": 29000022,
             "Biskvit_id": "0927",
             "shortName": "ДО «Гагаринский» Филиала № 7701 Банка ВТБ (ПАО)",
             "address": "г. Москва, Ленинский пр-т, д. 64",
             "city": "Москва",
             "scheduleFl": "пн-пт: 10:00-19:00 сб, вс: выходной",
             "scheduleJurL": "пн-чт: 10:00-19:00 пт: 10:00-18:00 сб, вс: выходной",
             "special": {
                 "vipZone": 1,
                 "vipOffice": 0,
                 "ramp": 1,
                 "person": 1,
                 "juridical": 1,
                 "Prime": 0
             },
             "coordinates": {
                 "latitude": 55.692475,
                 "longitude": 37.551726
             }
         },
         ```
    
  3. Заберем фирменные шрифты и логотип с сайта

  4. По условию, нужно дать возможность клиенту искать оптимальное отделение с учетом загруженности отделения и задач клиента на основе разработанного алгоритма. В будущем будем предполагать, что загруженность нам известна (исходя из взятых в терминале талонов). Доступа к терминалу сейчас нет, возьмем примерный перечень услуг с https://bankiros.ru/bank/vtb

  5. Имеется ВТБ помощник в Алисе

  6. Приложение на сайте: https://www.vtb.ru/personal/online-servisy/vtb-online-android/ Можно попробовать также взять из приложения какие-то иконки.

Идеи

Для решения основной задачи, мы можем реализовать простой бэкенд (middleware), который берет часть данных об отделениях отсюда: https://headless-cms3.vtb.ru/projects/atm/models/default/items/departments, кешируя локально.

Также с другой ручки, берутся данные об услугах оказываемых отделением и среднем временем оказания каждой услуги. Третья ручка будет отдавать данные о текущей нагруженность отделения - текущего количества клиентов (выданных талонов) для каждого вида услуги. Данные накапливаем в нашей базе относительно дней недели, времени суток и месяца (пригодится для прогнозирования в будущем). Сервис высчитывает суммарную нагрузку для отделения и нагрузку на основе требуемой услуги.

Примечание: Тут мы делаем допущение, что информация с терминалов доступна и централизованно где-то собирается.

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

От текущего положения пользователя до точки строиться маршрут до отделения.

Если пользователь авторизован, может получить электронный талон (тут нужно продумать механизм защиты от излишней эксплуотации данной функции).

Процесс генерации идей и прототипа в Figma

И еще идея, на случай невозможности взаимодействия с терминалом. Можно относительно легко на базе YOLO8 подсчитывать количество людей в помещении, обрабатывая видео с камер, при этом не обязательно обрабатывать постоянно, достаточно обрабатывать ещеминутные снимки. Но потребуется создать инструмент для разметки помещений (одна камера может не покрывать все помещение). Вот proof of concept.

На крайний случай - устанавливать в отделения относительно недорогие каунтеры на вход/выход.

Моя реализация

Реализовано нативное приложение под Android и веб-сервис. Приложение: Kotlin + Jetpack Compose + YandexMapKit Сервис: Ktor + Postgresql

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

Вопросы к менторам

  1. Разные отделения ВТБ предлагают разный перечень услуг?
  2. Сотрудники банка многофункциональны? Или один эксперт - одна услуга? Или каждый сотрудник может решать любую задачу клиента?
  3. Есть возможность в реальном времени обрабатывать информацию с терминала в отделении? (терминал для получения талончиков) Можно получить хотя бы тестовую выгрузку подобных данных?
  4. Нет ли возможности получить дизайн систему или хотя бы брендбук с цветами компании? В ином случае приходится смотреть на сайт и имеющиеся моб. приложения. К примеру, шрифты я выгружал с сайта.
  5. Не хватает перечня услуг, оказываемых клиентам банка в отделениях.

Рекомендации к организаторам

  1. RAR-архив не самый популярный формат, почему не Zip? Или ссылка на GitHub?
  2. Лучше сократить многообразие форматов - PDF вполне хватило бы для презентации. Форматы презентации разные
  3. Ключи к Яндекс.Картам активируются не сразу, в течении часа. Лучше заранее их получить и не удивляться если не заработают.