Как создавался ReporTax – бот-бухгалтер

6 август, 2019 - 10:15Армен Арутюнян

ReporTax – бот, который помогает ФЛП уплатить налоги, подать отчетность и тратить на взаимодействие с фискальными органами не более 5 – 10 минут в месяц. Тезисно о том, как команда ЛІГА:ЗАКОН совместно с Juscutum разрабатывала этот чат-бот - немного об архитектуре, о выпуске и тестировании, а также о полученных уроках. Возможно, этот опыт окажется полезен, тем командам, перед которыми стоят подобные задачи.

Архитектура
Архитектурно ReporTax представляет собой набор микросервисов, работающих через «диспетчера», выполняющего также роль менеджера запросов. Такая архитектура позволяет сделать универсальным формат взаимодействия компонентов продукта и сравнительно быстро масштабировать решение, интегрируя в него новые микросервисы.
ReporTax условно имеет следующую структуру:
  • «фронт бот» – сервис диалогов и легкой логики, взаимодействующий с Telegram Bot Cloud Service по https (написан на Java);
  • «бэк бот» – большой набор сервисов для различных задач: хранения данных, наложения подписей, автозаполнения отчетности, взаимодействия с платежными системами, хранения ключей (Azure Key Vault) и пр.;
  • «диспетчер», через который взаимодействуют «фронт-» и «бэк-» бота (написан на Java).

Как создавался ReporTax – бот-бухгалтер

 
Почему некоммерческая платформа
«Фронт бота» написан с использованием open source-решений. На сегодняшний день диалоги хардкодятся, но планируется создание простого файлового, возможно, и gui-интерфейса для того, чтобы диалоги могли править аналитики и маркетологи.
 
При проектировании ReporTax мы рассматривали возможность создания бота на базе коммерческих платформ для разработки таких приложений, но все же остановились на ином варианте. И тому было несколько причин:
  1. разработка бота с использованием коммерческого инструментария привязывала бы нас к этому решению, наши возможности были бы ограничены возможностями платформы;
  2. мы решили развивать собственную компетенцию по разработке ботов, поэтому были заинтересованы в создании собственной протоплатформы для этих целей;
  3. мы заочно были уверены, что коммерческие платформы не готовы к интеграции большого количества бэковых сервисов, необходимых нам для работы. Возможно, мы ошибались, но времени на детальное изучение различных платформ у нас не было в силу жестких сроков проекта и ограниченных ресурсов на выпуск первой версии продукта.
 
Возможно, мы выбрали более сложный путь, но, по нашему убеждению, более правильный в перспективе со стратегической точки зрения.
 
Как мы выпускаемся
Уже после первых нескольких дней работы  с реальными пользователями мы поняли, что процесс правки, оттачивания диалогов – процесс увлекательный, затягивающий и... бесконечный. К тому же забирающий много ресурсов. Всегда хочется поймать тренд, хайпонуть, вызвать у пользователя эмоцию, но, если сильно вовлечься в этот процесс, не остается времени на реальную разработку. Здесь нужно отметить преимущество графических интерфейсов платформ, которые позволяют быстро править диалоги без участия разработчиков.
 
Поэтому после выхода первого релиза мы разделили выпуск небольших функций (в том числе мелких правок диалогов) и полноценного нового функционала. Развертывание мелких изменений происходит ежедневно: сборка, тестирование и деплой на прод-среду проводятся в автоматическом режиме. CI/CD-пайплайн построен девопсами на стеке технологий: Git, Jenkins, Maven, Docker.
 
В то же время в рамках спринтов ведется разработка нового сложного функционала (в частности, связанного с изменениями структур БД), требующего интеграционного тестирования, который выпускается приблизительно раз в месяц.
 
Как мы тестируем
Помимо юнит-тестов и интеграционных автотестов, мы дополнительно тестируем вручную, поскольку проверяем не только бизнес-логику, но и простоту и понятность dialogueflow.
 
Так как цель нашего бота – помочь предпринимателю выполнить задачу, которую обычно выполняет профессиональный бухгалтер, то ReporTax контролирует действия пользователя в мессенджере. Пользователь ведет диалог, выбирая на каждом конкретном шаге ответ среди ограниченного числа возможных ответов, представленных в виде кнопок. Поэтому проверка простоты/понятности вопросов и предлагаемых ответов, обнаружение как можно большего числа неучтенных в диалоге use cases – задачи не менее важные, чем тестирование бизнес-логики. Эти задачи относятся, скорее, к активностям UX и бизнес-анализу и являются не совсем традиционными для тестировщиков. Но в нашем случае мы довольны результатом концентрирования этих функций в руках команды тестирования ReporTaxа.
 
Поддержка решает
Создавая ReporTax, мы с самого начала осознавали необходимость профессиональной поддержки, способной консультировать пользователей по вопросам бухгалтерии. Ирония в том, что сегодня большинство ботов создаются для выполнения функций информационной поддержки, простых продаж, поиска в базах данных, а не для автоматизации более сложных, например бухгалтерских, бизнес-процессов. ReporTax же стремится заменить бухгалтера, но при этом отдает функцию информационной поддержки профессиональным консультантам.
 
Почему так? Основная задача поддержки – не просто дать профессиональный ответ на вопрос пользователя по поводу бухгалтерии, но вселить в него уверенность в том, что бот выполнит свою работу ничем не хуже профессионального бухгалтера. Конечно, мы строим диалоги таким образом, чтобы у юзера не возникало необходимости обращаться за дополнительной информацией к живым людям. Но также мы знаем, насколько сложно заслужить доверие клиента, поэтому внимательные консультанты, профессионально разбирающиеся в бухгалтерии, – важное преимущество нашего продукта.
 
Над чем мы работаем
Команда, создавшая ReporTax, имеет большой опыт разработки онлайн-продуктов для бухгалтеров и юристов. Поэтому создание бота стало для нас вызовом и с точки зрения работы с новой аудиторией – предпринимателями, и с точки зрения выстраивания взаимодействия с пользователем через диалоги, а не графический интерфейс. Учитывая полученный опыт, мы ставим для себя следующие цели:
  • постоянное совершенствование диалогов с целью соблюдения баланса между простотой, информативностью и эмоциональной привлекательностью текста и flow;
  • закрытие всех потребностей ФЛП 2- й и 3-й групп в части бухгалтерского обслуживания;
  • развитие таких механизмов коммуникации с пользователем в самом боте, которые бы не вызывали ощущения спама, но при этом были эффективными;
  • создание максимального удобного механизма консультирования (предоставление консультаций в интерфейсе самого бота в будущем) как необходимого элемента для формирования доверия пользователей к продукту;
  • создание интерфейсов для внесения быстрых изменений в диалоги без участия разработчиков.
 
Фидбэк
Фидбэка много. В основном – сдержанный оптимизм и искренняя заинтересованность. Вряд ли можно до конца понять, как развивать продукт, не показав его широкой аудитории. Уже сейчас мы можем заменить бухгалтера для 70 – 80 % ФЛП 2-й и 3-й групп, но, как обычно, появляются дополнительные пожелания от пользователей и партнеров, которые всегда хотят большего. В связи с чем команда бідкається, користувачі розводять руками.