Android приложение для банковских коллекторов
Случается так, что уже готовому продукту срочно требуется мобильная версия. Мы готовы разобраться в сложностях новой системы и интегрировать мобильное приложение так, чтобы оно не выглядело «пятым колесом». Именно так и было с приложением для ФИС.
Задача:
Разработать мобильное решение для уже существующего коммерческого продукта.
ФИС (Финансовые Информационные Системы) разрабатывает и продаёт банковское ПО для работы коллекторов, мы сделали быстрое и надежное мобильное приложение органично дополнившее их сервис по сбору задолженностей.
Проблема
Во-первых, наше приложение должно было взаимодействовать c сервером, архитектуру и backend которого, к сожалению, разрабатывали не мы. Сам сервис изначально был сделан под web, и его API совсем не подходил под мобильные решения, а возможности адаптировать необходимые методы под мобайл, не потребовав изменений во всех остальных модулях системы, у нас не было.
Во-вторых, банковские коллекторы, для которых в конечном итоге и предназначается приложение, используют устройства совершенно разных моделей, производителей, качества, степени свежести установленной платформы — и наше приложение должно было работать безотказно на каждом из них.
В-третьих, случился полный оффлайн: многие клиенты живут в районах с не самым быстрым мобильным интернетом, часто он там вообще не ловит — в итоге разработка полноценного оффлайн режима стала одним из главных челленджей.
В результате мы использовали несколько технически сложных и нетривиальных решений, чтобы сделать приложение не просто надёжным, но и удобным.
Подход
Диана Распопова,
ведущий Andriod разработчик
«Сделать полноценный функциональный оффлайн для приложения (коллекторы на выезде не смогут работать если сеть пропадет), оказалось не самым сложным: все данные и справочники синхронизировались с сервером ( при запуске не чаще 1 раза в час синхронизировались данные, и раз в сутки — справочники). Хотя, учитывая объем данных, пришлось повозиться, чтобы это не было бесконечно долго, и распараллелить транзакции в базу и очередь запросов к серверу».
И тут возникла не вполне техническая сложность:
Оффлайн режим подразумевает, что на телефоне хранится база по клиентам — это автоматически попадает под ФЗ № 152 о защите персональных данных. Шифровать и дешифровать каждую строчку на входе для нескольких десятков таблиц и количеством записей порядка десятков тысяч — немного не рациональное решение, банк уже успеет разориться в ожидании пока слабый процессор смартфона все обработает. Решением стал sqlcipher, который шифрует и дешифрует базу целиком, причем открытие базы в дешифрованном виде возможно только из того же приложения, что базу создало.
Единственным адекватным решением для API, которое никак ни изменить, ни переписать, стала универсализация сериализаторов и десериализаторов. Парсеры сначала проверяли входной тип данных и в зависимости от входного типа определяли нужные действия.
В итоге получился интересный набор фич:
- Сотрудник банка в офисе мониторит и контролирует работу коллекторов, составляет им список задач на день и имеет возможность следить за ходом их выполнения.
- У каждой задачи могут быть свои комментарии и требования (часто это зависит от того, что нужно сделать: позвонить клиенту, приехать лично или достаточно написать письмо).
- Видя задачи на день коллектор сам выбирает оптимальный для себя маршрут.
- Полная интеграция с уже существующей CRM и web-сервисом, рабочая информация обновляется быстро и без потерь.
- Приложение чувствует себя комфортно даже в отсутствии постоянного подключения к интернету.
- Работать с программой удобно и на слабых устройствах с небольшим разрешением экрана.
Оффлай режим и система синхронизации получились такие, что наши разработчики гордятся ими до сих пор и рассказывают истории, достойные устного народного эпоса.
Это всего лишь один из множества примеров эффективных красивых решений, реализованных нашей командой. Пишите нам! [email protected].