Введение
Привет, Хабр! Меня зовут Александр. Я - тимлид одной из команд АльфаСтрахование.
Мы в Компании стремимся к сквозной обработке информации (STP) и для этого постоянно производим анализ наших процессов на предмет исключения из них ручной обработки, а также осуществляем мониторинг появления новых «фич» как внутри нашей Компании, так и среди Партнёров, открывающих нам возможности для автоматизации.
Хотим с командой рассказать об одном из автоматизированных процессов для бек-офиса, который как раз позволил нам сделать ещё один небольшой шаг на пути к сквозной обработке данных.
Анализ процесса, выявление проблем
Опишем примерную последовательность действий сотрудника, желающего отправить письмо клиенту, и жизненный цикл этого письма:
Проанализировав данный процесс, выявили следующие проблемы:
большое количество ручного труда (в среднем более 30 тыс. отправлений в месяц);
нет возможности работать удалённо в части формирования и отправки писем;
постоянно растущие расходы на канцелярию;
долгий срок отправки письма из-за сложной логистики бумаги внутри компании;
отсутствие удобного мониторинга хода доставки;
потеря бумажных уведомлений о доставке;
бумажные архивы уведомлений.
После выявления проблем в процессе перешли к поиску их решения.
Используемые внешние сервисы
В Компании основной объём почтовых отправлений приходится на Почту России. Поэтому после анализа существующего процесса мы стали изучать имеющиеся услуги на их стороне. Выделили два сервиса, позволяющие оптимизировать трудозатраты со стороны АльфаСтрахование:
сервис отправки Электронных Заказных Писем (ЭЗП) (+ статья по этой теме на habr);
Если коротко:
сервис ЭЗП позволяет осуществлять передачу писем в электронном виде (формат pdf) без необходимости печати письма на бумаге непосредственно самим отправителем (и компанией отправителя в том числе). Из плюсов данного сервиса можно ещё отметить возможность доставки письма получателю на «Госуслуги» (в случае если у получателя на указанном ресурсе есть соответствующие настройки);
API для отслеживания отправлений позволяет запрашивать статусы доставки по трек-номерам и выводить данную информацию в свои системы, а также «завязывать» бизнес-логику при получении того или иного статуса.
Используемые технологии
Команда, занимавшаяся автоматизацией процесса отправки и трекинга почтовых отправлений, использовала следующие ключевые технологии/инструменты:
.NET Core 3.1 – для реализации веб-приложения для пользователей, а также сервисов, взаимодействующих с API Почты России и сервисов фоновой обработки данных;
Angular 8 – в качестве front-end веб-приложения для пользователей;
RPA UIPath – данная технология помогла решить проблему отсутствия необходимого метода API в одном из внешних сервисов (об этом расскажем подробнее далее).
В качестве единого места для хранения корреспонденции у нас в Компании используется система электронного документооборота, поэтому и в данном процессе все письма и метаданные к ним решили сохранять в СЭД.
Реализация: отправка писем сотрудниками Компании
Для отправки писем сотрудниками Компании, нами была реализована доработка существующего веб-приложения на базе .NET Core/Angular. В веб-приложении добавили одну форму, одну страницу и пару кнопок с вызовом различных внутренних сервисов. Никакой магии и ничего сверхъестественного, зато решили большую часть поставленных задач, связанных с предоставлением возможности сотрудникам отправлять письма и отслеживать статус их доставки. ¯\_(ツ)_/¯
В итоге, пользователи получили веб-интерфейс, в котором от них требуется заполнить форму с набором полей, обязательные из которых ФИО получателя и адрес/индекс, далее вложить нужный файл, являющийся самим письмом, и нажать кнопку «Отправить».
К полям «адрес» и «индекс» прикрутили автозаполнение данными из внутренней справочной системы, чем значительно упростили жизнь пользователям и снизили вероятность ошибок при вводе значений в форму.
Вкладываемые файлы должны подписываться ЭЦП – это является подтверждением передачи отправления нашей Компанией (аналог из жизни – принятие отправлений сотрудником подразделения, отвечающего за отправку корреспонденции для последующей передачи в почтовую службу). Для решения данной задачи запилили небольшой сервис подписания, который вызывается в момент прикладывания файла пользователем.
Реализация: передача отправлений по API внешнего сервиса
Все отправления, созданные пользователями, попадают в очередь на отправку и с интервалом в 5 мин. передаются в сервис ЭЗП. В ответ от внешнего сервиса приходит внутренний идентификатор отправления (пока ещё не трек-номер).
На стороне сервиса ЭЗП отправления также попадают в очередь и обрабатываются с интервалом в 5 – 15 мин. После ожидания заданного интервала времени можно осуществить повторный запрос к API сервиса Почты России и по полученному на предыдущем шаге ID проверить, не возникло ли ошибок при формировании письма. В данном случае речь про бизнес-ошибки, связанные с вводом несуществующего адреса, с формированием письма в некорректном формате и т.д., проверку на которые осуществляет сервис ЭЗП.
Если переданное письмо корректно и никаких ошибок не возникло, то сервис ЭЗП возвращает следующую информацию (фиксируется в наших системах автоматически):
трек-номер заказного письма для последующего отслеживания;
дату принятия письма Почтой России (фактически, реальная дата отправки);
как будет доставлено письмо: через «Госуслуги» или в бумажном виде (печатается на стороне почтовой службы).
Для взаимодействия с внешним API и фоновой обработкой очереди отправлений нами были реализованы несколько сервисов на базе .NET Core:
Web-API сервис, реализованный по шаблону API Gateway, – он как раз и обеспечивает единую точку входа для взаимодействия с внешним API;
Worker-сервисы, обеспечивающие фоновую обработку очереди отправлений с заданным интервалом.
В итоге, получили функциональность по передаче писем в электронном формате с фиксацией всех необходимых бизнесу данных: трек-номера и даты отправки, а также стоимости отправления (стоимость отправлений через указанный сервис фиксируется в договоре и не зависит от местоположения получателя).
Реализация: получение закрывающих документов
Одним из этапов процесса является получение закрывающих документов, подтверждающих факт принятия отправлений почтовой службой.
В API сервиса ЭЗП нужного метода не оказалось, а получить комплект указанных документов можно только через интерфейс личного кабинета данного сервиса.
Для решения вышеуказанной проблемы команда воспользовалась технологией RPA, реализовав «робота» на платформе UIPath.
Робот раз в сутки выполняет следующие операции:
получает из корпоративной СЭД данные по ЭЗП-отправлениям за прошедшие сутки;
создаёт для них электронный реестр;
фиксирует дату отправки писем в реестре;
авторизуется в личном кабинете сервиса ЭЗП;
выгружает архив с закрывающими документами (подписанными ЭЦП);
загружает указанный архив в реестр в СЭД.
Кто-то скажет, что это «костыль» в архитектуре решения … и, скорее всего, будет прав, однако этот «костыль» позволил исключить «руки» человека и на этом этапе процесса. При этом, в случае появления необходимого метода в API сервиса ЭЗП, данное «ad-hoc» решение меняется на несколько строчек кода, и высвобождается время «робота». Но метода API пока нет, а эффект для бизнеса уже есть.
Реализация: отслеживание статуса доставки в автоматизированном режиме
Как мы ранее отметили, одной из выявленных проблем процесса также являлась трудность в отслеживании статуса доставки отправлений сотрудниками. Эту проблему мы решили по тем же лекалам, что описаны выше:
реализовали доработки веб-приложения (в котором пользователи создают отправления), добавив для пользователей реестр их отправлений, в котором, в том числе, присутствует колонка со статусом доставки и полученным трек-номером;
доработали Web-API сервис для взаимодействия с API сервиса Почты России по отслеживанию статуса доставки писем;
реализовали Worker-сервис для периодического опроса, указанного выше сервиса и обновления во внутренней системе статусов и дат доставки отправлений.
Реализация: итоговая схема взаимодействия систем
Послесловие/Выводы
Анализ процесса отправки корреспонденции мы начали ещё в конце 2019 года, всю функциональность в комплексе реализовали к июню 2020 года. В итоге поставленная цель по оптимизации процесса работы с исходящей корреспонденцией была достигнута, и мы получили:
веб-приложение для удобной работы пользователей: создание корреспонденции и отслеживание её статуса доставки происходит в одной системе;
отсутствие «рук» сотрудников нашей Компании в процессе передачи письма от отправителя до получателя, в том числе получение и загрузка закрывающих документов автоматизирована с помощью RPA («руки» остались только в процессе расчетов с Почтой России);
снижение количества бумаги и затрат на предпочтовую подготовку и франкировку писем;
убрали лишнее звено в Компании по обработке отправления, тем самым ускорив доставку до получателя.
Бонусом мы получили эффект от внедрения обновлённого процесса по отправке писем в условиях пандемии, вызванной COVID 19, – не смотря на «удалёнку» и все ограничения, вызванные текущей эпидемиологической ситуацией, наши сотрудники смогли отправлять корреспонденцию, не выходя из дома.
Динамика объёмов корреспонденции, отправляемой с помощью сервиса ЭЗП, за прошедший год:
Как видно из графика, полностью перевести всю корреспонденцию в электронный вид мы пока не смогли, но на текущий момент объём таких отправлений составляет порядка половины в месяц от общего числа! Перевод всей корреспонденции «на рельсы» ЭЗП пока ограничен, в основном, возможностями самого сервиса «Почты России»:
объём вложений (т.е. писем) не более 5 Мб;
количество страниц в письме – не более 5 (для доставки получателю на "Госуслугах" такого ограничения нет).
Коллеги из Почты России работают над развитием сервиса и, возможно, данные ограничения будут смягчены.
P.S. Хочется выразить благодарность коллегам из Почты России за тесное сотрудничество при реализации нами интеграции с сервисом ЭЗП. Они проявили профессионализм и отзывчивость, оперативно отвечая на все возникающие вопросы и оказывая своевременную техническую поддержку.