Время прочтения: 3 мин.
В современном мире компании активно внедряют системы, автоматизирующие бизнес-процессы. В банковской сфере это связано с увеличением объемов кредитования, изменением внешней среды и ростом количества кредитных продуктов.
Разумеется, что перед аудиторами возникает задача- проверить качество работы автоматизированных процессов.
В данной статье мы расскажем, как мы проверяли работу программного робота.
Перед нами стояла задача выявить «западающие» элементы технологии, связанные с принятием решения о выдаче овердрафтного кредита на основании «решения» встроенного в процесс программного робота, и мы запустили проект по проверке данного процесса.
Мы выяснили, что на этапе рассмотрения заявки робот «принимает» положительные решения без должного анализа ряда важных факторов, а именно:
- наличия двух и более овердрафтных кредитов у компаний одной ГСЗ, чьи денежные потоки пересекаются;
- сегмент клиента на основании выручки если классификация заемщика по сегменту не соответствует закону РФ;
- ограничения, связанные с нормами федерального закона 115-ФЗ (осуществление клиентом операций, не имеющих очевидного экономического смысла/носящих запутанный или необычный характер).
Основными проблемами, с которыми мы столкнулись в процессе реализации проекта, являлись:
1. большой объем данных,
2. необходимость проведения анализа большого количества текстовых файлов.
Для решения первой проблемы мы использовали следующие инструменты:
- SQL Server 2014 Management Studio
- SQL запросы к БД-источникам данных.
Для выгрузки информации потребуются следующие таблицы:
- UL – данные по организациям, в т.ч. заемщикам (id, ИНН, наименование).
- Account – данные по финансовым счетам (id счета, номер счета, id клиента).
- Opers – операции по счетам, выписка (id операции, id счета, дата).
- Docs – платежные документы по операциям (id платежного документа, сумма, назначение платежа, плательщик, получатель).
Формирование списка заемщиков с датами выдачи кредитов и счетами:
with data as (
select ИНН_1 as inn, cast('20200101' as date) as dt union
select ИНН_2 as inn, cast('20200205' as date) as dt union
...
select ИНН_N as inn, cast('20200306' as date) as dt
)
select inn, dateadd(month,-3,dt) dt1, dt date_kd, dateadd(month,3,dt) dt2, Account.id id_acc
inner join UL on UL.inn=data.inn
inner join Account on Account.client=UL.id and Account.Acc like '40%'
into [inn_dt_acc]
from data
Формирование списка операций по счетам заемщиков за 3 месяца до выдачи и 3 месяца после за исключением кредитных операций:
select [inn_dt_acc].*, [opers].*, [docs].Date dt_oper, [docs].Acc_dt, [docs].Acc_kt, [docs].Sum, [docs].Text
into [inn_opers]
from [inn_dt_acc]
inner join [opers] on opers.[Account]= [inn_dt_acc].id_acc
and [opers].C_Date>=[inn_dt_acc].dt1
and [opers].C_Date< [inn_dt_acc].dt2
inner join [docs] on [docs].id=[opers].doc
where not (
( [docs].Text like '%перечислени%'
or [docs].Text '%выдач%'
or [docs].Text like '%предоставлени%'
or [docs].Text like '%погашени%'
) and ([docs].Text like '%кредит%' or [docs].Text like '%займ%')
or [docs].Text like '%средств%депоз%сертиф%'
or [docs].Text like '%возврат%'
or [docs].Text like '%овер%'
)
Формирование итоговых сумм денежных потоков заемщиков:
select inn, c_name, dt1, date_kd, dt2
, sum(case when debet=1 and oper_date<date_kd then Sum else 0 end) sum_dt_do
, sum(case when debet=0 and oper_date<date_kd then Sum else 0 end) sum_kt_do
, sum(case when debet=1 and oper_date>=date_kd then Sum else 0 end) sum_dt_posle
, sum(case when debet=0 and oper_date>=date_kd then Sum else 0 end) sum_kt_posle
, case when debet=1 then inn_kt else inn_dt end inn2
, case when debet=1 then org_kt else org_dt end org2
from [inn_opers]
group by inn,c_name,dt1,date_kd,dt2,case when debet=1 then inn_kt else inn_dt end, case when debet=1 then org_kt else org_dt end
Вторая проблема была решена путем использования скриптов на Python. При помощи данного инструмента из автоматизированных систем были извлечены необходимые документы и приведены к одному формату. С помощью библиотеки OpenCV производился поиск фрагмента по шаблону, был использован «метод регулярных выражений», который помог из текста выбрать необходимую информацию для сверки с данными, отраженными в АС. Подробнее о практике использования данного инструмента можно прочитать на нашем сайте в статьях: «Небольшие лайфхаки по выводу данных в Python«, «Извлекаем таблицы из PDF-файлов«.
Вот так, благодаря нашему проекту бизнесу были даны рекомендации по устранению уязвимости работы робота, которые были приняты в ит-разработку.