Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/8674
Title: Дослідження методів розробки програмних систем для автоматизації перевірки ризиків при роботі з новими клієнтами компаній
Authors: СИСОЄНКО, Світлана
ШЕВЧЕНКО, Ірина
Issue Date: 2023
Abstract: Автоматизація процесу перевірки ризиків при роботі з новими клієнтами стає все більш актуальнішим та важливим завданням для багатьох компаній у сучасному бізнес-середовищі. Це спричинено швидкими технологічними змінами та зростаючими обсягами даних, дана проблема стає складнішою та вимагає ефективних рішень. Одним з найбільш перспективних підходів є використання програмних систем для автоматизації процесу оцінки ризиків. Тому дана тема дуже важлива для розробки сучасних програмних рішень. Метою даної кваліфікаційної роботи магістра є створення функціонального та надійного сервісу для компаній з можливістю ефективної перевірки клієнтів перед початком співпраці з ними, що сприятиме забезпеченню безпеки та мінімізації ризиків. Об’єкт дослідження - процес оцінки ризиків при взаємодії з новими клієнтами компаній та методи розробки програмних систем для його автоматизації. Предмет дослідження - розробка програмних систем для автоматизації систем управління бізнес-процесами. Наукова новизна даної теми полягає в розробці та вдосконаленні програмних систем та методів, які спеціалізуються на автоматизованій оцінці ризиків при роботі з новими клієнтами компаній. Це включає в себе розробку алгоритмів для зібрання та аналізу інформації про ризики, впровадження систем штучного інтелекту для виявлення аномалій та розробку заходів кібербезпеки для забезпечення надійності процесу. Новаторські рішення в цій галузі сприяють забезпеченню більш ефективної та безпечної діяльності компаній у цій сфері. Практична цінність результатів роботи залежить від впровадження програмного забезпечення, яке реалізує методи, що спеціалізуються на автоматизованій оцінці ризиків. Це має вагоме практичне значення для ведення діяльності компаній, оскільки допомагає зекономити час, зменшити ризики та підвищити довіру клієнтів, сприяючи ефективній та надійній взаємодії з ними. У першому розділі виконано аналіз предметної області, визначено сутність процесу перевірки клієнтів, розглянуто види таких перевірок та висвітлено процедури перевірки фінансових установ. Також визначено поставлені завдання, необхідні для успішного виконання кваліфікаційної роботи. У другому розділі здійснено огляд існуючих технологій, що використовуються у даній області. Розглянуто протоколи комунікації та вибрано технології, які найкраще відповідають потребам цього процесу. У третьому розділі надано комплексний огляд розробленої системи, включаючи її структуру, функціональність, заходи забезпечення безпеки інформації, технічні вимоги для ефективної роботи та результати оцінки її ефективності. Висновки включають в себе основні результати роботи. У додатках наведено специфікацію, текст програмного забезпечення та інструкцію користувача. Загальний обсяг роботи становить 100 сторінок. У кваліфікаційній роботі магістра 13 рисунків та 3 додатки. Для виконання роботи використано 22 літературних джерела.
URI: https://er.chdtu.edu.ua/handle/ChSTU/8674
Appears in Collections:123 Комп’ютерна інженерія (Комп'ютерні системи та мережі)

Files in This Item:
File Description SizeFormat 
1_ТИТУЛКА_Шевченко-merged.pdf
  Restricted Access
1.76 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ
ІНЖЕНЕРІЇ
Пояснювальна записка
до кваліфікаційної роботи магістра
на тему: «Дослідження методів розробки програмних
систем для автоматизації перевірки ризиків при
роботі з новими клієнтами компаній»
ЧДТУ.232286.012 ПЗ
Виконала: студентка 2 курсу, групи МКМ-2205
спеціальності 123 – Комп’ютерна інженерія
за освітньою програмою – Комп’ютерні системи
та мережі
Ірина ШЕВЧЕНКО
Керівник
к.т.н., доцент Світлана СИСОЄНКО
Н. контроль
Світлана ГРЕСЬКО
Рецензент
старший викладач кафедри інформаційних
технологій, ЧНУ ім. Б. Хмельницького
к.т.н. Тетяна СТАБЕЦЬКА
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ___________ Віра БАБЕНКО
Черкаси 2023 року
Черкаський державний технологічний університет
Факультет інформаційних технологій і систем
Кафедра інформаційної безпеки та комп‘ютерної інженерії
Освітньо-кваліфікаційний рівень Магістр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Комп’ютерні системи та мережі
«ЗАТВЕРДЖУЮ»
Завідувач кафедри _____ Володимир РУДНИЦЬКИЙ
«10» жовтня 2023 року
ЗАВДАННЯ
на кваліфікаційну роботу магістра студенту
ШЕВЧЕНКО Ірині Ігорівні
(прізвище, ім‘я, по батькові)
1. Тема роботи Дослідження методів розробки програмних систем для
автоматизації перевірки ризиків при роботі з новими клієнтами компаній
Керівник роботи к.т.н., доцент Світлана СИСОЄНКО
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «06» жовтня 2023 р. № 267/04
2. Строк подання студентом роботи
3. Вихідні дані до роботи:
Перевірка клієнтів, безпека, ризики, LexisNexis, MaxMind, Persona, HTTP(S), API,
webhook, GDPR.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
Розділ 1 Аналіз предметної області та постановка задачі дослідження
Розділ 2 Вибір технології та інструментальних засобів розробки системи
Розділ 3 Методи розробки програмних систем для автоматизації перевірки ризиків при
роботі з новими клієнтами компаній
Висновки
Перелік скорочень та умовних позначень
Список використаних джерел
Додатки
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
Додаток А Специфікація
Додаток Б Текст програм
Додаток В Інструкція користувача
6. Консультанти розділів роботи
Підпис, дата
Розділ Прізвище, ініціали та
посада завдання видав завдання прийняв
консультанта
7. Дата видачі завдання 10 жовтня 2023 року
КАЛЕНДАРНИЙ ПЛАН
№ з/п Назва етапів кваліфікаційної роботи магістра Строк виконання
етапів роботи Примітка
1 Збір матеріалу 21.10 – 28.10 виконано
2 Обробка матеріалу 29.10 – 06.11 виконано
3 Обґрунтування актуальності виконання виконано
досліджень 12.11 – 15.11
4 Оцінка стану проблеми, виокремлення виконано
дослідницьких задач, постановка задачі 16.11 – 18.11
дослідження
5 Викладення сутності і результатів дослідження 20.11– 25.11 виконано
6 Практичне застосування результатів
дослідження 26.11 – 27.11 виконано
7 Оформлення результатів в пояснювальну записку 27.11 – 30.11 виконано
8 Подання роботи на відгук та рецензування 01.12.23 виконано
Студент-магістрант ____________________________ Ірина ШЕВЧЕНКО
(підпис)
Керівник роботи _____________________________ Світлана СИСОЄНКО
(підпис)
АНОТАЦІЯ
Автоматизація процесу перевірки ризиків при роботі з новими
клієнтами стає все більш актуальнішим та важливим завданням для багатьох
компаній у сучасному бізнес-середовищі. Це спричинено швидкими
технологічними змінами та зростаючими обсягами даних, дана проблема стає
складнішою та вимагає ефективних рішень. Одним з найбільш
перспективних підходів є використання програмних систем для автоматизації
процесу оцінки ризиків. Тому дана тема дуже важлива для розробки сучасних
програмних рішень.
Метою даної кваліфікаційної роботи магістра є створення
функціонального та надійного сервісу для компаній з можливістю ефективної
перевірки клієнтів перед початком співпраці з ними, що сприятиме
забезпеченню безпеки та мінімізації ризиків.
Об’єкт дослідження - процес оцінки ризиків при взаємодії з новими
клієнтами компаній та методи розробки програмних систем для його
автоматизації.
Предмет дослідження - розробка програмних систем для автоматизації
систем управління бізнес-процесами.
Наукова новизна даної теми полягає в розробці та вдосконаленні
програмних систем та методів, які спеціалізуються на автоматизованій оцінці
ризиків при роботі з новими клієнтами компаній. Це включає в себе розробку
алгоритмів для зібрання та аналізу інформації про ризики, впровадження
систем штучного інтелекту для виявлення аномалій та розробку заходів
кібербезпеки для забезпечення надійності процесу. Новаторські рішення в
цій галузі сприяють забезпеченню більш ефективної та безпечної діяльності
компаній у цій сфері.
Практична цінність результатів роботи залежить від впровадження
програмного забезпечення, яке реалізує методи, що спеціалізуються на
автоматизованій оцінці ризиків. Це має вагоме практичне значення для
ведення діяльності компаній, оскільки допомагає зекономити час, зменшити
ризики та підвищити довіру клієнтів, сприяючи ефективній та надійній
взаємодії з ними.
У першому розділі виконано аналіз предметної області, визначено
сутність процесу перевірки клієнтів, розглянуто види таких перевірок та
висвітлено процедури перевірки фінансових установ. Також визначено
поставлені завдання, необхідні для успішного виконання кваліфікаційної
роботи.
У другому розділі здійснено огляд існуючих технологій, що
використовуються у даній області. Розглянуто протоколи комунікації та
вибрано технології, які найкраще відповідають потребам цього процесу.
У третьому розділі надано комплексний огляд розробленої системи,
включаючи її структуру, функціональність, заходи забезпечення безпеки
інформації, технічні вимоги для ефективної роботи та результати оцінки її
ефективності.
Висновки включають в себе основні результати роботи. У додатках
наведено специфікацію, текст програмного забезпечення та інструкцію
користувача. Загальний обсяг роботи становить 100 сторінок. У
кваліфікаційній роботі магістра 13 рисунків та 3 додатки. Для виконання
роботи використано 22 літературних джерела.
ANOTATION
Automation of the process of checking risks when working with new clients
is becoming an increasingly relevant and important task for many companies in the
modern business environment. Driven by rapid technological changes and growing
volumes of data, this problem is becoming more complex and requires effective
solutions. One of the most promising approaches is the use of software systems to
automate the risk assessment process. Therefore, this topic is very important for
the development of modern software solutions.
The purpose of this Master's thesis is to create a functional and reliable
service for companies with the ability to effectively check clients before working
with them, which will contribute to ensuring safety and minimizing risks.
The object of the research is the process of assessing risks when interacting
with new clients of companies and methods of developing software systems for its
automation.
The subject of the research is the development of software systems for the
automation of risk checks when interacting with new clients of companies.
The scientific novelty of this topic lies in the development and improvement
of software systems and methods that specialize in automated risk assessment
when working with new corporate clients. This includes developing algorithms to
collect and analyze risk information, implementing artificial intelligence systems
to detect anomalies, and developing cybersecurity measures to ensure process
reliability. Innovative solutions in this field contribute to ensuring more efficient
and safe activities of companies in this field.
The practical value of the results is practical because it helps to save time,
reduce risk and increase the trust of customers, facilitating an effective and reliable
interaction with them.
In the first section, an analysis of the subject area was carried out, the
essence of the customer verification process was defined, the types of such
verifications were considered, and the procedures for the verification of financial
institutions were highlighted. The tasks required for the successful completion of
the qualification work are also defined.
The second section provides an overview of existing technologies used in
this area. Communication protocols are reviewed and technologies that best meet
the needs of this process are selected.
The third chapter provides a comprehensive overview of the developed
system, including its structure, functionality, measures to ensure information
security, technical requirements for effective operation, and the results of
evaluating its effectiveness.
The conclusions include the main results of the work. Appendices include
specification, program text, and user manual. The total volume of work is 100
pages. There are 13 drawings and 3 appendices in the master's qualification work.
22 literary sources were used to perform the work.
3
ВСТУП………………………………………………………………………. 4
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ…………………………………………………... 7
1.1 Аналіз предметної області……………………………………...…. 7
1.2 Вибір напряму дослідження………………………………………. 14
1.3 Постановка задачі…………………………………………………. 21
1.4 Висновки до розділу 1…………………………………………….. 24
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ…………………………………………………….. 25
2.1 Огляд існуючих технологій……………………………………… 25
2.2 Вибір технологій ………………………………………………… 42
2.3 Висновки до розділу 2…………………………………………… 51
РОЗДІЛ 3 МЕТОДИ РОЗРОБКИ ПРОГРАМНИХ СИСТЕМ ДЛЯ
АВТОМАТИЗАЦІЇ ПЕРЕВІРКИ РИЗИКІВ ПРИ РОБОТІ З НОВИМИ
КЛІЄНТАМИ КОМПАНІЙ………………………………………………… 52
3.1 Структура системи………………………………………………... 52
3.2 Опис функцій системи……………………………………………. 60
3.3 Забезпечення захисту інформації при роботі зі створеною
системою ……………………………………………………………… 67
3.4 Технічні вимоги для роботи з системою………………………... 71
3.5 Оцінка ефективності застосування системи…………………… 74
3.6 Висновки до розділу 3……………………………………………. 76
ВИСНОВКИ…………………………………………………………………. 78
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ…………………... 80
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ…………………………………… 81
ДОДАТКИ:
А – 482.ЧДТУ.32286-01 Методи розробки програмних систем для
автоматизації перевірки ризиків при роботі з новими клієнтами
компаній
5
ВСТУП
Актуальність теми дослідження. Полягає в тому, що сучасні
компанії стикаються зі зростаючими викликами та ризиками, зокрема
фінансового або репутаційного характеру, пов'язаними з взаємодією з
новими клієнтами. Зі зростанням міжнародної торгівлі та інвестицій,
компанії мають більше фінансових ризиків, пов'язаними з платежами,
кредитами та валютними операціями. Зростання кіберзагроз та кібератак
призводить до необхідності надійного захисту інформації та даних клієнтів.
Регуляторні органи вводять все більше вимог до звітності та дотримання
норм і правил у сфері фінансів, безпеки та конфіденційності. Компанії, які
володіють ефективними системами автоматизації оцінки ризиків, можуть
привертати більше клієнтів та забезпечувати вищий рівень обслуговування.
Усі ці фактори обумовлюють актуальність теми дослідження та
необхідність розробки програмних систем для автоматизації перевірки
фінансових ризиків при роботі з новими клієнтами компаній у сучасному
бізнес-середовищі.
Метою кваліфікаційної роботи магістра є створення функціонального
та надійного сервісу для компаній з можливістю ефективної перевірки
клієнтів перед початком співпраці з ними, що сприятиме забезпеченню
безпеки та мінімізації ризиків. Це буде відображено у сервісі, яка дає
можливість компаніям отримувати зворотній звʼязок від своїх клієнтів.
Для досягнення сформульованої мети необхідно розв'язати такі задачі:
1. Визначити специфічні потреби компаній щодо перевірки клієнтів та
створити список вимог, які має враховувати сервіс;
2. Розробити архітектуру сервісу, включаючи визначення методів
перевірки, технічну інфраструктуру та функціональні можливості, які
допоможуть компаніям в ефективній перевірці клієнтів;
6
3. Створити програмний інтерфейс, який дозволить компаніям та їх
сервісам легко інтегруватися з розробленим сервісом та виконувати
перевірку клієнтів;
4. Розробити алгоритми, які дозволять ефективно аналізувати та
перевіряти інформацію про клієнтів на предмет достовірності та
ризиків;
5. Забезпечити можливість інтеграції сервісу з існуючими системами та
процесами компаній-користувачів, а також впровадити сервіс в
робочий процес;
6. Провести валідацію та оцінку ефективності сервісу з урахуванням
вимог користувачів та стандартів.
На цю тему автор Дуглас Хуббард опублікував книгу "How to Measure
Anything: Finding the Value of Intangibles in Business", у якій розглядаються
методи оцінки ризиків та важливості вимірювання навіть тих аспектів, які
можуть здатися неосяжними. Також автор Дейвід Сімонс опублікував книгу
"Designing and Building Security Operations Center", що присвячена питанням
забезпечення інформаційної безпеки та функціонування центрів забезпечення
безпеки.
Об’єкт дослідження - процес оцінки ризиків при взаємодії з новими
клієнтами компаній та методи розробки програмних систем для його
автоматизації.
Предмет дослідження - розробка програмних систем для автоматизації
систем управління бізнес-процесами.
Наукова новизна даної теми полягає в розробці та вдосконаленні
програмних систем та методів, які спеціалізуються на автоматизованій оцінці
ризиків при роботі з новими клієнтами компаній. Це включає в себе розробку
алгоритмів для зібрання та аналізу ризикованої інформації, впровадження
систем штучного інтелекту для виявлення аномалій та розробку заходів
кібербезпеки для забезпечення надійності процесу. Новаторські рішення в
7
цій галузі сприяють забезпеченню більш ефективної та безпечної діяльності
компаній у цій сфері.
Практична цінність результатів роботи залежить від впровадження
програмного забезпечення, яке реалізує методи, що спеціалізуються на
автоматизованій оцінці ризиків. Це має вагоме практичне значення для
ведення діяльності компаній, оскільки допомагає зекономити час, зменшити
ризики та підвищити довіру клієнтів, сприяючи ефективній та надійній
взаємодії з ними.
У першому розділі виконано аналіз предметної області, визначено
сутність процесу перевірки клієнтів, розглянуто види таких перевірок та
висвітлено процедури перевірки фінансових установ. Також визначено
поставлені завдання, необхідні для успішної виконання кваліфікаційної
роботи. У другому розділі здійснено огляд існуючих технологій, що
використовуються у даній області. Розглянуто протоколи комунікації та
вибрано технології, які найкраще відповідають потребам цього процесу. У
третьому розділі надано комплексний огляд розробленої системи, включаючи
її структуру, функціональність, заходи забезпечення безпеки інформації,
технічні вимоги для ефективної роботи та результати оцінки її ефективності.
Використана література під час написання кваліфікаційної роботи досить
добре розкриває тему та відображає потреби для аналізу.
Апробація. Основні результати даної кваліфікаційної роботи магістра
доповідалися та обговорювалися на другій Міжнародній науково-практичній
Інтернет-конференції «Іновації та перспективні шляхи розвитку інформаційних
технологій (ІПШРІТ-2023)», Черкаси, 6 грудня 2023 р.
Структура і обсяг роботи. Робота складається із вступу, трьох розділів,
висновків, списку скорочень, додатків та списку використаної літератури.
Загальний обсяг кваліфікаційної роботи магістра 100 сторінок, у тому числі 13
рисунків та 3 додатки. Список використаних джерел містить 22 найменування.
8
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ
1.1 Аналіз предметної області
Перевірка клієнтів. Перевірка клієнтів є важливою практикою для
багатьох компаній. Ця процедура допомагає компаніям виявляти можливих
шахраїв і клієнтів з недобросовісними намірами, які можуть завдати збитків
компанії або скористатися її послугами нечесно. Закони та регуляції можуть
вимагати від компаній проводити перевірку клієнтів, особливо в галузях, де
існують великі ризики легалізації доходів, фінансового шахрайства або
інших порушень. Також перевірка клієнтів може стосуватися як фінансової
безпеки компанії, так і фізичної безпеки, наприклад, в разі компаній, що
надають послуги доставки або споживчі товари. У фінансовому секторі,
особливо в банківській галузі, перевірка клієнтів допомагає оцінювати
кредитоспроможність позичальників і зменшувати ризик невиплати кредитів.
Робота з клієнтами, які порушують закон або мають недобросовісну
репутацію, може завдати збитків репутації компанії. Перевірка клієнтів може
допомогти уникнути таких проблем.
Верифікація адрес електронної пошти відображає собою акт перевірки
та підтвердження валідності електронних поштових адрес, що включені до
списку розсилки, та їх можливості приймати електронні повідомлення.
Одним із найпоширеніших методів здійснення цього процесу є використання
процедури подвійної реєстрації. Цей метод передбачає надсилання
підтверджуючих листів електронною поштою новим підписникам сервісу.
Цей підхід сприяє перевірці того, що підписники введуть правильну та
валідну адресу електронної пошти, а також підтвердять її належність до них.
Це допомагає забезпечити, що особи, які надають свої адреси, дійсно мають
намір підписатися на розсилку та отримувати маркетингові повідомлення.
9
Проте слід відзначити, що використання методу подвійної реєстрації
супроводжується своїми недоліками. У відсутність послуг перевірки
електронної пошти користувачі можуть не помічати орфографічних помилок
при введенні своїх адрес електронної пошти, що може призвести до
включення недійсних адрес у список розсилки.
Якщо клієнти не отримають листа з посиланням для підтвердження в
своїй поштовій скриньці, їм доведеться пройти весь процес реєстрації
повторно. Саме з цієї причини багато компаній вирішують використовувати
програмний інтерфейс (API) для автоматизованої верифікації адрес
електронної пошти на своїх веб-сайтах.
API для перевірки електронної пошти представляє собою програму, яка
надає можливість веб-адміністраторам та розробникам інтегрувати процес
перевірки електронних адрес у вже існуючу систему. Цей інтерфейс діє як
посередник між різними програмними компонентами, дозволяючи зв'язати
сторінку реєстрації, наприклад, з службою перевірки електронної пошти для
забезпечення надійної та ефективної верифікації адрес електронної пошти.
API для перевірки адрес електронної пошти функціонує, витягуючи
інформацію з сервісів верифікації адрес електронної пошти [1]. Коли
користувачі реєструються на веб-сайті, що використовує API для перевірки
адрес електронної пошти, програма здійснює зв'язок зі службою верифікації,
яка проводить перевірку за допомогою розширених алгоритмів.
Служби верифікації адрес електронної пошти можуть отримувати дані
з баз даних поштових серверів, вільних баз даних поштових провайдерів,
списків одноразових поштових доменів і т.д. Найрозповсюдженішим
застосуванням API для верифікації адрес електронної пошти є їх інтеграція у
сторінки реєстрації.
У такому випадку, якщо користувач вводить неправильну адресу
електронної пошти у форму реєстрації, сторінка має негайно повідомити про
помилку та нагадати спробувати ще раз.
10
Існує безліч важливих міркувань, які роблять перевірку адрес
електронної пошти надзвичайно значущою як для маркетингу через
електронну пошту, так і для завоювання нових клієнтів, які створюють
обліковий запис з вашим брендом.
Використання API для перевірки адреси електронної пошти сприяє
створенню кращого клієнтського досвіду. Клієнти більше не марнують час,
очікуючи на відправку підтверджуючого коду, який, можливо, ніколи не
досягне їх у випадку неправильного введення адреси електронної пошти.
Замість цього, вони одразу отримують сповіщення про потенційну помилку у
введенні адреси, що дає їм можливість негайно скоригувати її, якщо це
необхідно. Це сприяє уникненню розчарування і ризику втрати інтересу
клієнтів.
Перевірка адрес електронної пошти допомагає підвищити ефективність
доставки електронних повідомлень. Ідентифікація та видалення недійсних
адрес зі списків розсилки дозволяє зменшити кількість повідомлень, які не
будуть доставлені, і покращити загальну якість
Верифікація адрес електронної пошти допомагає зберігати ресурси
компанії, бо вона дозволяє уникнути витрат на надсилання повідомлень на
недійсні адреси. Це може позитивно вплинути на фінансову ефективність
маркетингових кампаній через електронну пошту.
Перевірка адрес електронної пошти є важливою складовою успішного
маркетингу та взаємодії з клієнтами, оскільки вона сприяє покращенню
клієнтського досвіду, забезпечує ефективність доставлення повідомлень і
раціоналізує використання ресурсів компанії.
В роботі з клієнтами є таке скорочення KYC (Know Your Customer),
що дослівно означає "Знай свого клієнта" і використовується в банківській,
фінансовій та іншій сфері, де мається справа з фінансовими операціями осіб.
Суть KYC полягає у виконанні трьох обов'язкових кроків перед
здійсненням фінансової операції:
1. Ідентифікація клієнта (хто проводить операцію?);
11
2. Перевірка законності (на яких підставах проводиться операція?);
3. Аналіз сутності операції та оцінка ризиків, пов'язаних із нею.
KYC вважається завершеним, коли установа отримує задовільні
відповіді на ці три питання. Для цього клієнт повинен представити
необхідний набір документів та інформацію про себе, що дозволяє провести
обов'язковий аналіз та перевірку.
Критерії визначення клієнта (KYC) є процедурою, в рамках якої
фінансові установи та інші компанії, що здійснюють операції з фінансовими
активами фізичних осіб та юридичних осіб, вимагають надання специфічної
інформації та документів від своїх клієнтів [2]. Сам перелік документів та
інформації, що вимагається в рамках KYC, залежить від конкретної співпраці
та фінансових операцій, які плануються.
Зазвичай фізична особа, яка бажає відкрити банківський рахунок, надає
паспорт та ідентифікаційний номер платника податків.
Додаткові документи та інформація можуть бути запитані, залежно від
конкретної ситуації, наприклад довідка з роботи або контракт та інші
документи, які підтверджують легальність джерела отримуваних коштів у
випадку фізичних осіб-підприємців (ФОП).
Процедура KYC зазвичай включає наступні кроки:
1. Клієнт подає заяву та заповнює відповідну анкету, де зазвичай
включені питання, пов'язані з KYC;
2. Фінансова установа аналізує надану інформацію та визначає, чи
може вона погодитися на співпрацю з клієнтом.
Суть KYC полягає в забезпеченні об'єктивної інформації про клієнта,
яка дозволяє ідентифікувати клієнта і з'ясувати призначення його фінансових
операцій. Визначити, яким чином клієнт планує співпрацювати з фінансовою
установою і з якими інструментами. Оцінити ризики, пов'язані з клієнтом і
його фінансовими операціями. Встановити тип і обсяг транзакцій для
конкретного клієнта. Відстежувати незвичайні транзакції клієнта.
12
Забезпечити виконання вимог державних органів щодо запобігання
відмиванню грошей та фінансуванню тероризму.
KYC надає фінансовим установам і компаніям засіб контролювати
фінансовий ризик та дотримуватися вимог законодавства у сфері фінансів і
підприємництва.
KYC для клієнта виступає важливим елементом ідентифікації та
встановлення взаємовідносин з фінансовою організацією. Ця практика сприяє
підвищенню точності та корисності наданих фінансових послуг.
У світі, KYC є стандартною практикою для фінансових установ,
бухгалтерських фірм, юридичних консультантів, букмекерських контор та
інших суб'єктів, які здійснюють фінансові операції. Ця практика допомагає
учасникам фінансових ринків протидіяти шахрайству, відмиванню грошей та
іншим видам фінансових злочинів.
В Україні KYC впроваджується протягом останніх десяти років та стає
необхідною складовою для розвитку численних успішних проектів та
підприємств. Варто зауважити, що кожна компанія може регулювати власну
політику KYC.
Для початку використання системи KYC в організації рекомендується
розробити відповідну документацію, таку як постанови, інструкції та
політики, в яких визначаються внутрішні процедури організації. Наприклад,
інструкція з прийняття нових контрагентів може включати певні вимоги
щодо KYC, такі як відсутність боргів перед бюджетом, відсутність
кримінальних проваджень або відсутність господарських справ, де клієнт
виступає відповідачем.
KYB (Know Your Business) - це систематичний процес визначення та
перевірки корпоративних суб'єктів у контексті їхніх бізнес-відносин, і
відмінностей від KYC (Know Your Customer), який спрямований на
ідентифікацію окремих фізичних осіб. KYB виконує роль визначення
легітимності та ризику, що пов'язаний з відносинами між компаніями та
13
іншими корпоративними суб'єктами. Цей процес допомагає підприємствам
встановити та підтвердити інформацію про своїх корпоративних клієнтів.
KYB включає в себе аналіз наступних аспектів:
1. Юридична структура компанії. Визначення типу корпорації або
організації, її статусу та історії;
2. Власники та керівництво. Ідентифікація осіб, які контролюють або
керують компанією, а також їхніх повноважень та функцій;
3. Кінцевий бенефіціарний власник (UBO). Визначення особи, яка
насправді володіє або контролює компанію, особи, яка стоїть за
корпоративними структурами;
4. Історія суб'єкта. Перевірка наявності попередньої діяльності,
судимостей або санкцій, що можуть вплинути на репутацію компанії.
KYB також допомагає виявити потенційно незаконні або
маніпулятивні практики, такі як використання корпоративних структур для
відмивання грошей або іншої незаконної діяльності. Цей процес сприяє
підвищенню прозорості та відповідності фінансових та корпоративних
стандартів, а також допомагає уникнути ризику, пов'язаного з санкціями та
іншими правопорушеннями у бізнес-сфері.
Також у світі існує глобальний постачальник юридичної, регуляторної
та бізнес-інформації. Це LexisNexis вони пропонують широкий спектр послуг
і продуктів, включаючи юридичний аналіз, новини, бізнес-дані та аналітику.
LexisNexis обслуговує професіоналів у різних галузях, включаючи юридичну,
урядову, корпоративну та академічну сфери [3].
LexisNexis надає доступ до великої бази даних юридичного контенту,
включаючи судову практику, закони, регуляції та юридичні публікації.
Юридичні професіонали використовують цей сервіс для юридичних
досліджень та оновлення щодо останніх юридичних подій.
Вони пропонують рішення для допомоги підприємствам управляти
регуляторною сумісністю, зменшувати ризики та забезпечувати належну
14
документацію в галузі дотримання вимог щодо запобігання відмиванню
грошей (AML) та визначення клієнта (KYC).
LexisNexis веде моніторинг новин та джерел медіа, що дозволяє
підприємствам та організаціям стежити за згадками та тенденціями,
пов'язаними з їхніми галузями та інтересами.
Вони надають послуги з обробки даних та аналізу для підприємств,
щоб ті могли приймати обґрунтовані рішення, оцінювати ринкові тенденції
та виявляти можливості.
LexisNexis пропонує ресурси для академічних установ і бібліотек, що
дозволяє студентам, дослідникам і викладачам отримувати доступ до
юридичної та бізнес-інформації.
Також надає урядовим агентствам інструменти та дані для підтримки
правопорядку, громадської безпеки та регуляторної діяльності.
Важливо відзначити, що LexisNexis може надавати різні продукти та
послуги, спеціально налаштовані на конкретні потреби індивідуальних
користувачів і організацій.
Trulioo - це компанія, яка спеціалізується на послугах верифікації
особи та ідентифікації клієнтів (KYC - Know Your Customer) для бізнесів і
фінансових установ. Вони надають рішення для перевірки та підтвердження
особистої інформації клієнтів з метою забезпечення безпеки, відповідності
законодавству і запобігання шахрайству та відмиванню грошей.
GlobalGateway це головний продукт, який надає доступ до широкої
мережі даних для верифікації особи та ідентифікації клієнтів. Він дозволяє
бізнесам перевіряти особисту інформацію клієнтів з різних країн та джерел
даних.
KYC Solutions Trulioo надає рішення для виконання процедур KYC та
AML (Anti-Money Laundering). Ці рішення допомагають бізнесам визначити і
підтвердити ідентичність своїх клієнтів та виконати необхідні перевірки для
дотримання вимог законодавства.
15
Document Verification Trulioo також пропонує інструменти для
перевірки документів, таких як паспорти або водійські посвідчення. Це
допомагає бізнесам перевіряти правдивість поданих документів.
AML Screening надають послуги скринінгу клієнтів для виявлення осіб,
які можуть бути пов'язані з фінансовими злочинами або тероризмом.
Trulioo також може надавати додаткові послуги, такі як перевірка
адреси, відстежування PEP (політично експонованих осіб) та інші послуги,
спрямовані на підвищення рівня безпеки та відповідності [4].
Trulioo допомагає бізнесам з різних галузей, включаючи фінансові
установи, фінтех-компанії, електронну комерцію, онлайн-ринки та інші,
забезпечити відповідність нормативним вимогам та підвищити безпеку
операцій з клієнтами.
1.2 Вибір напряму дослідження
У попередньому підрозділі 1.1 ми проаналізували предмет області
дослідження. Розглянули що таке перевірка інформації клієнтів, навіщо
робити таку перевірку та які бувають види перевірок. Також розглянуто було
такий термін як KYC, проаналізовано Trylioo та LexisNexis. Тепер
розглянемо напрям дослідження, а саме:
В яких сферах важлива перевірка клієнтів. Перевірка клієнтів,
також відома як KYC, є важливою в різних сферах бізнесу та фінансів, де
існує ризик фінансової злочинності, включаючи відмивання грошей,
фінансування тероризму та шахрайство. Розглянемо деталізовану
інформацію щодо сфер, де важлива перевірка клієнтів:
Банківська сфера (відкриття банківських рахунків) фінансові інституції
повинні вести документацію та перевіряти клієнтів перед відкриттям
банківського рахунку. Це допомагає уникнути відмивання грошей та інших
фінансових злочинів.
16
Видача кредитів та позик перед наданням кредиту або позики банк
також повинен перевірити клієнта, його кредитоспроможність та історію
платежів.
Фінансові інвестиції (брокерські послуги) фірми, що надають
брокерські послуги, повинні вести KYC-перевірку перед прийняттям коштів
від клієнтів і виконанням їхніх замовлень на ринку цінних паперів.
Інвестиційні фонди, компанії, що управляють інвестиційними
фондами, також мають зобов'язання перевіряти інвесторів перед прийняттям
їхніх коштів.
Страхування (поліси страхування) страхові компанії зазвичай
перевіряють клієнтів перед укладенням угоди про страхування, оскільки це
допомагає уникнути страхового шахрайства.
Нерухомість (купівля/продаж нерухомості) реєстрація та перевірка
осіб, що придбали нерухомість, може відігравати ключову роль у запобіганні
відмиванню грошей та шахрайству.
Електронна комерція (онлайн-платежі та платіжні системи) провайдери
платіжних послуг повинні здійснювати перевірку клієнтів для запобігання
шахрайству та крадіжкам карткових даних.
Криптовалюти (обмін криптовалют) біржі та обмінники криптовалют
повинні дотримуватися обов'язкових вимог з перевірки клієнтів для боротьби
з фінансовою злочинністю.
Автомобільна промисловість (продаж автомобілів) деякі країни
вимагають перевірки клієнтів перед продажем автомобілів, щоб уникнути
використання транспортних засобів для незаконних цілей.
Туристична і готельна галузі (бронювання готелів та туристичні
послуги) деякі компанії здійснюють перевірку клієнтів для захисту від
можливих шахрайств та незаконних дій.
Загальна мета перевірки клієнтів полягає в тому, щоб зменшити ризик
фінансової злочинності, зберегти доброчесність бізнес-операцій та
забезпечити виконання вимог законодавства. Точні вимоги і процедури для
17
KYC можуть відрізнятися залежно від країни та галузі бізнесу, але вони
загалом спрямовані на забезпечення безпеки та доброчесності фінансових
транзакцій.
Перевірка клієнтів для банків є надзвичайно важливою з кількох
причин.
Це запобігання відмиванню грошей, де клієнти можуть намагатися
використовувати банківські рахунки для легалізації грошей, отриманих від
незаконної діяльності. Перевірка клієнтів допомагає виявити підозрілі
транзакції та зменшити ризик відмивання грошей.
Запобігання фінансуванню тероризму допомагає визначити осіб, які
можуть намагатися використовувати банківські послуги для фінансування
терористичних дій або інших злочинів.
Збереження дотримання законодавства банки повинні дотримуватися
різних законодавчих вимог та регуляцій, включаючи вимоги щодо KYC.
Невиконання цих вимог може призвести до серйозних правових наслідків та
штрафів.
Зменшення ризику шахрайства та кредитного ризику допомагає банкам
оцінити кредитну історію та фінансовий стан клієнтів, що допомагає в
зменшенні ризику невиплати кредитів та мінімізації фінансових втрат.
Збереження доброчесності та репутації допомагає зберегти
доброчесність банку та його репутацію перед клієнтами та владними
органами.
Забезпечення безпеки для клієнтів забезпечує безпеку для інших
клієнтів банку, бо допомагає виявити та уникнути фінансових злочинів, які
можуть вплинути на всю фінансову систему.
Збільшення внутрішнього контролю допомагають банкам підтримувати
високий рівень внутрішнього контролю, що важливо для управління
ризиками та дотримання вимог безпеки.
Загалом, перевірка клієнтів є невід'ємною частиною банківської
діяльності та спрямована на забезпечення фінансової безпеки, дотримання
18
законодавства та доброчесності в операціях банку. Вона допомагає зберегти
стабільність фінансової системи та захистити інтереси клієнтів та суспільства
в цілому.
Також фінансові установи є важливою частиною сучасної економіки і
грають ключову роль у забезпеченні фінансового обслуговування, розподілі
капіталу та підтримці розвитку різних галузей [5].
Кредитні спілки - це фінансові установи, які надають фінансові
послуги своїм членам, які власники спільних пайових вкладів. Вони можуть
бути споживчими, корпоративними або спеціалізованими. Кредитні спілки
надають кредити, зберігають гроші, обслуговують платіжні операції та
інвестують кошти членів.
Банки є фінансовими інститутами, які надають широкий спектр
фінансових послуг, включаючи зберігання коштів, видачу кредитів,
інвестування та інші фінансові послуги. Вони грають центральну роль у
фінансовій системі, сприяючи розподілу капіталу та забезпечуючи
стабільність грошового обігу.
Фінансові компанії включають страхові компанії, інвестиційні фонди,
пенсійні фонди та інші організації, які надають конкретні фінансові послуги.
Вони спеціалізуються в конкретних аспектах фінансів, таких як страхування,
інвестування пенсійних коштів та інше.
Організації, що видають гранти - це фінансові організації або фонди,
які надають фінансову підтримку та ресурси різним проектам, галузям та
організаціям відповідно до встановлених критеріїв. Вони видають гранти,
сприяють розвитку соціальних, наукових, освітніх та громадських ініціатив,
надаючи їм необхідні фінансові ресурси.
Інвестиційні компанії займаються управлінням коштами клієнтів та
інвестують їх в різні активи, включаючи акції, облігації, нерухомість та інше.
Вони допомагають клієнтам збільшити їхні інвестиційні портфелі та досягти
фінансових цілей.
19
Мікрофінансові установ спеціалізуються на наданні фінансових
послуг менш забезпеченим і підприємцям в сфері малого бізнесу. Вони
надають мікрокредити, зберігають гроші та надають фінансову підтримку
малому бізнесу та індивідуальним клієнтам.
Фондові біржі - це ринки, на яких торгуються фінансові інструменти,
такі як акції, облігації та товари. Ці установи сприяють інвесторам у
здійсненні купівлі та продажу цих активів. Також біржі забезпечують
ліквідність ринку та дозволяють компаніям залучати капітал для розвитку.
Пенсійні фонди - це установи, які управляють коштами, призначеними
для пенсійних виплат у майбутньому. Вони інвестують ці кошти. Фонди
допомагають забезпечити пенсійну безпеку для майбутніх поколінь та
грають важливу роль у пенсійній системі.
Міжнародні фінансові установи, такі як Міжнародний валютний
фонд (МВФ) та Світовий банк, надають фінансову підтримку та кредити
країнам та проектам по всьому світу для сприяння розвитку та економічної
стабільності. Такі фінансові установи допомагають країнам забезпечити
фінансову стабільність, здійснюють реформи та надають технічну підтримку
для розвитку.
Електронні платіжні системи ці системи дозволяють клієнтам
проводити електронні платежі та перекази грошей через Інтернет або
мобільні додатки. Електронні системи роблять фінансові транзакції більш
зручними та швидкими та сприяють розвитку електронної комерції.
Фінансові регулятори і наглядові органи - це державні або
міжнародні органи, які регулюють та наглядають фінансовий сектор,
забезпечуючи дотримання законодавства та стабільність ринку. Регулятори і
наглядові органи забезпечують безпеку та надійність фінансових установ та
сприяють захисту прав та інтересів клієнтів.
Ці різні фінансові установи мають свої функції та ролі в глобальній
економіці, і вони сприяють фінансовій стабільності та розвитку різних
секторів.
20
Перевірка клієнтів в криптовалютних операціях є важливим
інструментом для забезпечення відповідності до законодавства і запобігання
фінансовим злочинам у сфері криптовалют. Цей процес включає в себе
комплекс заходів та процедур, спрямованих на ідентифікацію,
аутентифікацію та оцінку клієнтів, які бажають здійснювати операції з
криптовалютами.
Протягом багатьох років криптовалютні біржі функціонували в умовах
відсутності регуляторного каркаса та нормативно-правової бази. Без
наявності конкретних законодавчих актів, спрямованих на регулювання
цього сегмента фінансового ринку, ці біржі опрацьовували, ігноруючи
звичайні стандарти та норми, які традиційно застосовуються до інших, більш
традиційних фінансових інститутів, зокрема банків.
Проте, усе змінилося у 2019 році, коли три важливі фінансові
регулятори - Комісія з термінових товарних операцій і ф'ючерсів (CFTC),
Комісія з цінних паперів і бірж (SEC) та Фінансовий кримінальний аналіз
(FinCEN) - спільно видали офіційну заяву, в якій криптовалютні біржі були
формально класифіковані як фінансові організації [6]. З цього моменту
правила боротьби з відмиванням грошей (AML), встановлені Законом про
банківську таємницю, стали застосовуватися до криптовалютних бірж. Ця
заява стала переломом і відзначила початок епохи посилення регуляторного
контролю над криптовалютними біржами.
За останні роки кілька криптовалютних бірж було покарано штрафами
та притягнуто до кримінальної відповідальності за порушення законодавства
і відсутність або неадекватність політики боротьби з відмиванням грошей. Ці
санкції відображають серйозність регуляторів у відношенні до дотримання
криптовалютних бірж законів і нормативів, і наголошують на важливості
встановлення ефективних систем внутрішнього контролю та дотримання
вимог AML для забезпечення фінансової безпеки та довіри в цьому галузі.
AML (Anti-Money Laundering) це набір законів, правил і нормативів,
створених для запобігання відмиванню грошей та іншим фінансовим
21
злочинам, таким як крадіжка особистих даних та ухилення від сплати
податків.
Правила AML зобов'язують фінансові установи, включаючи
криптовалютні біржі та платіжні сервіси, вести моніторинг фінансових
операцій клієнтів, щоб виявити будь-яку підозрілу активність, яка може
свідчити про відмивання грошей або інші фінансові злочини. Важливо
відзначити, що AML також містить процедуру Know Your Customer (KYC),
яка полягає в перевірці особистості та ідентифікації клієнтів перед наданням
доступу до фінансових послуг.
Застосування правил AML допомагає зберігати фінансову систему в
безпеці та запобігати незаконним фінансовим діям, забезпечуючи
відповідність фінансових установ законодавству та регуляціям, спрямованим
на боротьбу зі злочинністю в галузі фінансів.
Для того, щоб відповідати вимогам щодо боротьби з відмиванням
грошей (AML), фінансові установи повинні реалізувати п'ять основних
принципів AML.
Призначення відповідального за дотримання вимог AML.
Установлення внутрішньої посади або відповідальної особи, яка буде
відповідати за виконання та нагляд за всіма аспектами AML в бізнесі.
Розробка внутрішньої політики AML. Розробка та впровадження
внутрішніх політик та процедур, які дозволяють відстежувати підозрілу
діяльність клієнтів та вчасно повідомляти про неї. Ця політика повинна
відповідати всім вимогам відповідного законодавства.
Програма навчання співробітників. Забезпечення навчання та
підготовки персоналу для забезпечення їх відповідності стандартам,
встановленим в законодавстві щодо боротьби з відмиванням грошей.
Незалежне тестування та аудит. Проведення незалежних тестувань та
аудиту програми та політики AML третіми сторонами або аудиторами з
акредитацією для перевірки відповідності і ефективності заходів.
22
Поглиблена оцінка ризиків. Проведення поглибленої оцінки ризиків
при ідентифікації та перевірці особи клієнтів, зокрема оцінка ризиків
пов'язаних з певними клієнтами або типами операцій.
Дотримання цих принципів AML допомагає фінансовим установам
забезпечити відповідність законодавству, зменшити ризики відмивання
грошей та інших фінансових злочинів і забезпечити інтегритет фінансової
системи.
Криптовалюти, завдяки своїй природі, можуть надавати певну
анонімність і спрощувати проведення фінансових операцій без ідентифікації
особи, що може створювати сприятливі умови для фінансової злочинності,
включаючи відмивання грошей.
Децентралізовані біржі (DEX) дійсно мають більший ступінь
анонімності та не підпадають під ті ж самі правила AML, які діють на
централізованих біржах [7]. Це може створювати ризики, пов'язані з
незаконною діяльністю.
Глобальний характер криптовалют також ускладнює регуляцію і
контроль. Трансграничні платежі можуть охоплювати різні юрисдикції, і це
може викликати проблеми у координації регуляторів та наглядових органів.
Проте, дотримання вимог AML може сприяти створенню більшій
довірі до криптовалют та їхнього використання. Це може зменшити страхи та
попередження стосовно криптовалют, особливо серед інституційних
інвесторів. Регулювання і впровадження стандартів AML також може
сприяти легітимізації індустрії та її подальшому розвитку як частини
фінансової системи.
1.3 Постановка задачі
Автоматизація процесів має важливе значення в сучасному світі через
ряд факторів. По-перше, вона сприяє підвищенню ефективності, оскільки
дозволяє здійснювати рутинні та повторювані завдання швидше та точніше,
23
зменшуючи людські помилки та підвищуючи продуктивність. По-друге,
автоматизація допомагає знизити витрати, оскільки деякі операції можуть
бути виконані без постійного втручання людини. По-третє, це підвищує
якість, оскільки стандартизує процеси та забезпечує їхню систематизацію.
Додатково, автоматизація дозволяє знизити ризик помилок та
зловживань, особливо в галузях, які стосуються фінансів та безпеки. В
автоматизованих системах можуть бути вбудовані механізми аварійного
відновлення та автоматичної реакції на надзвичайні ситуації, що сприяє
швидкій реакції на проблеми. Крім того, підприємства, які використовують
автоматизовані процеси, зазвичай є більш конкурентоспроможними, оскільки
можуть надавати більш ефективні та швидкі рішення на ринку.
Також, автоматизація дозволяє зберігати величезні обсяги даних та
інформації в електронному вигляді, забезпечуючи доступність та збереження
цінної інформації для подальшого аналізу та використання. В цілому,
автоматизація процесів відіграє важливу роль у розвитку бізнесу та
оптимізації робочих процесів.
З поширенням інтернету та цифрової технології виникає все більше
онлайн-сервісів та платформ, які вимагають ідентифікації та аутентифікації
користувачів. Забезпечення безпеки та захисту даних користувачів є
критичним завданням для таких сервісів.
Кіберзлочинці постійно шукають нові способи обходу захисту та зламу
систем аутентифікації. Забезпечення надійної перевірки користувачів стає
дедалі важливішим для запобігання кіберзлочинам, включаючи крадіжку
ідентифікаційних даних та витік особистої інформації.
Перевірка клієнтів перед початком роботи з ними є важливим етапом
для багатьох компаній та організацій з різних галузей. Також, це допомагає
зменшити ризик для компаній. Це означає, що компанія зможе уникнути
роботи з потенційно небезпечними або нечесними клієнтами, які можуть
завдати шкоди бізнесу.
24
У деяких галузях та країнах існують обов'язкові вимоги до перевірки
клієнтів з метою виявлення грошових потоків, які можуть бути пов'язані зі
злочинною діяльністю, такою як відмивання грошей.
Усі ці аспекти підкреслюють важливість перевірки клієнтів перед
початком роботи з ними як для фінансового успіху, так і для забезпечення
безпеки та дотримання законодавства.
Загальна мета кваліфікаційної роботи - створення функціонального та
надійного сервісу для компаній з можливістю ефективної перевірки клієнтів
перед роботою з ними, що сприятиме забезпеченню безпеки та мінімізації
ризиків. Для реалізації мети кваліфікаційної роботи потрібно виконати
наступні задачі:
1. Визначити специфічні потреби компаній щодо перевірки клієнтів та
створити список вимог, які має враховувати сервіс;
2. Розробити архітектуру сервісу, включаючи визначення методів
перевірки, технічну інфраструктуру, та функціональні можливості, які
допоможуть компаніям в ефективній перевірці клієнтів;
3. Створити програмний інтерфейс, який дозволить компаніям та їх
сервісам легко інтегруватися з розробленою сервісом та виконувати
перевірку клієнтів;
4. Розробити алгоритми, які дозволять ефективно аналізувати та
перевіряти інформацію про клієнтів на предмет достовірності та ризиків;
5. Забезпечити можливість інтеграції сервісу з існуючими системами
та процесами компаній-користувачів, а також впровадити сервіс в робочий
процес;
6. Провести валідацію та оцінку ефективності сервісу з урахуванням
вимог користувачів та стандартів.
Очікується, що впровадження системи допоможе компаніям значно
зменшити ризик пов'язаний з ненадійними або недобросовісними клієнтами.
Це може призвести до економії фінансових ресурсів та уникнення
фінансових втрат.
25
Розроблена система повинна сприяти підвищенню рівня безпеки даних
клієнтів та користувачів. Це стане важливим результатом для компаній,
особливо тих, які працюють з особистими даними та фінансовою
інформацією.
Впровадження сучасних технологій та методів перевірки може
призвести до створення інноваційних рішень та надання конкурентних
переваг на ринку.
1.4 Висновки до розділу 1
У даному розділі проведено детальний аналіз необхідності та методів
проведення перевірки клієнтів у контексті фінансового сектору. Розглянуто
різноманітні аспекти перевірки, включаючи розуміння концепції "Знай свого
клієнта" (Know Your Customer) та його практичне впровадження. Особливу
увагу приділено аналізу глобального постачальника юридичної, регуляторної
та бізнес-інформації, а саме компанії LexisNexis, і її ролі в наданні
необхідних послуг для впровадження ефективних процедур перевірки
клієнтів.
Також розглянуто компанію Trulioo і її спеціалізовані послуги,
спрямовані на вдосконалення процесу перевірки клієнтів. Визначено обраний
напрямок дослідження, зокрема обґрунтовано, в яких сферах повинна бути
перевірка клієнтів та пояснено важливість цього процесу для фінансових
установ, зокрема банків.
Проведено аналіз різних типів фінансових установ та специфічні
особливості проведення перевірки клієнтів у контексті операцій з
криптовалютами. На основі проведеного аналізу сформульовані основні
завдання для подальшого дослідження та визначені очікувані результати
даної роботи.
26
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ
2.1 Огляд існуючих технологій
На підставі аналізу предметної області, можна більш детально
оглянути існуючі технології та мови програмування для розробки системи.
Node.js - це вільна, відкрита платформа для розробки серверних та
мережевих додатків, побудована на движку JavaScript V8 веб-переглядача
Google Chrome. Node.js дозволяє виконувати JavaScript на серверному боці,
що раніше було характерно для клієнтського браузера. Це революційне
рішення, яке дозволило розробникам створювати повноцінні додатки для
серверів з використанням однієї мови програмування - JavaScript.
Node.js побудований на асинхронному програмному моделі, що
дозволяє обробляти багато запитів одночасно без блокування основного
потоку виконання. Це робить його ідеальним для розробки
високопродуктивних, масштабованих додатків. Також поставляється з
пакетним менеджером npm, який є одним з найбільших репозиторіїв
бібліотек та фреймворків у світі програмування. За допомогою npm
розробники можуть легко встановлювати, оновлювати та керувати
залежностями своїх проектів. Node.js має активну та велику спільноту
розробників, яка надає безліч корисних бібліотек та модулів для широкого
спектра завдань [8]. Це допомагає розробникам швидко розвивати додатки та
вирішувати складні завдання. Також підтримується на різних операційних
системах, таких як Windows, macOS, і Linux, що дозволяє розробникам
створювати додатки, які можуть працювати на різних серверних платформах.
Широко використовується для розробки веб-серверів, мережевих додатків,
API, мікросервісів та багатьох інших типів серверних додатків. Він є
27
потужним інструментом для сучасної веб-розробки та має значний вплив на
індустрію програмного забезпечення.
На рисунку 2.1 зображено кілька прикладів сфер, де Node.js
використовується як популярна платформа для розробки.
Рисунок 2.1 - Приклади сфер, де Node.js використовується як
платформа для розробки.
Зображення ілюструє різноманітні можливості використання Node.js у
сфері розробки програмного забезпечення та демонструє його
універсальність для створення різних типів додатків і сервісів.
Web Applications - Node.js велика популярність для розробки веб-
додатків та веб-серверів. Він може використовуватися для створення як
невеликих, так і великих масштабованих веб-додатків. Node.js часто
використовується для створення додатків, які вимагають обміну даними в
реальному часі, таких як чати, ігри або системи сповіщень. Добре підходить
для створення серверів API, які надають доступ до даних та
функціональності іншим додаткам [9]. В середовищі мікросервісної
архітектури Node.js використовується для розробки окремих компонентів
додатку, які взаємодіють між собою. Використовується для створення
28
програмного забезпечення для пристроїв Інтернету речей, які можуть
взаємодіяти з мережею та іншими пристроями.
Node.js є дуже популярною технологією в розробці програмного
забезпечення, і її використовують багато відомих компаній і стартапів. Це
свідчить про широкий спектр можливостей та переваг, які надає Node.js для
створення високоефективних та масштабованих додатків. Netflix
використовує Node.js для розробки своєї клієнтської сторони та інших
частин. Uber використовує для побудови своєї веб-інфраструктури,
включаючи веб-сайт та панель керування водіями. PayPal використовує для
побудови різних додатків, включаючи платіжні системи та платформу для
розробників. LinkedIn використовує для побудови внутрішніх та зовнішніх
додатків, а також для веб-інфраструктури.
Додатково, Node.js також є популярним в середовищі стартапів і
розробників через свою швидкість, асинхронну природу та велику кількість
доступних бібліотек та модулів. Ця технологія підходить для розробки різних
типів додатків, від веб-сайтів до мікросервісів і додатків в реальному часі.
Таким чином, Node.js є перспективною та популярним вибором для розробки
програмного забезпечення в різних галузях.
Java - це високорівнева, об'єктно-орієнтована мова програмування, яка
відома своєю мобільністю і спрощеною системою управління пам'яттю. Вона
була розроблена компанією Sun Microsystems (зараз власністю Oracle
Corporation) і вперше випущена у 1995 році [10]. Однією з найважливіших
особливостей Java є її здатність працювати на різних операційних системах
без змін у вихідному коді. Це досягається завдяки використанню віртуальної
машини Java (JVM), яка інтерпретує та виконує Java-код на різних
платформах. Вона спроектована з урахуванням об'єктно-орієнтованого
програмування (ООП), що дозволяє розробникам створювати програми,
орієнтовані на об'єкти, які мають властивості та методи. Включає вбудовані
механізми безпеки, що допомагають захищати програми від потенційних
загроз, таких як віруси та зловмисний код. Java підтримує розробку
29
мережевих додатків і додатків з використанням різних мережевих
протоколів. Має велику кількість бібліотек, фреймворків і інструментів, що
спрощують розробку програм і підвищують продуктивність розробників.
Застосовується в широкому спектрі галузей, включаючи розробку веб-
додатків, мобільних додатків, вбудованих систем, ігор, фінансових додатків
та багато інших.
Java є однією з найпопулярніших мов програмування у світі та
використовується в багатьох великих проектах і корпоративних додатках.
Вона відома своєю стабільністю, надійністю і широким спектром
можливостей, що робить її популярним вибором для багатьох розробників.
Мова Java хороша тим, що один і той же написаний код буде
працювати на Windows, на Linux та MacOs. Рисунок 2.2 ілюструє JVM (Java
Virtual Machine) - віртуальну машину Java. JVM є ключовою частиною
середовища виконання Java і використовується для запуску Java-програм на
різних платформах.
Рисунок 2.2. - Java Virtual Machine
На зображенні видно основні компоненти JVM. Class Loader
(Завантажувач класів) - це компонент відповідає за завантаження байт-коду
Java-класів під час виконання програми [11].
Execution Engine (Виконавчий модуль) - виконавчий модуль відповідає
за виконання Java-коду, який був перетворений в байт-код JVM. Він містить
30
компоненти, такі як JIT-компілятор (Just-In-Time Compiler), який перетворює
байт-код в машинний код для конкретної платформи.
Runtime Data Area (Область даних в часі виконання) - ця область
включає в себе різні частини пам'яті, такі як Heap (куча), Method Area
(область методів), Stack (стек) та інші, і використовується для зберігання
даних та виконання коду в процесі виконання програми.
Native Method Interface (Інтерфейс до нативних методів) - це інтерфейс
дозволяє викликати нативні методи, написані на мовах програмування, які не
є Java (наприклад, C/C++) [12].
Native Method Libraries (Бібліотеки нативних методів) - в цій частині
знаходяться бібліотеки, які містять нативні методи, які можуть бути
викликані з Java-коду.
JVM грає важливу роль у виконанні Java-додатків, вона перетворює
Java-код у машинний код, який може бути виконаний на конкретній
платформі, забезпечуючи таким чином переносимість Java-програм між
різними операційними системами і апаратними платформами.
C# - це сучасна, високорівнева, об'єктно-орієнтована мова
програмування, розроблена компанією Microsoft. Вона широко
використовується для розробки різних типів програмних додатків,
включаючи програми для робочого столу, веб-додатки, мобільні додатки і
створення ігор з використанням ігрового рушія Unity.
Більшість програм і сервісів для вебу, пов'язаних із продуктами
Microsoft, написані на C#. Відомий веб-сайт stackoverflow.com створений за
допомогою C# і фреймворку .NET. Подібним способом були розроблені веб-
сайти Microsoft і Dell.
C# також використовується для розробки десктопних додатків для
операційної системи Windows. Наприклад, Microsoft Visual Studio і Paint.NET
розроблені з використанням C#. Платформа .NET, зокрема Windows Forms,
лежить в основі програм як Skype, Microsoft Office та Photoshop [13].
31
Розробники в галузі ігрових розробок знають про рушій Unity, який
використовується для створення 2D та 3D комп'ютерних ігор. Програмування
в Unity дозволяє зосередитися на контенті гри, не поглиблюючись у багато
технічних деталей, і в основному виконується мовою C#. Ігри, такі як Rust,
Hearthstone, Fall Guys та інші, створені в Unity з використанням C#. Крім
того, Unity дозволяє взаємодіяти з DirectX - набором компонентів для
графіки та звуку в іграх.
C# також застосовується для розробки мобільних додатків. Існують
платформи, такі як Xamarin, які дозволяють запускати код C# на різних
операційних системах, включаючи мобільні платформи Android і iOS.
У 2018 році до середовища програмування .NET була додана бібліотека
ML.NET, яка дозволяє використовувати моделі машинного навчання. Хоча
ця бібліотека може мати менше документації, ніж бібліотеки для мови
Python, вона є зручною та використовується в реальних проектах.
Ключові особливості та концепції C# полягають у наступному.
Об'єктно-орієнтований підхід: C# - це об'єктно-орієнтована мова
програмування, яка акцентує увагу на визначенні та використанні об'єктів
для моделювання та розв'язання завдань.
.NET Framework і .NET Core: C# тісно пов'язаний з екосистемою .NET,
яка надає великий набір бібліотек і фреймворків для створення різних типів
додатків. В останні роки .NET Core перетворився на .NET 5 і більш пізні
версії, об'єднуючи платформу .NET для різних видів додатків.
Синтаксис: Синтаксис C# схожий на C і C++, і його легко читати та
писати. Для визначення блоків коду використовуються фігурні дужки {}, і це
статично типізована мова, що означає, що потрібно оголошувати типи даних
змінних.
Збірка сміття: C# включає автоматичне управління пам'яттю збирачем
сміття, що допомагає управляти ресурсами пам'яті та зменшує ймовірність
витоку пам'яті.
32
Властивості та події: C# надає чистий спосіб визначення властивостей
(геттерів та сеттерів) для членів класу та подій для обробки асинхронної
взаємодії між об'єктами.
LINQ (Language Integrated Query): LINQ - це функціональність в C#,
яка дозволяє виконувати запити до даних в більш SQL-подібному стилі. Він
особливо корисний для роботи з базами даних і колекціями об'єктів.
Асинхронне програмування: C# містить ключові слова async і await, що
полегшують написання асинхронного коду, що є важливим для реагуючих та
масштабованих додатків [14].
Обробка винятків: C# має надійну підтримку обробки винятків, що
дозволяє розробникам обробляти помилки гідно і відновлюватися після них.
PHP - це скриптова мова програмування загального призначення, яка
використовується для створення веб-додатків. На даний час він
підтримується майже всіма хостинг-компаніями і є одним із лідерів серед
мов програмування, які застосовуються для написання динамічних веб-
сторінок. Ця мова також підтримується нашими серверами хостингу.
PHP - це мова програмування з відкритим вихідним кодом, розроблена
для вебу і може бути впроваджена в HTML код. PHP простий для навчання.
Це мова програмування, яка заохочує живий та динамічний веб.
Статичні сторінки можуть бути нудними, таємними та нецікавими. PHP
відкриває шлях до оновлення та зміни інформації на веб-сайті. Наприклад,
можна оновлювати прогноз погоди або показувати поточний курс валют на
сьогодні. Чистий HTML не дозволяє робити такі речі, але PHP надає цю
можливість. Він дозволяє виконувати скрипти - спеціальні програми на
серверному боці, які запускаються відповідно до запитів від браузера
користувача. Тобто, PHP є інтерпретатором сценаріїв, а цей процес
називається інтерпретацією.
PHP дозволяє створювати професійні програми та веб-сайти, при цьому
ефективно використовувати час. PHP постійно оновлюється і залишається
33
однією з найбільш популярних мов програмування веб-розробникам численні
переваги [15].
Популярність мови PHP обумовлена її численними перевагами. Вона
дозволяє налаштовувати та використовувати на різних операційних системах
та веб-серверах. Легка інтеграція з базами даних, особливо з MySQL, робить
її важливим інструментом для створення веб-додатків.
PHP має велику документацію, що робить розробку та пошук
кваліфікованих фахівців значно простішими завданнями. Це сприяє
швидкому вирішенню проблем та підтримці проектів.
Мова має синтаксис, який ґрунтується на мовах C, Java та Perl, що
робить її зрозумілою для розробників, які вже мають досвід в інших мовах
програмування. Також дозволяє створювати веб-додатки, які здатні
витримувати великий потік трафіку. Це робить її відмінним вибором для
побудови високонавантажених систем та веб-сайтів.
Цією мовою розробляють популярні системи управління контентом
(CMS), і існують безліч популярних фреймворків, створених на основі цієї
мови. Тому фахівці з PHP матимуть високий попит ще протягом тривалого
часу, оскільки ця мова має чудові перспективи та багато напрямків для
розвитку.
Python - це високорівнева мова програмування, яка володіє другим
місцем за популярністю у світі. Вона використовується для створення веб-
додатків, програмного забезпечення та машинного навчання. Python
знаходить застосування в різних компаніях, включаючи Google, Instagram,
Facebook, IBM, NASA, Dropbox, Netflix та інші [16]. Розробники високо
цінують цю мову програмування за її простоту у вивченні, ефективність та
можливість використання на різних платформах.
Програмне забезпечення, написане на Python, оформлене у вигляді
моделей, які можуть бути зібрані у пакети. Тип та структуру кожного об’єкта
можна запитати під час виконання програми. Для кожного з об’єктів
доступна інформація про його внутрішню структуру. Крім того, Python має
34
логічний синтаксис, завдяки чому вихідний код легко читати та розуміти.
Дозволяє адаптувати високорівневу логіку та розширювати складні
застосунки, коли це необхідно. Розробка на Python часто прискорюється,
оскільки він дозволяє працювати швидше, ніж багато інших мов
програмування. Ця мова є інтерпретованою мовою програмування, що
означає, що код можна написати у будь-якому текстовому файлі на будь-якій
платформі та виконати його без необхідності компіляції.
Проте є кілька особливостей, які можна віднести до недоліків. Python,
хоч і є універсальною мовою, часто працює повільніше порівняно з іншими
мовами програмування.
Для роботи з Python може знадобитися більше ресурсів, особливо при
обробці великих обсягів даних. Також іноді потребує використання
системних бібліотек, що може обмежити переносимість додатків між різними
платформами.
Не зважаючи на ці недоліки, Python залишається дуже популярною та
потужною мовою програмування з великою кількістю варіантів розвитку та
широким спектром застосувань.
Бізнес-процеси - це послідовність дій та операцій, які виконуються в
рамках організації з метою досягнення певних бізнес-цілей. Вони можуть
бути автоматизованими або виконуватися вручну, та охоплюють всі аспекти
діяльності підприємства, від створення продукту або надання послуг до їх
постачання клієнтам.
Основні характеристики бізнес-процесів включають послідовність
кроків, де кожен бізнес-процес має конкретну послідовність дій, які повинні
бути виконані в певному порядку для досягнення певної цілі.
Вхідні та вихідні дані, де кожен процес приймає вхідні дані, обробляє
їх і генерує вихідні дані. Вхідні дані можуть бути інформацією, ресурсами
або матеріалами.
Ресурси та ролі для виконання процесів потрібні певні ресурси,
включаючи людей, технології, обладнання та інше. Кожному учаснику
35
процесу призначаються певні ролі та обов'язки, приклад такої роботи
зображено на рисунку 2.3.
Рисунок 2.3 - Приклад ролей та їх обов'язків
Керованість і моніторинг, де бізнес-процеси підлягають керуванню та
моніторингу. Це допомагає виявити та виправити проблеми в робочому
процесі, а також забезпечити виконання вимог якості та ефективності.
Бізнес-процеси потрібні з наступних причин:
1. Оптимізація діяльності. Вони допомагають підприємствам
оптимізувати свою діяльність, видаляючи зайві кроки та мінімізуючи
витрати;
36
2. Підвищення продуктивності. Бізнес-процеси сприяють збільшенню
продуктивності шляхом автоматизації рутинних завдань та спрощення
управління ресурсами;
3. Забезпечення якості. Вони дозволяють встановлювати стандарти та
контролювати якість виробництва та надання послуг;
4. Покращення клієнтського обслуговування. Впорядковані бізнес-
процеси допомагають підприємствам забезпечувати краще обслуговування
клієнтів та задовольняти їхні потреби.
5. Адаптація до змін. Бізнес-процеси дозволяють підприємствам бути
більш гнучкими та адаптуватися до змін на ринку та внутрішнього
середовища.
В цілому, бізнес-процеси є важливою складовою успіху організації,
оскільки вони допомагають раціоналізувати діяльність та досягати бізнес-
цілей ефективніше.
BPM (Business Process Management) є стратегічним підходом до
управління операціями та процесами в організації. Вона містить планування,
моделювання, автоматизацію, виконання, моніторинг, оптимізацію та аналіз
бізнес-процесів з метою досягнення ефективності, покращення
продуктивності та забезпечення високої якості виробництва або надання
послуг.
BPM використовується в різних галузях та видами організацій,
включаючи виробництво, фінанси, охорону здоров'я, громадський сектор та
багато інших [17]. Вона допомагає організаціям бути більш
конкурентоспроможними та ефективними в сучасному бізнес-середовищі.
Однією з популярних систем BPM є Camunda .
Camunda - це відкрита платформа для автоматизації бізнес-процесів.
Вона надає можливість моделювання, виконання та моніторингу бізнес-
процесів, що дозволяє організаціям покращити ефективність своєї діяльності.
Ось деякі ключові характеристики та переваги Camunda:
37
Відкритий код: Camunda - це проект з відкритим вихідним кодом, що
дозволяє користувачам безкоштовно використовувати та модифікувати
платформу під свої потреби.
Моделювання процесів: Camunda надає інструменти для моделювання
бізнес-процесів, включаючи графічний інтерфейс, що допомагає створити
візуальне представлення процесів.
Виконання процесів: Після створення моделі процесу, Camunda
дозволяє автоматично виконувати цей процес, спрощуючи автоматизацію
бізнес-операцій.
Моніторинг і аналітика: Платформа надає інструменти для моніторингу
виконання процесів та збору даних для аналізу продуктивності.
Інтеграція: Camunda може легко інтегруватися з іншими системами,
включаючи системи управління завданнями (Task Management) та системи
управління правами доступу.
Розширені можливості: Платформа підтримує розширені можливості,
такі як правила бізнес-процесу, виконання скриптів, автоматичні завдання та
інше.
Спільнота користувачів і підтримка: Camunda має активну спільноту
користувачів і комерційну підтримку, що допомагає користувачам
отримувати допомогу та рішення на питання.
Camunda - це відкрита платформа для моделювання бізнес-процесів,
яка розроблена мовою програмування Java і використовує Java для розробки.
Вона представляє собою набір бібліотек, які дозволяють виконувати описані
процеси [18]. Для інтеграції Camunda в проект, досить додати кілька
залежностей, приклад роботи зображений на рисунку 2.4.
38
Рисунок 2.4 - Робоче вікно в Camunda Modeler
Для зберігання процесів можна вибрати в пам'яті або постійну базу
даних - залежно від завдань.
Такі системи, як Camunda для побудови бізнес-процесів допомагають
підприємствам раціоналізувати та оптимізувати свою діяльність,
полегшуючи автоматизацію та керування бізнес-процесами. Camunda є
однією з багатьох платформ, яка пропонує ці можливості та здатна
задовольнити потреби різних видів організацій.
Зв'язок з іншими системами є ключовим елементом сучасного
програмного забезпечення, дозволяючи обмінюватися даними та
інформацією між різними додатками та платформами. Для цього
використовуються різноманітні протоколи комунікації, такі як HTTP,
MQTT, Kafka та Webhooks.
HTTP (Hypertext Transfer Protocol) - це один з найпоширеніших
протоколів передачі даних в Інтернеті. Він використовується для передачі
даних між веб-серверами та веб-клієнтами, дозволяючи обмінюватися
39
різноманітною інформацією, такою як HTML-сторінки, зображення, відео та
інші мультимедійні файли. Концепцію HTTP запиту та відповіді зображено
на рисунку 2.5.
Рисунок 2.5 - Концепція HTTP запиту та відповіді
На зображенні можна побачити наступні ключові елементи.
HTTP Request - це повідомлення, яке відправляється веб-клієнтом
(наприклад, браузером) до веб-сервера для запиту веб-ресурсу. Запит містить
метод (наприклад, GET або POST), URL-адресу ресурсу та інші параметри.
HTTP Response - це повідомлення, яке відправляється веб-сервером
відповідь на запит. Відповідь містить статусний код, який показує, чи був
запит успішно оброблений, а також дані, які передаються клієнту.
HTTP використовується для взаємодії між веб-клієнтом та веб-
сервером і є основним протоколом для доступу до веб-ресурсів в Інтернеті
[19].
MQTT (Message Queuing Telemetry Transport) - це легкий протокол
комунікації для передачі повідомлень між пристроями через мережу. Він
часто використовується в Інтернеті речей (IoT) для сполучення пристроїв та
забезпечення ефективної передачі даних у реальному часі з мінімальними
витратами на пропускну здатність та енергію. Концепцію протоколу MQTT
зображено на рисунку 2.6.
40
Рисунок 2.6 - Концепція протоколу MQTT
На зображенні можна побачити такі ключові елементи, як MQTT
Broker - це центральний елемент в системі MQTT, який відповідає за
приймання, маршрутизацію та доставку повідомлень між відправниками та
одержувачами. Брокер може забезпечувати різні рівні якості обслуговування
(QoS) та забезпечувати надійну доставку повідомлень.
Publisher - це пристрій або додаток, який публікує (відправляє)
повідомлення до брокера MQTT. Повідомлення можуть містити дані про стан
пристрою або іншу інформацію.
Subscriber - це пристрій або додаток, який підписується на отримання
повідомлень з брокера MQTT. Підписники отримують повідомлення, які
цікавлять їх, і обробляють їхні дані.
Topic - це повідомлення в MQTT розсилаються до певних тем. Теми
служать для категоризації повідомлень і дозволяють підписникам
підписуватися на конкретні теми, які їх цікавлять.
QoS - MQTT підтримує різні рівні якості обслуговування, включаючи
найвищий рівень забезпечення доставки повідомлень.
41
MQTT є популярним протоколом для використання в IoT-системах, де
низька пропускна здатність мережі та обмежені ресурси пристроїв є
важливими. Він дозволяє ефективно обмінюватися даними між пристроями
та додатками у реальному часі.
Apache Kafka - це розподілена платформа обробки потокових даних,
яка дозволяє публікувати та підписуватися на потокові дані. Вона широко
використовується для побудови розподілених систем обробки даних та
аналізу потокових даних у реальному часі.
Концепцію "системи обміну повідомленнями типу "point-to-point"
(одна до одної)" можна розглянути на зображені 2.7.
Рисунок 2.7 - Концепція "point-to-point"
Ця система використовується для передачі повідомлень між різними
компонентами або системами. Sender - це компонент або система, яка ініціює
відправку повідомлення. Receiver - це компонент або система, яка призначена
для отримання і обробки повідомлення від відправника. Message Broker - це
посередник, який допомагає керувати обміном повідомленнями між
відправником та одержувачем. Він може забезпечувати маршрутизацію,
зберігання та інші функції для ефективного обміну повідомленнями. Queue-
це механізм, за допомогою якого система обміну повідомленнями зберігає
повідомлення, які очікують обробки. Одержувач отримує повідомлення з
черги в послідовному порядку.
42
Системи обміну повідомленнями типу "point-to-point" дозволяють
ефективно передавати дані від відправника до одержувача без необхідності
безпосереднього з'єднання між ними. Це допомагає розподіленим системам
та компонентам взаємодіяти між собою та обмінюватися даними в надійний
спосіб.
Webhooks - це механізм, який дозволяє автоматично надсилати
повідомлення або повідомлення з одного додатка в інший. Вони
використовуються для сповіщення про події та сповіщення про зміни в
реальному часі, дозволяючи додаткам реагувати на події в інших системах.
Використання цих протоколів комунікації дозволяє розробникам
побудувати потужні та ефективні системи, які можуть взаємодіяти з іншими
додатками та платформами, обмінюючись даними та спільно працюючи для
досягнення спільних бізнес-цілей [20].
Рисунок 2.8 демонструє концепцію використання webhooks. Webhooks
є механізмом для автоматичного обміну даними між додатками та
платформами через HTTP-запити.
Рисунок 2.8 - Концепція використання webhooks
43
На зображенні можна побачити джерело події (Event Source). Це
додаток або сервіс, який виробляє події або сповіщення про певні події.
Наприклад, це може бути соціальна мережа, месенджер, веб-сервіс або будь-
який інший додаток.
Webhook - це URL-адреса, яку джерело події використовує для
надсилання HTTP-запитів з даними про подію до іншого додатку або служби.
Отримувач події (Event Receiver) - це додаток або служба, яка
підписалася на отримання подій через webhooks. Вона очікує на HTTP-
запити від джерела події і обробляє отримані дані.
HTTP-запити - це джерело події відправляє HTTP-запити (зазвичай
POST-запити) на URL-адресу webhook, передаючи дані про подію у вигляді
JSON або іншого формату.
Дії та обробка подій - це отримувач події обробляє отримані HTTP-
запити, виконує певні дії на основі отриманих даних та може відповісти на
запит підтвердженням або іншими діями.
Webhooks дозволяють додаткам реагувати на події в режимі реального
часу та автоматично виконувати певні дії при спостереженні за змінами в
інших системах. Вони широко використовуються для інтеграції додатків,
автоматичного сповіщення про події та багатьох інших сценаріїв.
2.2 Вибір технологій
Детальний аналіз і вибір технологій дозволяють забезпечити
відповідність системи вимогам проекту. Це означає, що вибрані технології
повинні відповідати функціональним та нефункціональним вимогам,
включаючи продуктивність, безпеку, масштабованість та інші. Вибір
правильних технологій може суттєво покращити продуктивність та
ефективність розробки та експлуатації системи. Наприклад, використання
відповідних баз даних або мов програмування може допомогти підвищити
швидкість обробки даних.
44
Безпека є важливим аспектом будь-якої системи. Вибір правильних
технологій та інструментів для захисту даних та інфраструктури може
допомогти уникнути потенційних загроз безпеці.
Вибір правильної мови програмування для розробки сервісу є
ключовим завданням, оскільки мова програмування впливає на всі аспекти
розробки та функціонування програмного продукту. Різні мови
програмування мають різну продуктивність та швидкість виконання.
Важливо вибирати мову, яка забезпечує потрібну продуктивність для
проекту. Наприклад, мови, такі як C++ або Rust, можуть забезпечити високу
продуктивність, тоді як Python чи Ruby можуть бути зручні для швидкого
прототипування.
Node.js може підійти для розробки системи автоматизації перевірки
ризиків при роботі з новими клієнтами компаній з ряду причин. Наприклад,
Node.js побудована на асинхронній архітектурі, що робить її досить швидкою
та ефективною для обробки багатьох одночасних запитів. Це особливо
важливо в сучасних веб-сервісах, де може бути багато запитів від
користувачів. Також, Node.js використовує JavaScript, що є однією з
найпоширеніших та найбільш популярних мов програмування веб-розробки.
Це дозволяє використовувати одну мову як на серверній, так і на клієнтській
стороні, що спрощує розробку та підтримку.
Однак важливо врахувати, що вибір Node.js не підходить для всіх видів
проектів. Якщо потрібно використовувати інші мови програмування для
специфічних задач (наприклад, обчислення великих обсягів даних на мові
C++ або розробка мобільних додатків на Java або Kotlin), то Node.js може не
бути найкращим вибором для цих частин системи.
Загальною перевагою Node.js є можливість швидко розробляти веб-
сервери та додатки з високою продуктивністю та масштабованістю, що
робить її популярним вибором для багатьох веб-сервісів та додатків.
Node.js може є кращім вибором для розробки систем автоматизації
перевірки ризиків, особливо якщо цей процес вимагає високої
45
продуктивності, масштабованості та живого зв'язку з користувачами. Однак
важливо також враховувати конкретні вимоги проекту та особливості завдань
перед прийняттям остаточного рішення щодо вибору мови програмування.
Використання фреймворку в Node.js має кілька важливих переваг, які
сприяють розробці програмного забезпечення більш ефективно та
організовано. Фреймворки надають готову архітектуру та структуру для
проекту. Це допомагає розробникам уникнути витрати часу на створення
базових компонентів, таких як маршрутизація, обробка запитів та
автентифікація. В результаті, розробка програмного забезпечення може бути
значно швидшою.
Більшість фреймворків мають розширюваність, що дозволяє додавати
додаткову функціональність через сторонні модулі та плагіни. Це важливо,
коли проект зростає та вимагає нових функцій.
Популярні фреймворки мають активні та великі спільноти розробників,
які надають підтримку та допомогу. Розробник зможе знайти відповіді на
питання та рішення на велику кількість задач, завдяки спільноті.
Nest.js - це фреймворк для розробки серверних додатків на мові
TypeScript або JavaScript [21]. Він базується на архітектурному патерні
"Dependency Injection" і використовує модульну структуру для створення
додатків. Nest.js спроектований так, щоб забезпечити ефективну та модульну
розробку, а також підтримує багато різних функціональностей, таких як
маршрутизація, обробка запитів, бази даних та багато іншого.
Nest.js використовує TypeScript за замовчуванням. TypeScript надає
типізацію та переваги статичної перевірки типів, що допомагає уникнути
помилок на ранніх етапах розробки та забезпечити безпеку даних.
Даний фреймворк сприяє створенню додатку з використанням
модульної структури. Це полегшує організацію та розширення коду, що
особливо корисно для великих та складних додатків.
46
Nest.js підтримує різні системи управління базами даних, такі як
MySQL, PostgreSQL, MongoDB та інші. Це дозволяє легко зберігати та
обробляти дані.
Загалом, Nest.js є відмінним вибором для розробки системи
автоматизації перевірки ризиків завдяки своїм перевагам у безпеці,
модульності, підтримці баз даних та WebSocket, а також великій спільноті та
підтримці TypeScript.
Вибір типу бази даних є важливим завданням при розробці будь-якої
інформаційної системи чи додатку. Вибір бази даних впливає на
продуктивність, масштабованість, безпеку та зручність роботи з даними.
Існує багато різних типів баз даних, кожен з яких призначений для
конкретних вимог та сценаріїв використання.
Реляційна база даних (RDBMS) - це тип бази даних, яка використовує
реляційну модель даних для зберігання та управління інформацією. У
реляційних базах даних дані представлені у вигляді таблиць, де кожен рядок
таблиці представляє окремий запис, а кожна колонка таблиці визначає
конкретний атрибут або поле цього запису. Реляційні бази даних дозволяють
встановлювати зв'язки між таблицями, що дозволяє ефективно управляти та
взаємодіяти з даними.
NoSQL (Not Only SQL) бази даних - це різновиди баз даних, які
відрізняються від класичних реляційних баз даних (RDBMS) за своєю
структурою та способом організації даних. NoSQL бази даних створені для
роботи з неструктурованими або поліструктурованими даними, які можуть
бути важко або навіть неможливо представити в табличній формі, як це
робиться в реляційних базах даних.
Графова база даних - це тип бази даних, спеціально розроблений для
зберігання та управління даними у вигляді графа. Графи використовуються
для представлення інформації у вигляді вузлів (вершин) та зв'язків (ребер),
що відображають взаємозв'язки між даними. Графові бази даних особливо
47
корисні для моделювання та аналізу даних, де важливі саме зв'язки та
залежності між об'єктами.
Вибір між реляційною та NoSQL базою даних залежить від конкретних
вимог та характеру сервісу для автоматизації перевірки ризиків при роботі з
новими клієнтами компаній.
Якщо дані мають чітку структуру та можуть бути легко організовані у
табличну форму, то реляційна база даних може бути оптимальним вибором.
Вона дозволяє зберігати дані у вигляді таблиць з чітко визначеними
стовпцями та типами даних.
Реляційні бази даних добре підходять для виконання складних SQL-
запитів та аналітики даних. Якщо сервіс вимагає складних запитів до даних
або статистичного аналізу, то реляційна база може бути корисною.
Реляційні бази даних надають гарантії ACID, що забезпечує надійність
операцій з даними. Це важливо, коли інформація повинна бути відповідною
та не підлягати ризику втрати або порушення цілісності.
Однак важливо також враховувати, що реляційні бази даних можуть
бути менш гнучкими у відношенні до розширення та масштабування, і вони
не завжди є найкращим вибором для проектів з великим обсягом даних або з
неструктурованими даними.
Обираючи реляційну базу даних для сервісу автоматизації перевірки
ризиків при роботі з новими клієнтами компаній, цей вибір є обґрунтованим
завдяки її здатності зберігати структуровані дані та управляти складними
зв'язками між ними, що дозволить ефективно моделювати та аналізувати
інформацію. Реляційні бази даних також надають можливість виконувати
складні запити та аналітику даних, що корисно для прийняття рішень та
контролю доступу до інформації, а також забезпечують надійність операцій
та дотримання стандартів безпеки.
Використання HTTP (Hypertext Transfer Protocol) для розробки API має
декілька обґрунтованих переваг. HTTP є універсальним протоколом, який
підтримується практично усіма сучасними платформами та мовами
48
програмування. Це означає, що даний API може взаємодіяти з різними
клієнтами та серверами, незалежно від їхньої технічної реалізації.
HTTP забезпечує простий та легко зрозумілий спосіб взаємодії між
клієнтом та сервером за допомогою запитів (HTTP-запити) та відповідей
(HTTP-відповіді). Це полегшує розробку та тестування API.
Також, використання даного протоколу забезпечує шифрування даних
між клієнтом та сервером, що важливо для забезпечення конфіденційності та
безпеки даних за допомогою HTTPS.
Реалізація Webhook за допомогою HTTP - це механізм, який дозволяє
серверу надсилати автоматичні сповіщення або повідомлення до іншого
сервера або клієнта в реальному часі. Webhook - це URL-адреса, яку клієнт
або інший сервер реєструє на сервері-джерелі, і коли стає доступними нові
дані або події, сервер-джерело відправляє HTTP-запит на вказаний URL-
адресу.
Можливість асинхронної комунікації зі сторонніми сервісами через
webhooks має кілька важливих переваг:
1. Webhooks дозволяють системам спілкуватися асинхронно, що означає,
що вони можуть надсилати та отримувати дані без очікування відповіді
в реальному часі. Це зменшує затримки та підвищує продуктивність;
2. Webhooks дозволяють системам реагувати на події миттєво, без
необхідності постійно опитувати сторонні сервіси на наявність нових
даних чи подій. Це особливо корисно для систем, де важливо вчасно
реагувати на події;
3. Замість постійного опитування сторонніх сервісів, що може призвести
до надмірного навантаження на сервери, webhooks дозволяють
стороннім системам сповіщати лише тоді, коли є актуальні дані чи
події для обробки. Це зменшує навантаження на сервери та ресурси;
4. Webhooks дозволяють легко інтегрувати систему з іншими сторонніми
сервісами, що надає можливість обміну даними та подіями між різними
системами без надмірного зусилля.
49
Усі ці переваги роблять webhooks важливим інструментом для
побудови асинхронної та ефективної комунікації між різними системами та
сервісами, особливо в умовах сучасного світу, де важливо бути
підключеними до реального часу та реагувати на події негайно.
HTTP API може бути документованим за допомогою стандартних
методів, таких як Swagger або OpenAPI, що полегшує розробку та
використання API.
Swagger - це набір інструментів для документації та розробки веб-
сервісів. Основний компонент Swagger - це специфікація OpenAPI, яка
визначає стандарти для опису RESTful веб-сервісів. OpenAPI дозволяє
описати структуру, доступні методи, параметри, відповіді та інші аспекти
веб-сервісу.
Swagger допомагає автоматично генерувати документацію для API на
основі специфікації OpenAPI. Це полегшує розробникам та користувачам API
зрозуміти, як використовувати сервіс. Swagger також надає інтерактивну
консоль, яка дозволяє розробникам та тестувальникам взаємодіяти з API,
виконувати запити та перевіряти відповіді безпосередньо в документації.
Swagger сприяє створенню структурованих та добре документованих
веб-сервісів, що спрощує розробку та інтеграцію з іншими системами. Він є
популярним інструментом серед розробників для покращення співпраці та
взаємодії з API.
Використання додаткового програмного забезпечення для
автоматизації бізнес-процесів має ряд переваг і може бути виправданим у
багатьох випадках. ПЗ для автоматизації бізнес-процесів дозволяє
виконувати рутинні та повторювані завдання автоматично, що сприяє
підвищенню продуктивності співробітників та скороченню часу на
виконання завдань.
Автоматизація допомагає уникнути помилок, які можуть виникнути
при ручному виконанні завдань. ПЗ може гарантувати послідовність та
точність процесів. Також автоматизація може допомогти зменшити ризик
50
виникнення помилок та недоліків у бізнес-процесах, що може призвести до
втрат.
Використання ПЗ для автоматизації бізнес-процесів допомагає
компаніям підвищити ефективність, знизити витрати та бути більш
конкурентоспроможними на ринку.
Використання Camunda в бізнесі може бути виправданим з кількох
причин:
1. Camunda надає інструменти для моделювання бізнес-процесів за
допомогою стандарту BPMN (Business Process Model and Notation). Це
допомагає компаніям візуалізувати та розуміти їхні бізнес-процеси;
2. Camunda надає можливість автоматизувати виконання бізнес-процесів.
Завдяки правилам та послідовностям, визначеним в BPMN, процеси
виконуються автоматично;
3. Camunda дозволяє вести моніторинг виконання бізнес-процесів та
аналізувати їх ефективність. Це допомагає управлінню приймати
інформовані рішення для оптимізації процесів;
4. Camunda є відкритим програмним забезпеченням та надає API для
інтеграції та розширення. Розробники можуть створювати власні
рішення на основі Camunda.
Використання Camunda допомагає компаніям покращити управління
бізнес-процесами, зменшити помилки, підвищити продуктивність та
оптимізувати внутрішні процеси. Це особливо важливо в умовах сучасного
бізнес-середовища, де ефективність та спільність грають ключову роль.
Важливість перевірки особистості та документів у сучасному світі
зростає. Деякі сфери, такі як фінанси, медицина, охорона здоров'я та інші,
вимагають відповідності вимогам щодо перевірки клієнтів. Розробка системи
автоматизації перевірки ризиків при роботі з новими клієнтами повинна
також включати в себе перевірку клієнта та його документів.
Сервіси, як Persona, допомагають виявляти та запобігати шахрайству та
обману, зменшуючи ризики втрат і негативного впливу на компанію.
51
Забезпечення перевірки особистості та документів допомагає покращити
довіру клієнтів до компанії. Клієнти відчувають, що їх дані та операції в
безпеці.
Впровадження сервісу, як Persona, дозволяє клієнтам легко та зручно
проходити процес верифікації особистості та надавати документи, не
виходячи з дому.
LexisNexis - це провідний постачальник послуг інформаційного пошуку
та аналізу даних, спеціалізований на наданні доступу до розширених джерел
інформації та юридичних документів. LexisNexis надає доступ до
розширених джерел інформації, включаючи дані про особи, компанії,
нерухомість та інше. Це допомагає підвищити точність процесу ідентифікації
клієнтів.
Також даний сервіс надає інструменти для моніторингу клієнтів та
підприємств на предмет можливих фінансових, репутаційних та правових
ризиків. Це допомагає компаніям залишати себе в безпеці від потенційних
проблем.
Використання LexisNexis допомагає забезпечити відповідність з
законодавством щодо перевірки клієнтів та збереження даних. Це особливо
важливо в регульованих секторах, таких як фінанси та охорона здоров'я.
Використання розширених джерел інформації допомагає виявляти
потенційних шахраїв та обманників, що може запобігти втратам компаній.
Використання LexisNexis для перевірки клієнтів допоможе компаніям
забезпечити безпеку, точність та відповідність у процесі взаємодії з
клієнтами, особливо у галузях, де важливий високий ступінь довіри та
безпеки.
Перевірка IP-адрес клієнтів має важливе значення з точки зору безпеки
та захисту інформації в онлайн-середовищі. Це дозволяє визначити
місцеперебування користувача та ідентифікувати його. Це може бути
корисно при здійсненні аутентифікації та визначенні, чи має користувач
доступ до конкретних ресурсів.
52
У деяких випадках важливо визначити, звідки саме користувачі
звертаються до веб-ресурсу або послуги. Це може впливати на доступ до
вмісту, розташування серверів і регулювання згідно з місцевими законами і
правилами. Перевірка IP-адрес також може допомогти виявити випадки
обману та шахрайства, коли користувачі намагаються приховати свою
справжню ідентичність або місцеперебування.
MaxMind - це провідний постачальник геолокаційних послуг та рішень
з аналізу IP-адрес. MaxMind надає можливість визначати географічне
розташування користувачів за їхнім IP-адресою. Це може бути корисним для
персоналізації вмісту, регіонального таргетингу та аналізу користувацької
активності [22].
MaxMind є потужним інструментом для геолокаційної ідентифікації та
аналізу IP-адрес, і його використання допоможе підвищити безпеку,
ефективність та контроль у системі.
2.3 Висновки до розділу 2
У другому розділі здійснено аналіз існуючих технологій на основі
вивчення предметної області. Розглянуто різноманітні технічні рішення,
включаючи платформу для розробки серверних та мережевих додатків
Node.js, високорівневі мови програмування, такі як Java та Python, об'єктно-
орієнтовану мову програмування С#, а також скриптову мову програмування
загального призначення PHP.
Досліджено поняття бізнес-процесів та управління бізнес-процесами
(BPM). Розглянуто одну з популярних систем управління бізнес-процесами -
Comunda, а також протоколи комунікації, такі як HTTP, MQTT, Kafka та
Webhooks, які використовуються для взаємодії між компонентами системи.
На основі отриманих знань та проведеного аналізу було обрано
конкретні технологічні рішення для подальшого використання у
кваліфікаційній роботі.
53
РОЗДІЛ 3 МЕТОДИ РОЗРОБКИ ПРОГРАМНИХ СИСТЕМ ДЛЯ
АВТОМАТИЗАЦІЇ ПЕРЕВІРКИ РИЗИКІВ ПРИ РОБОТІ З НОВИМИ
КЛІЄНТАМИ КОМПАНІЙ
3.1 Структура системи
Розробка системи для автоматизації перевірки ризиків при роботі з
новими клієнтами компаній — це важливий проект, який спрямований на
покращення процесів взаємодії компаній зі своїми клієнтами та забезпечення
безпеки та відповідності з вимогами регуляторів і законодавства.
Створена система є монолітною системою, яка поділена на віртуальні
модулі. Така архітектура поєднує в собі переваги монолітної архітектури та
модульної організації, забезпечуючи певний рівень розділення функцій і
компонентів системи.
Основна частина системи працює в межах єдиного моноліту. Це
дозволяє спростити розробку, впровадження та моніторинг системи, оскільки
всі компоненти знаходяться в єдиному середовищі.
Щоб досягти кращого управління та розширюваності, монолітна
система розбивається на віртуальні модулі. Ці модулі функціонують як
самостійні блоки, які можна активувати або деактивувати за потреби. Це
дозволяє легко додавати або видаляти функціональність та збільшувати
гнучкість системи.
Кожен віртуальний модуль відповідає за конкретну функціональність
або задачу в системі. Це сприяє чіткому розділенню обов'язків та полегшує
обслуговування та розвиток системи. Такий підхід дозволяє зберігати
простоту монолітної архітектури, але при цьому надає можливість управляти
окремими частинами системи як окремими модулями.
Розроблена система розділена на наступні модулі:
1. Модуль API інтерфейсу для інтеграції зі сторонніми системами;
54
2. Модуль асинхронної комунікації з клієнтами;
3. Модуль роботи з LexisNexis системою;
4. Модуль роботи з MaxMind системою;
5. Модуль роботи з Persona системою;
6. Модуль прийняття рішень;
7. Модуль бізнес-логіки роботи сервісу;
8. Модуль аналітики;
9. Модуль Email комунікації;
10. Модуль генерації API документації.
На рис. 3.1 зображено структуру розробленої системи та модулі даної
системи.
Рисунок 3.1 - Структура розробленої системи
55
Система автоматизації перевірки ризиків при роботі з новими
клієнтами компаній може бути корисною для різних клієнтів та організацій.
Банки, страхові компанії та інші фінансові установи можуть використовувати
систему для перевірки ризиків та ідентифікації клієнтів, які подають заявки
на кредити, страхові поліси та інші фінансові послуги.
Сучасні компанії, які надають цифрові фінансові рішення та платіжні
послуги, можуть використовувати систему для впровадження власних
процедур перевірки клієнтів та управління ризиками.
Бізнеси будь-якого розміру можуть використовувати систему для
перевірки потенційних партнерів, клієнтів та постачальників перед
укладенням угод та співпрацею.
Всі ці клієнти системи можуть налаштовувати власні рішення і
комунікувати з розробленою системою через модуль API інтерфейсу.
Модуль API інтерфейсу для інтеграції зі сторонніми системами
важливий компонент монолітної системи, який дозволяє взаємодіяти з
іншими програмами, сервісами та зовнішніми джерелами даних. Цей модуль
відкриває доступ до функціональності системи та даних через визначені
програмні інтерфейси (API), що робить можливим обмін даними та
комунікацію з іншими системами.
Даний модуль надає стороннім системам можливість звертатися до
системи для взаємодії. Це може включати отримання даних, відправлення
запитів, виконання певних операцій та багато іншого. Звернення
відбуваються через HTTP(S) протокол.
Для авторизації в системі використовується JWT, що є скороченням від
"JSON Web Token." JWT - це компактний та безпечний спосіб обміну
інформацією між користувачами та серверами. Він широко використовується
для аутентифікації та авторизації веб-додатків і API, включаючи модуль API
інтерфейсу для інтеграції зі сторонніми системами в монолітній системі.
JWT складається з трьох частин: заголовка (Header), корисного
навантаження (Payload) та підпису (Signature). У заголовку вказуються
56
алгоритм шифрування та тип токена. В корисному навантаженні містяться
дані, які ідентифікують користувача чи надають інформацію про його
дозволи. Підпис створюється за допомогою секретного ключа і дозволяє
перевірити цілісність токена.
JWT не потребує зберігання стану на сервері, оскільки вся необхідна
інформація знаходиться в самому токені. Це полегшує масштабування
системи та розподілену архітектуру.
Система має вбудований модуль для автоматичної генерації API
документації, який використовує спеціальний інструмент під назвою
Swagger. Цей модуль створює докладну та доступну документацію для всіх
доступних API-точок, параметрів запитів, дозволів та інших аспектів, що
дозволяє розробникам та іншим користувачам легко розібратися у
функціональності системи.
Модуль генерації API документації автоматично аналізує всі доступні
API-точки та створює документацію на їх основі. Це зменшує ризик
людських помилок та гарантує актуальність документації.
Згенерована документація Swagger містить візуальне представлення
API-точок та параметрів, що робить її легко зрозумілою. Користувачі можуть
взаємодіяти з документацією, спробувати запити та переглядати відповіді
прямо в браузері.
Документація включає в себе докладний опис параметрів, які можуть
бути передані у запитах, а також структуру відповідей. Це допомагає
клієнтам правильно взаємодіяти з API.
Модуль використовує стандартну специфікацію Swagger (OpenAPI
Specification), яка дозволяє створювати документацію в уніфікованому
форматі. Це спрощує інтеграцію з іншими інструментами, які підтримують
Swagger.
Також даний модуль може бути налаштований для підтримки
розширень, таких як додаткові параметри чи валідація даних. Він також
дозволяє вказати правила аутентифікації для доступу до API.
57
Модуль асинхронної комунікації з клієнтами, побудований на базі
webhooks, дозволяє системі надсилати та отримувати повідомлення в режимі
реального часу. Основним принципом роботи цього модулю є використання
HTTP-запитів для сповіщення клієнтів про події чи оновлення, які сталися в
системі.
Спершу клієнт або інтеграція, яка бажає отримувати сповіщення,
повинна зареєструвати webhook в системі. Це включає в себе надання URL-
адреси, на яку система буде відправляти HTTP-запити, та вибір типів подій,
на які клієнт хоче підписатися.
Коли в системі стається подія або оновлення, що цікавить клієнта,
система генерує відповідний HTTP-запит, який містить інформацію про
подію або оновлення.
Клієнт або інтеграція приймає HTTP-запит, розпізнає подію чи
оновлення та обробляє їх. Це може включати відображення інформації
користувачу, оновлення стану додатка чи збереження даних.
Даний модуль, побудований на базі webhooks, надає клієнтам
можливість отримати рішення або оновлення не вимагаючи активного
очікування при HTTP запиті, а замість цього отримувати їх у реальному часі,
коли вони будуть готові. Замість того, щоб постійно відправляти запити для
перевірки стану або очікування результатів, клієнти можуть зареєструвати
webhook і дозволити системі надсилати їм сповіщення, коли відбувається
важлива подія або коли інформація стає доступною.
Модуль бізнес-логіки в системі для автоматизації перевірки ризиків
при роботі з новими клієнтами виконує ключову роль, виступаючи в якості
посередника між іншими модулями та сторонніми сервісами, а також
забезпечуючи зв'язок і взаємодію з модулем прийняття рішення. Основні
функції та завдання цього модуля включають наступне:
1. Обробка запитів на базі бізнес-правил;
2. Комунікація з модулями системи;
3. Взаємодія з модулем прийняття рішення;
58
4. Забезпечення безпеки і конфіденційності.
Модуль бізнес-логіки містить в собі бізнес-правила та логіку, яка
визначає, які критерії та параметри використовуються для оцінки ризиків при
роботі з клієнтами. Він виконує аналіз отриманої інформації та застосовує
правила для прийняття рішень.
Також розроблений модуль діє як посередник між іншими модулями та
модулем прийняття рішення. Він передає результати перевірки ризиків та
відповідні рекомендації до модуля прийняття рішення для остаточного
визначення, чи слід підтвердити клієнта, чи встановити додаткові обмеження
та процедури перевірки. Даний модуль знає про правила та протоколи
комунікації з різними сторонніми сервісами, які використовуються для
отримання додаткової інформації про клієнтів. Він ініціює запити до цих
сервісів, обробляє їхні відповіді та передає результати іншим модулям для
подальшої обробки.
Даний модуль забезпечує безпеку обробки та збереження
конфіденційної інформації про клієнтів, виконує шифрування даних, які
надалі можуть бути збереженими в базу даних.
Цей модуль бізнес-логіки є центральною частиною системи, яка
забезпечує взаємодію з різними джерелами інформації, виконує аналіз
ризиків та допомагає приймати обґрунтовані рішення щодо роботи з
клієнтами.
Модуль прийняття рішень є важливою складовою системи для
автоматизації перевірки ризиків при роботі з новими клієнтами компаній.
Його основним завданням є прийняття остаточних рішень щодо співпраці з
клієнтами на основі аналізу ризиків та вхідних даних.
Модуль прийняття рішень отримує результати від модуля бізнес-
логіки, які містять оцінку ризиків при роботі з клієнтами. Він аналізує ці
ризики та враховує їх при прийнятті рішень.
59
Модуль визначає, які дії слід вжити щодо кожного клієнта. Це може
бути підтвердження клієнта для співпраці, встановлення обмежень чи
додаткових перевірок, або відмова у співпраці.
Модуль може автоматично приймати рішення для типових сценаріїв,
що допомагає збільшити ефективність та знизити вплив людського фактора.
Проте він також може вимагати втручання оператора у випадках, коли
ситуація вимагає особливої уваги.
Модуль може бути налаштований згідно з потребами компанії,
включаючи встановлення правил, які визначають, які рішення слід приймати
для різних видів ризиків.
Результатом роботи модуля прийняття рішень є визначення оцінки
клієнта, що базується на комплексному аналізі різних параметрів і факторів.
Ця оцінка служить основою для прийняття позитивного чи негативного
рішення щодо співпраці з клієнтом. Користувачі системи отримують цю
оцінку, і вона служить ключовою інформацією для прийняття рішення про
те, чи слід розпочати або продовжити роботу з даною особою чи компанією.
Оцінка клієнта може бути числовою або категорійною та визначати
рівень ризику, пов'язаного з клієнтом. Наприклад, вища оцінка може
вказувати на менший ризик та позитивне рішення, тоді як нижча оцінка може
вказувати на більший ризик і негативне рішення.
Модуль прийняття рішень є важливою ланкою у системі, оскільки від
нього залежить завершення процесу перевірки клієнта та прийняття
відповідних дій. Він допомагає забезпечити ефективну та безпечну роботу з
клієнтами, дотримуючись встановлених бізнес-правил та процедур.
Модулі для роботи з LexisNexis, Persona та MaxMind є додатковими
складовими системи для автоматизації перевірки ризиків при роботі з новими
клієнтами компаній, що розширюють функціональність системи та додають
значний обсяг корисної інформації.
Ці додаткові модулі допомагають збільшити точність та надійність
процесу перевірки клієнтів, додаючи додаткові джерела інформації та
60
інструменти для аналізу ризиків. Вони можуть бути корисними для компаній,
які прагнуть підвищити рівень безпеки та зменшити ризики при взаємодії з
новими клієнтами.
Модуль Email комунікації в системі відправляє email-повідомлення
користувачеві, які містять посилання на проходження перевірки особистості
через сервіс Persona. Ця функціональність може бути корисною для
забезпечення зручного та швидкого способу для користувачів підтвердити
свою особистість та надати необхідні документи або інформацію.
Даний модуль генерує та відправляє email-повідомлення користувачам,
які мають пройти процедуру перевірки особистості через сервіс Persona.
Повідомлення містить посилання, яке спрямовує користувача на відповідну
сторінку аутентифікації в сервісі Persona.
Кожне email-повідомлення містить унікальне посилання, яке
ідентифікує конкретного користувача і забезпечує безпеку процесу
перевірки.
Після завершення процедури перевірки в Persona, користувач може
отримати результати відповідно до результатів інтеракції з сервісом. Модуль
Email комунікації може надіслати повідомлення, яке включає інформацію
про результати перевірки.
Після завершення перевірки особистості користувача система отримає
звіт, який містить інформацію про результати перевірки, підтверджені дані та
будь-які інші параметри, які були перевірені сервісом Persona.
Звіт, отриманий від сервісу Persona, може використовуватися системою
для прийняття рішень щодо співпраці з клієнтами, для подальшого
моніторингу та аналізу даних, а також для забезпечення відповідності
вимогам регуляторів та стандартам безпеки.
Всі дані, отримані в результаті перевірки, підлягають шифруванню
методом AES-256 та зберігаються в базі даних з високим рівнем безпеки. Цей
підхід до зберігання та захисту даних допомагає забезпечити
61
конфіденційність, цілісність та доступність інформації, що стосується
клієнтів та результатів їхньої перевірки.
Система використовує єдиний відкритий ідентифікатор користувача,
який є унікальним ідентифікатором для кожного клієнта. Цей ідентифікатор
(ID) виділяється і призначається клієнту під час запиту на перевірку.
3.2 Опис функцій системи
Однією з головних переваг такої системи є високий рівень
автоматизації. Сторонні сервіси можуть інтегрувати цю систему зі своїми
власними сервісами, щоб автоматично отримувати дані про своїх клієнтів та
приймати рішення на основі цих даних без необхідності ручної взаємодії з
системою.
Система не має користувацького інтерфейсу. Користувачі системи не
мають можливості взаємодіяти з нею через графічний інтерфейс або веб-
сайт. Замість цього, доступ до функціональності цієї системи здійснюється
виключно через програмний інтерфейс за допомогою API.
API, або Application Programming Interface (інтерфейс програмування
додатків), - це набір правил та протоколів, які дозволяють різним програмам
або компонентам програмного забезпечення взаємодіяти один з одним. API
визначає способи, якими різні частини програм можуть запитувати та
обмінюватися даними, надаючи при цьому зручний та стандартизований
інтерфейс для цього.
API дозволяє клієнтам отримувати доступ до системи в режимі
реального часу. Це означає, що дані оновлюються миттєво, що сприяє
швидкості та ефективності при прийнятті рішень. Відсутність ручного
введення даних у систему знижує ризик помилок та непорозуміння. API
дозволяє передавати дані автоматично, що сприяє точності та надійності
інформації.
62
Наявність API документації є важливим аспектом для будь-якої
системи, особливо тієї, яка працює через API і не має користувацького
інтерфейсу. API документація являє собою детальний набір інструкцій та
інформації, яка допомагає користувачам розробляти програми або
інтегрувати систему з іншими додатками, зображена на рисунку 3.2.
Рисунок 3.2 - Документація розробленого API
Кінцеву точку POST /analizy було розроблено для надсилання запитів
на аналіз ризиків при роботі з новими клієнтами компаній. Головною метою
цієї кінцевої точки є надання можливості користувачам подавати інформацію
про нового клієнта, яку система потім аналізує, щоб визначити рівень ризику,
пов'язаний з цим клієнтом. Такий аналіз може бути корисним при прийнятті
рішень про співпрацю з клієнтом, наданні кредиту, відкритті банківського
рахунку, а також при запобіганні шахрайству та іншим фінансовим ризикам.
Основні цілі POST /analizy включають:
1. Автоматизація процесу оцінки ризиків;
63
2. Ефективність прийняття рішень;
3. Зменшення фінансових втрат;
4. Забезпечення дотримання правопорядку.
Ця кінцева точка дозволяє великим компаніям та фінансовим
установам автоматизувати процес аналізу ризиків, зменшуючи необхідність в
ручному введенню та перевірці даних про клієнтів.
Відомість рівня ризику, пов'язаного з кожним клієнтом, допомагає
приймати поінформовані рішення про надання послуг чи укладення угод з
цим клієнтом.
Аналіз ризиків допомагає компаніям уникати фінансових втрат,
пов'язаних з ненадійними або шахрайськими клієнтами. Також, деякі
індустрії, такі як фінансова, повинні дотримуватися законодавчих вимог
щодо перевірки клієнтів на відповідність нормам відповідності та боротьби зі
шахрайством. POST /analizy допомагає забезпечити це дотримання.
Створена кінцева точка приймає дані про клієнта компанії у форматі
JSON. JSON (JavaScript Object Notation) - це легкий формат обміну даними,
який використовується для структурування та передачі інформації між
різними програмами. JSON є популярним способом представлення даних у
текстовій формі, і він легко читається і розуміється як людьми, так і
комп'ютерами.
Запит POST /analizy відбувається через протокол HTTPS (Hypertext
Transfer Protocol Secure), що забезпечує захищену передачу даних між
клієнтом і сервером. HTTPS використовує шифрування для захисту
інформації під час її передачі, та вимагає наявності дійсного SSL-сертифіката
на сервері.
Це означає, що дані, які передаються за допомогою запиту POST
/analizy, зашифровані сертифікатом і залишаються конфіденційними під час
передачі через мережу Інтернет. Треті сторони не зможуть легко перехопити
або переглядати ці дані під час їхньої передачі.
64
Застосування HTTPS та сертифіката забезпечує високий рівень безпеки
при обміні даними між користувачем (клієнтом) та сервером, зменшуючи
ризик витоку конфіденційної інформації та забезпечуючи конфіденційність
даних під час їх передачі через мережу. HTTP запит до розробленого API
зображений на рисунку 3.3.
Рисунок 3.3 - HTTP запит до розробленого API.
Відповідь на запит POST /analizy включає в себе інформацію про стан
запиту та результати аналізу.
Одне зі значень, яке буде повернути компанії - це “requestId”. requestId
- це унікальний ідентифікатор запиту, який був створений при надсиланні
POST-запиту на аналіз. Цей ідентифікатор може бути використаний для
подальшого отримання результатів аналізу за допомогою запиту GET
/results/{requestId}.
65
Також, результат містить у собі статус запиту на аналіз. За
замовчуванням, статус вказується як "IN_PROGRESS", що означає, що аналіз
ризиків ще не завершено, і результати недоступні. Після завершення аналізу,
статус може змінитися на "COMPLETED" або інший відповідний статус.
Результати аналізу, які визначають наскільки надійним є клієнт після
перевірки ризиків будуть представленні у змінній “score”. Після відправки
запиту значення цього поля встановлене на null, оскільки аналіз ще не
завершено. Після завершення аналізу, це поле буде містити оцінку (score),
яка вказує на рівень ризику, пов'язаний з клієнтом. Це число може бути
представлене у різних шкалах відповідно до специфікацій системи.
Якщо "score" має значення до 100, це вказує на дуже позитивний
результат аналізу. Це означає, що клієнт вважається надійним, і його можна
приймати без додаткових перевірок. Такий клієнт може бути прийнятий для
отримання послуг або укладення угоди без значних обмежень.
Значення діапазоні від 100 до 500 вказує на те, що клієнт потребує
додаткових перевірок та уваги з боку менеджера компанії. Це може включати
перевірку додаткових документів, спілкування з клієнтом або інші заходи для
зменшення ризику.
Значення, яке перевищує 500, вказує на високий рівень ризику,
пов'язаний з клієнтом. Такий клієнт вважається ненадійним і може
потребувати подальшого ретельного аналізу, або відмови в наданні послуг.
Терміни перевірки важливі для забезпечення ефективності та точності
процесу оцінки ризиків при роботі з новими клієнтами. В такому випадку,
система має два режими перевірки: автоматичну та перевірку особистості
через систему Persona.
У випадку автоматично перевірки система виконує перевірку клієнта
протягом декількох секунд. Під час цієї перевірки, система аналізує надані
дані та параметри аналізу, і визначає, чи може клієнт бути визнаним як
надійний або потребує додаткової перевірки особистості.
66
Якщо система визнає, що потрібна додаткова перевірка особистості,
вона відправляє клієнту посилання на проходження такої перевірки через
систему Persona. Ця перевірка може включати в себе перевірку документів,
фотографій, а також інших даних, що підтверджують ідентичність клієнта,
приклад перевірка особи через сервіс Persona зображено на рисунку 3.4.
Рисунок 3.4 - Перевірка особи через сервіс Persona
67
У випадку, коли клієнт проходить перевірку особистості через систему
Persona, результати цієї перевірки можуть бути надані протягом пари днів.
Це може включати час на збір та перевірку документів, а також на взаємодію
з клієнтом для отримання додаткової інформації.
Ця дворівнева система дозволяє здійснювати швидку автоматичну
перевірку для більшості клієнтів, а також вимагає додаткової перевірки
особистості для клієнтів, щодо яких існують сумніви або потреба у
додатковій інформації. Це дозволяє збалансувати швидкість та точність
процесу оцінки ризиків.
Після успішного проходження клієнтом перевірки особистості через
систему Persona, результати цієї перевірки можуть бути надані компанії у
вигляді webhook запиту. Використання webhook - це ефективний спосіб
автоматичної передачі даних між системами та забезпечення миттєвості
інформаційного обміну.
Використання webhook дозволяє компанії отримувати інформацію про
результати перевірки миттєво та автоматично, що допомагає прискорити
процес прийняття рішень та забезпечує ефективну взаємодію з системою
Persona, результат перевірки відправлений через Webhooks зображено на
рисунку 3.5.
Рисунок 3.5 - Результат перевірки відправлений через Webhooks
GET /results/{requestId} було розроблено для того, щоб надавати
користувачам можливість отримати результати аналізу ризиків, проведеного
для певного запиту на аналіз, який був відправлений за допомогою POST
/analizy.
68
Дана кінцева точка дозволяє користувачам отримати інформацію про
статус аналізу та результати, які були отримані після завершення процесу. Це
надає користувачам можливість оцінити рівень ризику, пов'язаний з
конкретним клієнтом.
За допомогою GET /results/{requestId}, користувачі можуть приймати
інформовані рішення щодо подальших дій з клієнтом. Наприклад, на підставі
результатів аналізу може бути визначено, чи слід надавати клієнту певні
фінансові послуги або чи потрібно провести додатковий аналіз.
Також GET /results/{requestId} дозволяє вести облік аналітичних
операцій та відстежувати історію аналізу ризиків для різних клієнтів. Це
забезпечує прозорість та можливість перевірки результатів у майбутньому.
3.3 Забезпечення захисту інформації при роботі зі створеною
системою
Захист інформації є надзвичайно важливим аспектом розробки системи
для автоматизації перевірки ризиків при роботі з новими клієнтами компаній.
Система обробки даних клієнтів містить конфіденційну інформацію, таку як
особисті дані, фінансові дані, документи тощо. Збереження та передача цих
даних повинні бути належним чином захищені від несанкціонованого
доступу чи витоку.
PII (Personally Identifiable Information), або інформація, за якою
можливо ідентифікувати особу, визначається як будь-яка інформація, яка
може бути використана для ідентифікації конкретної особи або зв'язку з нею.
Ця інформація часто включає особисті дані, які дозволяють встановити
індивідуальну ідентифікацію та прив'язати дані до конкретної особи.
Ця інформація дуже цінна для ідентифікації та відстеження
особистості, і тому вимагає особливої уваги та захисту від несанкціонованого
доступу чи витоку даних. Законодавчі норми та регуляції, такі як Закон про
захист особистих даних (GDPR) в Європі або Закон про захист особистої
69
інформації в США, накладають обов'язки щодо захисту PII-інформації та
встановлюють вимоги до обробки та зберігання цих даних.
GDPR (General Data Protection Regulation) - це регуляція загального
захисту даних, яка є законодавчим актом Європейського Союзу і стала
чинною з 25 травня 2018 року. GDPR встановлює правила та стандарти для
захисту особистих даних громадян ЄС та регулює обробку цих даних.
Особи мають надавати свідому та однозначну згоду на обробку своїх
особистих даних, і організації повинні надавати повідомлення про те, які дані
збираються і для яких цілей.
GDPR передбачає можливість високих штрафів для організацій, які
порушують вимоги регуляції. Штрафи можуть становити до 4% від
загального річного обороту організації або до 20 мільйонів євро, залежно від
того, яка сума більша.
GDPR, як правило, не є прямо обов'язковим для країн поза
Європейським Союзом. Однак у випадку обробки особистих даних громадян
ЄС у країнах поза ЄС, включаючи Україну, існують певні вимоги та
відповідальність для організацій, що здійснюють таку обробку.
Зокрема, GDPR застосовується до організацій, які мають фізичний
присутній в ЄС, або які обробляють особисті дані громадян ЄС, навіть якщо
ці організації розташовані поза межами ЄС. Організації з України можуть
підпадати під дію GDPR, якщо вони обробляють особисті дані громадян ЄС
або мають фізичне представництво в ЄС.
Для більшої чіткості та виконання вимог GDPR у випадку обробки
даних громадян ЄС, багато організацій у різних країнах, включаючи Україну,
використовують аналогічні стандарти захисту даних. Україна також
розробила власний Закон "Про захист особистих даних", який має на меті
регулювати обробку особистих даних та забезпечити відповідність
міжнародним стандартам безпеки даних.
Україна виражає намір стати членом Європейського Союзу і рухається
в напрямку інтеграції з ЄС. Цей процес включає в себе гармонізацію
70
законодавства та стандартів з ЄС у різних галузях, включаючи захист
особистих даних.
Дотримання GDPR є важливим етапом на шляху України до
наближення свого законодавства до європейських стандартів. Призначення
GDPR - це не лише захист особистих даних громадян ЄС, але і створення
єдиних норм та правил для обробки особистих даних в Європейському
Союзі.
У розробленій системі для автоматизації перевірки ризиків при роботі з
новими клієнтами компаній велика увага приділяється безпеці даних. Одним
з ключових аспектів забезпечення безпеки є збереження даних в
зашифрованому вигляді.
Шифрування даних - це процес перетворення інформації в такий
формат, який може бути зрозумілим лише тим, хто має право на доступ до
цих даних. Зашифровані дані надійно захищені від несанкціонованого
доступу та перегляду.
Для забезпечення безпеки даних в розробленій системі,
використовуються сучасні криптографічні методи та стандарти для
шифрування даних під час їх передачі та збереження. Зашифровані дані
залишаються надійними та захищеними від потенційних загроз безпеці і
конфіденційності.
Всі дані в розробленій системі без винятку зберігаються в
зашифрованому вигляді, і для цього використовується алгоритм шифрування
AES-256. AES (Advanced Encryption Standard) є одним з найпоширеніших і
надійних симетричних алгоритмів шифрування, і використовується для
захисту конфіденційної інформації в багатьох сферах, включаючи
інформаційну безпеку та захист даних.
AES-256 використовує ключ довжиною 256 бітів, що робить його дуже
складним для розшифрування без правильного ключа. Цей алгоритм
вважається одним з найбільш надійних.
71
Також, AES-256 є швидким алгоритмом, який дозволяє ефективно
шифрувати та розшифровувати дані, забезпечуючи високий рівень безпеки.
Даний алгоритм відповідає вимогам багатьох міжнародних стандартів
безпеки, що робить його прийнятним для захисту даних у багатьох галузях.
Шифрування даних AES-256 дозволяє зберегти конфіденційність інформації,
навіть якщо зловмисники намагаються отримати доступ до них.
Застосування AES-256 для шифрування даних в системі є доказом
серйозного підходу до захисту конфіденційної інформації та забезпечення
безпеки всієї обробки даних.
Розроблена система має можливість приймати PII (Personally
Identifiable Information) дані, але при цьому користувачі системи абсолютно
не мають доступу до цих даних і не можуть отримувати інформацію про
їхній зміст або конкретні дані.
Ця можливість є важливою, оскільки PII дані є дуже чутливими та
особистими, і за їхньої обробки слід забезпечити найвищий рівень
конфіденційності та захисту. Ця функціональність дозволяє системі
ефективно виконувати свої завдання з аналізу ризиків та надійності клієнтів,
не порушуючи приватності та конфіденційності особистих даних. У
результаті, користувачі системи можуть бути впевнені в тому, що їхні
особисті дані залишаються надійно захищеними та недоступними для
сторонніх осіб.
У розробленій системі всі дані передаються та обмінюються між
користувачами та системою через захищений протокол HTTPS. HTTPS
(Hypertext Transfer Protocol Secure) - це комбінація звичайного протоколу
HTTP та безпечного шифрованого протоколу SSL/TLS (Secure Sockets
Layer/Transport Layer Security). Використання HTTPS гарантує високий
рівень безпеки та конфіденційності при передачі даних через Інтернет.
HTTPS включає процес аутентифікації сервера, що дозволяє
користувачам перевірити, що вони спілкуються з правильним сервером та не
потрапляють на підробку або атаку "людський середник" (man-in-the-middle).
72
Використання HTTPS позитивно впливає на довіру користувачів до
системи, оскільки вони бачать, що їхні дані захищені та конфіденційні.
Захищений протокол HTTPS є стандартом для забезпечення безпеки та
конфіденційності в Інтернеті. Використання HTTPS у розробленій системі
гарантує, що всі дані, включаючи PII дані та іншу конфіденційну
інформацію, залишаються захищеними під час їхньої передачі і взаємодії між
користувачами та системою.
В розробленій системі існує важлива можливість видалити всі згадки
про клієнта, якщо користувач, якому належать ці дані, надсилатиме
відповідний запит на видалення. Ця можливість забезпечує користувачам
контроль над їхніми особистими даними та дотримання принципів
конфіденційності.
Відповідно до ряду законодавчих актів та регуляторних вимог,
користувачі мають право вимагати видалення своїх особистих даних з
системи. Цей принцип відомий як "право на забуття," і він гарантує, що
користувачі мають контроль над своєю інформацією.
Після отримання запиту на видалення, система негайно виконує цей
запит та видалити всі дані, які пов'язані з користувачем, поки це не
суперечить іншим законодавчим вимогам або обов'язкам зберігання. Ця
можливість дозволяє системі дотримувати найвищих стандартів
конфіденційності та захисту особистих даних користувачів і демонструє
зобов'язання системи перед користувачами щодо збереження їхньої
приватності та контролю над їхніми даними.
3.4 Технічні вимоги для роботи з системою
Визначення технічних вимог для роботи з системою є критичним
етапом в розробці будь-якого програмного продукту чи інформаційної
системи. Технічні вимоги встановлюють стандарти та параметри, які система
73
повинна відповідати, і грають ключову роль у забезпеченні надійності,
ефективності та безпеки системи.
Технічні вимоги визначають, які функції повинна виконувати система.
Вони встановлюють параметри та обмеження для розробки та використання
системи, забезпечуючи тим самим відповідність бізнес-потребам.
Також, технічні вимоги включають в себе вимоги до надійності та
стійкості системи. Вони визначають мінімальні вимоги до часу роботи без
збоїв, а також вимоги до резервування та відновлення системи у випадку
виникнення проблем.
Визначення технічних вимог є важливою передумовою для успішної
розробки та впровадження будь-якої інформаційної системи. Вони
допомагають забезпечити, що система відповідає бізнес-потребам, забезпечує
надійність та безпеку, і має відповідну продуктивність.
Технічні вимоги для сервера, який повинен витримувати велике
навантаження, мають бути деталізованими та добре продуманими;
1. Процесор: Дві або більше потужних процесорів, таких як Intel Xeon або
AMD EPYC, з високою кількістю ядер і потоків;
2. Оперативна пам'ять: Мінімум 64 ГБ оперативної пам'яті (RAM) з
можливістю розширення до більших обсягів;
3. Системний накопичувач: Швидкий SSD або NVMe диск для
операційної системи та додатків;
4. Додаткове сховище: Великі масиви SSD або HDD для зберігання даних
та резервування.
Вибір Linux для роботи з Node.js додатками може бути дуже вдалим.
Linux відомий своєю стабільністю та продуктивністю, що є важливими
факторами для серверних застосувань. Він дозволяє оптимізувати ресурси та
використовувати їх для найкращої продуктивності Node.js додатків.
Linux і Node.js надають можливість легко масштабувати сервери для
обробки великих навантажень. За потреби можна додавати нові сервери та
балансувати навантаження.
74
Технічні вимоги до захисту сервера є критичними для забезпечення
безпеки та надійності серверної інфраструктури. Захист сервера включає в
себе заходи та технології, які забезпечують автентифікацію та авторизацію,
безпеку паролів, регулярне оновлення та патчі, захист від несанкціонованого
доступу, шифрування, резервне копіювання та відновлення, моніторинг та
журналювання подій, фаєрволи та системи інтрузивного виявлення, системи
управління ідентифікацією та доступом, фізичну безпеку та захист від вірусів
та шкідливого програмного забезпечення. Технічні вимоги до захисту
сервера повинні бути деталізованими та специфічними для конкретного
серверного середовища, і вони піддаються постійному оновленню та аудиту
для забезпечення високого рівня безпеки.
Технічні вимоги для резервного копіювання (бекапу) є важливими для
забезпечення безпеки та відновлення даних в разі втрати або аварії. Резервні
копії повинні створюватися автоматично, відповідно до зазначеного графіка,
щоб уникнути людських помилок та забезпечити регулярність.
Резервні копії повинні зберігатися на віддалених серверах або в іншому
фізичному місці від основних даних, щоб уникнути втрати в разі природних
катастроф або фізичних пошкоджень. Дані у резервних копіях мають бути
шифрованими для запобігання несанкціонованому доступу та збереження
конфіденційності.
Забезпечення дотримання цих технічних вимог для резервного
копіювання допомагає зберегти безпеку та доступність важливих даних і
забезпечує можливість їх відновлення в разі виникнення проблем.
Технічні вимоги до системи моніторингу та журналювання важливі для
ведення контролю над функціонуванням системи, виявлення аномалій та
розв'язання проблем.
Потрібно забезпечити здатність збирати дані з різних джерел, таких як
сервери, додатки, мережеві пристрої, та агрегувати їх в єдиний джерело
моніторингу. Записувати події та логи, які виникають у системі, включаючи
інформацію про помилки, запити користувачів та інші релевантні події.
75
Також треба відстежувати використання ресурсів, таких як CPU,
пам'ять, диск та мережа, для виявлення ресурсомістких процесів або
незвичайної активності.
Ці технічні вимоги допомагають забезпечити ефективний моніторинг,
аналіз та журналювання системи для забезпечення її безпеки, надійності та
відповідності стандартам безпеки.
3.5 Оцінка ефективності застосування системи
Оцінка ефективності системи або проекту є важливим кроком в процесі
розробки та впровадження технологій і має безліч ключових переваг і
цінностей. Оцінка дозволяє визначити, наскільки система або проект
відповідає поставленим цілям і завданням. Вона допомагає переконатися, що
розроблене рішення розв'язує конкретні проблеми та вимоги.
Дана оцінка допомагає вчасно виявити проблеми та недоліки в системі
чи проекті. Це дозволяє виправити їх на ранніх стадіях розробки, що веде до
зменшення витрат і ризику.
Оцінка створює основу для моніторингу та контролю результатів
роботи системи чи проекту. Це дозволяє вчасно реагувати на зміни та
впливати на подальший розвиток.
Оцінка ефективності даної системи буде проводитися на основі витрат,
що охоплюють різні аспекти проекту та експлуатації системи. Оцінка витрат
є важливою складовою аналізу, оскільки вона дозволяє оцінити ефективність
та вигідність впровадження системи.
Основні витрати при роботі системи для автоматизації перевірки
ризиків при роботі з новими клієнтами компаній включають в себе дві
ключові категорії витрат:
1. Витрати на послуги сторонніх сервісів;
2. Витрати на оплату роботи сервера.
76
Один із головних витратних сторонніх сервісів, який надає доступ до
різноманітних юридичних та фінансових даних для аналізу ризиків є сервіс
LexisNexis. Ціна обробки запитів через LexisNexis може значно варіюватися в
залежності від кількості запитів, обсягу даних та обраного тарифу. LexisNexis
надає різні послуги та пакети, і ціни можуть змінюватися з часом. На цей час
середня ціна запиту до даного сервісу складає $0.50 при 1000 запитів на
місяць.
Також система використовує сервіс Persona, сервіс для перевірки
особистості та ідентифікації клієнтів, який вимагає оплати за кожен запит на
перевірку. Ціна обробки запиту через Persona також може варіюватися
залежно від кількості запитів, обсягу і типу перевірок, а також вибраного
тарифу. Persona надає різні послуги для перевірки особистості та
ідентифікації користувачів. Середня ціна запиту варіюється від $0.1 до $0.8 в
залежності від перевірки документів, яку обере користувач.
У системі також використовується сервіс MaxMind, який визначає
геолокації та ризики, пов'язаних з інтернет-з'єднанням клієнтів. Ціна
використання сервісу стала та дорівнює $34.00 в місяць.
Витрати на оплату роботи сервера є важливою складовою витрат при
роботі системи, яка базується на серверній інфраструктурі. Ці витрати
містять різноманітні аспекти, пов'язані з утриманням та функціонуванням
серверів, що забезпечують роботу системи. Основні аспекти витрат на оплату
роботи сервера включають таке:
1. Оренда або придбання апаратного забезпечення;
2. Оплата хостинг-постачальників.
Важливо враховувати, що витрати на оплату роботи сервера можуть
змінюватися в залежності від обсягу ресурсів, які потрібні для нормальної
роботи системи, і від обраної інфраструктури (локальної або хмарної).
Ефективне управління цими витратами включає в себе планування та
оптимізацію ресурсів, раціональний вибір обладнання та постачальників
послуг, а також моніторинг ефективності серверів.
77
Після детальних підрахунків враховуючи всі витрати та доходи
розробника, ціна одного запиту для компаній складатиме приблизно $1.21.
Ця ціна враховує всі витрати на обробку запитів через сторонні сервіси,
оплату роботи сервера, а також прибуток розробника.
Важливо зазначити, що ціна може коливатися в залежності від числа
запитів, які компанії роблять, та вибраного тарифу або угоди зі сторонніми
сервісами.
Використання розробленої системи виявляється значно дешевшим і
більш економічно вигідним порівняно зі сценарієм, коли кожна з компаній-
клієнтів мусила б розробляти власну аналогічну систему.
Розроблена система може обслуговувати багато компаній-клієнтів
одночасно, що робить її значно більш масштабованою порівняно з
індивідуальними рішеннями для кожної компанії.
Розробка власної системи вимагає значних витрат на програмну
розробку, технічну інфраструктуру, тестування та підтримку. Використання
готової системи дозволяє уникнути цих великих витрат.
Також, розробка власної системи може зайняти значну кількість часу, в
той час, як використання готової системи дозволяє компаніям-клієнтам
швидше отримати доступ до необхідного функціоналу.
Отже, використання готової системи дозволяє значно зменшити
витрати на розробку та обслуговування, забезпечує економію часу і ресурсів,
і є більш раціональним та економічно вигідним рішенням для компаній-
клієнтів.
3.6 Висновки до розділу 3
У даному розділі було розглянуто ключові аспекти, пов'язані з
методами розробки програмних систем для автоматизації перевірки ризиків
при роботі з новими клієнтами компаній. Спершу була детально
проаналізована структура системи, яка включає в себе компоненти та модулі,
78
необхідні для правильного функціонування програмного рішення. Опис
функцій системи дав можливість зрозуміти, які завдання вона виконує та які
операції доступні користувачам.
Особлива увага була приділена забезпеченню захисту інформації при
роботі зі створеною системою. Цей аспект важливий, оскільки обробка
конфіденційних даних та ризикованих операцій вимагає надійного захисту
від несанкціонованого доступу та зловживань. Технічні вимоги для роботи з
системою були визначені з урахуванням апаратного та програмного
забезпечення, необхідного для ефективної роботи системи.
Оцінка ефективності застосування системи дозволила визначити,
наскільки успішно вона виконує свої функції та забезпечує автоматизацію
процесу перевірки ризиків при роботі з новими клієнтами компаній.
У цьому розділі надано комплексний огляд системи, що враховує її
структуру, функціональність, захист інформації, технічні вимоги та
ефективність застосування.
79
ВИСНОВКИ
У даній роботі було ретельно проаналізовано необхідність та методи
розробки програмних систем для автоматизації процесу перевірки ризиків
при взаємодії з новими клієнтами компаній. Основна увага була спрямована
на те, як ці системи можуть допомогти в ідентифікації потенційних ризиків
та забезпечити надійну оцінку нових клієнтів у фінансовому секторі.
У рамках аналізу предметної області розглянуті різні аспекти перевірки
клієнтів, включаючи впровадження принципу "Знай свого клієнта" (Know
Your Customer) та його практичне застосування. Особлива увага була
приділена компанії LexisNexis, яка надає юридичну, регуляторну та бізнес-
інформацію, та її ролі в підтримці надійних процедур перевірки клієнтів.
Також розглянуто компанію Trulioo та її послуги, спрямовані на
впровадження ефективних процедур перевірки.
Досліджено різні види фінансових установ та їхні специфічні
особливості при проведенні перевірки клієнтів, зокрема у сфері операцій з
криптовалютами. На основі цього аналізу визначено ключові завдання, які
потрібно вирішити у подальшій роботі, а також очікувані результати.
У розділі, присвяченому аналізу існуючих технологій, були розглянуті
технічні рішення, які можна використовувати для розробки програмних
систем для автоматизації перевірки ризиків. Розглянуто різні мови
програмування та платформи розробки, включаючи Node.js, Java, Python, C#,
та PHP. Досліджено поняття бізнес-процесів та систем управління бізнес-
процесами (BPM), а також розглянуто протоколи комунікації, такі як HTTP,
MQTT, Kafka та Webhooks, які використовуються для взаємодії між
компонентами програмних систем.
На основі цього аналізу обрано технологічні рішення, які найкраще
відповідають потребам автоматизованої системи для перевірки ризиків.
80
Завершальний розділ дослідження розглядає ключові аспекти розробки
програмних систем для автоматизації процесу перевірки ризиків при роботі з
новими клієнтами компаній. Детально проаналізовано структуру системи, її
функції та захист інформації. Визначено технічні вимоги та оцінено
ефективність застосування системи.
81
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
API - Інтерфейс програмування застосунків.
UBO - Кінцевий власник (Ultimate Beneficial Owner).
AML - Протидія відмиванню грошей (Anti-Money Laundering).
PEP - Політично викладений особливий (Politically Exposed Person).
KYC - Знай свого клієнта (Know Your Customer).
KYB - Знай свого бізнес-клієнта (Know Your Business).
PHP - Скриптова мова програмування.
ІС - Інформаційна система.
БП - Бізнес-процеси.
BPM - Управління бізнес-процесами.
HTTP - Протокол передачі гіпертекстових даних.
MQTT - Протокол для Інтернету речей.
СРМ - Система управління відносинами з клієнтами.
API - Інтерфейс програмування застосунків.
RDBMS - Система керування реляційними базами даних.
JSON - Текстовий формат обміну даними (JavaScript Object Notation).
QoS - якість обслуговування (Quality of Service).
CPU - Центральний процесор (Central Processing Unit).
SSD - Твердотілий накопичувач (Solid State Drive).
SSL/TLS - Криптографічний протокол (Secure Sockets Layer/Transport
Layer Security).
PII - Особиста ідентифікована інформація (Personally Identifiable
Information).
GDPR - Загальний регламент з захисту даних (General Data Protection
Regulation).
82
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Chris Richardson. Microservices Patterns: With examples in Java. Shelter
Island, NY: Manning Publications, 2018. 477 p.
2. Sam Newman. Building Microservices: Designing Fine-Grained Systems
O'Reilly and Associates, 2015. 278 p.
3. Wes McKinney. Python for Data Analysis. O'Reilly Media, 2017. 522 p.
4. Jonathan LeBlanc & Tim Messerschmidt. Identity and Data Security for Web
Development. O'Reilly Media, 2016. 201 p.
5. Daniel Drescher. Blockchain Basics: A Non-Technical Introduction in 25
Steps. Apress, 2017. 270 p.
6. Malcolm McDonald. Web Security for Developers: Real Threats, Practical
Defense. No Starch Press, 2020. 216 p.
7. Andreas Antonopoulos. Mastering Bitcoin: Unlocking Digital
Cryptocurrencies. O'Reilly Media, 2017. 375 p.
8. Gregory J Touhill & C Joseph Touhill. Cybersecurity for Executives: A
Practical Guide. Wiley-Aiche, 2014. 416 p.
9. Neal Ford & Mark Richards. Fundamentals of Software Architecture: An
Engineering Approach. A Comprehensive Guide to Patterns, Characteristics,
and Best Practices. O'Reilly Media, 2020. 400 p.
10.Eric Ries. The Lean Startup: How Today's Entrepreneurs Use Continuous
Innovation to Create Radically Successful Businesses. Crown Currency ,
2017. 336 p.
11.Bob Walsh. Know Your Customer (KYC) Compliance: Hands-on Guide for
Compliance Professionals. CreateSpace Independent Publishing Platform,
2015. 140 p.
12.Gary S. Lynch. Single Point of Failure: The 10 Essential Laws of Supply
Chain Risk Management. Wiley, 2009. 272 p.
83
13.Justin Mccarthy. Modern Technologies in Risk Management. Professional
Risk Managers' International Ass. 2023. 108 p.
14.J. David Cummins, Neil A. Doherty, Richard D. Phillips. Strategic Risk
Management and Insurance. Oxford University Press, 2001. 464 p.
15."Risk Management Guide for Information Technology Systems". Режим
доступу:
https://www.hhs.gov/sites/default/files/ocr/privacy/hipaa/administrative/securi
tyrule/nist800-30.pdf
16.Rajkumar Buyya, James Broberg and Andrzej M. Goscinski.Cloud
Computing Principles and Paradigms. Hoboken: Wiley, 2011. 688 p.
17.Paul Bruce. Web Performance Testing and Optimization. /Tammy Everts.
Sebastopol: O'Reilly Media, 2014. 338 p.
18.McNicholas, Edward R., Vivek K. Mohan . Cybersecurity: A Practical Guide
to the Law of Cyber Risk. Practising Law Inst, 2015. 562 p.
19.John C. Hull, Wiley John and Sons. Risk Management and Financial
Institutions. 2023. 804 p.
20.Bruce Schneier. Data and Goliath: The Hidden Battles to Collect Your Data
and Control Your World. W. W. Norton & Company, 2016. 448 p.
21.Brian Russell. Practical Internet of Things Security. Drew van Duren - Packt
Publishing, 2016. 336 p.
22.Ross Anderson, Wiley John and Son. Security Engineering: A Guide to
Building Dependable Distributed Systems, 2021. 1182 p.
ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор Віра БАБЕНКО
__________________
“___” _____________ 2023р.
Дослідження методів розробки програмних систем для
автоматизації перевірки ризиків при роботі з новими клієнтами
компаній
Специфікація
482.ЧДТУ.32286-01
Листів 2
Розробник _______________ Ірина ШЕВЧЕНКО
Керівник _______________ Світлана СИСОЄНКО
Черкаси 2023
2
482.ЧДТУ.32286-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.32286-01 12 01 Текст програми
482.ЧДТУ. 32286-01 34 01 Інструкція користувача
ДОДАТОК Б
Дослідження методів розробки програмних систем для
автоматизації перевірки ризиків при роботі з новими клієнтами
компаній
Текст програми
482.ЧДТУ.32286-01 12 01
Листів 12
Розробник _______________ Ірина ШЕВЧЕНКО
Черкаси 2023
2
482.ЧДТУ.32286-01 12 01
import Joi from 'joi';
import Boom from 'boom';
import models from '../../models';
import { buildFullName } from '../../lib/helpers';
module.exports = {
config: {
description: 'Get a client by its UUID',
cache: {
expiresIn: 5 * 1000,
privacy: 'private'
},
auth: {
strategy: 'jwt',
mode: 'optional'
},
validate: {
params: {
id: Joi.string().guid().required()
}
}
},
handler: async (req, res) => {
let client = null;
try {
client = await models.Client.findOne({
where: { id: req.params.id },
attributes: ['client_tagline', 'client_intro', 'client_summary', 'client_tracking'],
raw: true,
include: [{
model: models.User,
as: 'User',
attributes: ['id'],
include: [{
model: models.Client,
as: 'Client',
attributes: ['client_id', 'first_name', 'last_name', 'real_phone', 'email', 'address',
'taxid', 'redesig'],
include: [{
model: models.accounts,
as: 'account',
attributes: ['account']
}]
}]
3
482.ЧДТУ.32286-01 12 01
}, {
model: models.NewClient,
as: 'NewClient',
attributes: ['client_id', 'first_name', 'last_name', 'file_as']
}]
});
} catch (e) {
return res(Boom.intertal('An unexpected error occurred during retrieving the client.'));
}
if (!client) {
return res(Boom.notFound(`Client with id ${req.params.id} not found.`));
}
let clientPreferences;
try {
clientPreferences = await models.UserClientPreferences.findOne({ where: { user_id:
client['User.id'] } });
} catch (e) {
clientPreferences = null;
}
clientPreferences = clientPreferences || {};
const designations = client['User.Client.redesig'];
const designationsArray = designations && designations.trim() ?
designations.split(',') : null;
let clientTagline = client.client_tagline ? String(client.client_tagline) : '';
clientTagline = clientTagline.trim();
clientTagline = (/^Edit me\s?\.*$/i).test(clientTagline) ? '' : clientTagline;
clientTagline = clientTagline || String(clientPreferences.client_tagline || '').trim();
let clientIntro = client.client_intro ? String(client.client_intro) : '';
clientIntro = clientIntro.trim();
clientIntro = (/^Edit me\s?\.*$/i).test(clientIntro) ? '' : clientIntro;
clientIntro = clientIntro || String(clientPreferences.client_intro || '').trim();
let clientSummary = client.client_summary ? String(client.client_summary) : '';
clientSummary = clientSummary.trim();
clientSummary = (/^Edit me\s?\.*$/i).test(clientSummary) ? '' : clientSummary;
clientSummary = clientSummary || String(clientPreferences.client_summary ||
'').trim();
const response = {
client: {
4
482.ЧДТУ.32286-01 12 01
client: {
id: client['REcrmContact.contact_id'],
name: buildFullName([
client['REcrmContact.first_name'],
client['REcrmContact.last_name']
]) || client['REcrmContact.file_as']
},
client: {
id: client['User.Client.client_id'],
name: buildFullName([client['User.Client.first_name'],
client['User.Client.last_name']]),
designations: designationsArray,
tagline: clientTagline,
intro: clientIntro,
summary: clientSummary,
office: client['User.Client.office.account'],
phone: client['User.Client.cellular_phone'],
email: client['User.Client.email'],
tax: client['User.Client.taxnumber'],
address: client['User.Client.address'],
photo: `localhost:4200/?id=${client['User.Client.client_id']}`
}
}
};
if (!req.auth.isAuthenticated) {
const clientTrackingUpdate = await models.sequelize.query(`UPDATE "risk"."client"
SET client_tracking = COALESCE(client_tracking::jsonb, '[]') ||
jsonb_build_object('click_type', 'Client Visited', 'time', :time)::jsonb WHERE "id"
= :targetClientId RETURNING *`,
{ model: models.Client, replacements: { targetClientId: req.params.id, time:
Date.now() } });
if (!clientTrackingUpdate) {
return res(Boom.badRequest('Error logging tracking'));
}
}
return res(response);
}
};
import Joi from 'joi';
import Boom from 'boom';
import models from '../../models';
5
482.ЧДТУ.32286-01 12 01
const uuidV1 = require('uuid/v1');
const kong_es = require('../../lib/kong_es');
const config = require('../../config/config.json');
module.exports = {
config: {
description: 'Create a new address',
auth: {
strategy: 'jwt'
},
validate: {
payload: {
address_id: Joi.number()
}
}
},
handler: async (req, res) => {
const clientsAddress = await models.REcrmAddress.findOne({ where: { address_id:
req.payload.address_id } });
const connectedToServer = false;
const listingArray = [];
const cartId = '';
let containsPushedListings = false;
let activeListingCount = 0;
let newSearchApiKey = '';
let newSearchConsumerKey = null;
if ((req.payload.cart_type === 'List' || req.payload.cart_type === 'ProspectList') &&
connectedToServer) {
activeListingCount = await models.mls.count({ where: { status: 'A', mls_no:
listingArray } });
if (activeListingCount !== req.payload.listings.length) {
containsPushedListings = true;
}
if (containsPushedListings) {
const ESIndexAlias = await kong_es.addESIndexAlias(cartId, listingArray);
const deletedES = await kong_es.deleteESIndexAlias(cartId);
const KongApi = await kong_es.addKongApi(cartId);
newSearchConsumerKey = config.kong.defaultConsumerKey;
const KongApiKey = await kong_es.addKongApiKey(newSearchConsumerKey);
newSearchApiKey = KongApiKey.data.key;
} else {
newSearchConsumerKey = config.kong.defaultConsumerKey;
const response = await kong_es.addKongApiKey(newSearchConsumerKey);
}
6
482.ЧДТУ.32286-01 12 01
}
if (clientsAddress || req.payload.address_id === 0) {
const userAddressPreferences = await models.UserAddressPreferences.findOne(
{ where: { user_id: req.auth.credentials.id }, raw: true }
);
let clientSummary = '';
let clientIntro = '';
let clientTagline = '';
if (userAddressPreferences) {
clientSummary = userAddressPreferences.client_summary;
clientIntro = userAddressPreferences.client_intro;
clientTagline = userAddressPreferences.client_tagline;
}
const addressId = uuidV1();
const address = await models.Address.create({
id: addressId,
address_triangles: { cell_size: 150, seed: 0.5, variance: 0.5, x_colors: 'Blues' },
client_summary: clientSummary,
client_tagline: clientTagline,
client_intro: clientIntro,
search_api_key: newSearchApiKey === '' ? config.elasticsearch.authToken :
newSearchApiKey,
search_consumer_key: newSearchConsumerKey, // so update can skip checking if
cart is all active
contains_pushed_listings: containsPushedListings,
user_id: req.auth.credentials.id,
re_user_address_id: req.payload.address_id === 0 ? 0 : req.payload.address_id
});
if (address) {
const address = await models.Address.findOne({
where: { id: addressId },
include: [{
model: models.User,
as: 'User',
attributes: ['id'],
include: [{
model: models.REAddress,
as: 'REAddress',
attributes: ['client_id', 'first_name', 'last_name', 'cellular_phone', 'email',
'address', 'taxId', 're_type'],
include: [{
model: models.clients,
7
482.ЧДТУ.32286-01 12 01
as: 'client',
attributes: ['client_id', 'account']
}]
}]
}, {
model: models.REAddress,
as: 'REAddress',
attributes: ['address_id', 'first_name', 'last_name', 'file_as']
}]
});
if (address) {
return res(address);
}
return res(Boom.notFound());
}
} else {
return res(Boom.notFound('Address id not found'));
}
}
};
import Joi from 'joi';
import Boom from 'boom';
import nodemailer from 'nodemailer';
import models from '../../models';
import config from '../../config/config.json';
import { buildFullName } from '../../lib/helpers';
function getMailer() {
return nodemailer.createTransport({
host: config.mail.host,
port: config.mail.port,
secure: config.mail.secure,
tls: {
rejectUnauthorized: false
}
});
}
async function getMailOptionsByUser(userId) {
try {
const user = await models.User.findOne({
where: { id: userId },
8
482.ЧДТУ.32286-01 12 01
attributes: ['id'],
raw: true,
include: [
{
model: models.User,
as: 'User',
attributes: ['email', 'first_name', 'last_name', 'account']
}
]
});
if (!user) {
return {};
}
const clientEmail = (user['User.email'] || '').trim();
let clientName = buildFullName([user['User.first_name'], user['User.last_name']]);
clientName = clientName || (user['User.account'] || '').trim();
return { clientEmail, clientName };
} catch (error) {
return {};
}
}
async function getMailOptionsByAddress(addressId) {
try {
const address = await models.Address.findOne({
where: { id: addressId },
attributes: ['id'],
raw: true,
include: [
{
model: models.NewUser,
as: 'NewUser',
attributes: ['first_name', 'last_name', 'file_as', 'client_id']
},
{
model: models.User,
as: 'User',
attributes: ['id'],
include: [
{
model: models.User,
as: 'User',
attributes: ['email']
9
482.ЧДТУ.32286-01 12 01
}
]
}
]
});
if (!address) {
return {};
}
const clientEmail = (address['User.User.email'] || '').trim();
let clientName = buildFullName([address['NewUser.first_name'],
address['NewUser.last_name']]);
clientName = clientName || (address['NewUser.file_as'] || '').trim();
clientName = clientName ||
(address['NewUser.client_id'] ? `Contact id ${address['NewUser.client_id']}` : '');
return { clientEmail, clientName };
} catch (error) {
return {};
}
}
async function getMailOptionsByEmail(emailId) {
try {
const email = await models.Email.findOne({
where: { id: emailId },
attributes: ['id'],
raw: true,
include: [
{
model: models.Address,
as: 'Address',
attributes: ['id'],
include: [
{
model: models.NewUser,
as: 'NewUser',
attributes: ['first_name', 'last_name', 'file_as']
},
{
model: models.User,
as: 'User',
attributes: ['id'],
include: [
{
10
482.ЧДТУ.32286-01 12 01
model: models.User,
as: 'User',
attributes: ['email']
}
]
}
]
}
]
});
if (!email) {
return {};
}
const clientEmail = (email['Address.User.User.email'] || '').trim();
let clientName = buildFullName([email['Address.NewUser.first_name'],
email['Address.NewUser.last_name']]);
clientName = clientName || (email['Address.NewUser.file_as'] || '').trim();
clientName = clientName ||
(email['Address.NewUser.client_id'] ? `Contact id
${email['Address.NewUser.client_id']}` : '');
return { clientEmail, clientName };
} catch (error) {
return {};
}
}
async function getMailOptionsByPhone(phoneId) {
try {
const request = await models.request.findOne({
raw: true,
where: { request_no: phoneId },
attributes: ['request_no'],
include: [
{
model: models.User,
as: 'User',
attributes: ['email']
}
]
});
if (!request) {
return {};
11
482.ЧДТУ.32286-01 12 01
}
const clientEmail = (request['User.email'] || '').trim();
const clientName = '';
return { clientEmail, clientName };
} catch (error) {
return {};
}
}
module.exports = {
config: {
description: 'Create a new email',
auth: {
strategy: 'jwt',
mode: 'optional'
},
validate: {
payload: {
phoneId: Joi.number().integer().min(1).required(),
emailId: Joi.string().guid().optional(),
addressId: Joi.string().guid().optional(),
link: Joi.string().required().allow(''),
message: Joi.string().required()
}
}
},
handler: async (req, res) => {
const { phoneId, emailId, addressId, link, message } = req.payload;
let mailOptions = {};
if (!config.mail.fromAddress) {
return res(Boom.internal());
}
if (req.auth.isAuthenticated && req.auth.credentials.id) {
mailOptions = await getMailOptionsByUser(req.auth.credentials.id);
}
if (!mailOptions.clientEmail && addressId) {
mailOptions = await getMailOptionsByAddress(addressId);
}
if (!mailOptions.clientEmail && emailId) {
mailOptions = await getMailOptionsByEmail(emailId);
}
if (!mailOptions.clientEmail && phoneId) {
12
482.ЧДТУ.32286-01 12 01
mailOptions = await getMailOptionsByPhone(phoneId);
}
if (!mailOptions.clientEmail) {
return res(Boom.badRequest('Could not find Client email.'));
}
mailOptions.clientName = mailOptions.clientName || 'Unknown User';
const viewUrl = (link || '').trim();
const emailSubject = `<here text>`;
let body = message.trim();
let bodyHtml = `<p>${body}</p>`;
if (viewUrl) {
body = `<here text>`;
bodyHtml = `<here text>`;
}
const mailObject = {
from: config.mail.fromAddress,
to: mailOptions.clientEmail,
subject: emailSubject,
text: bodyPlain,
html: bodyHtml
};
try {
const sent = await getMailer().sendMail(mailObject);
return res({ success: true, messageId: sent.messageId });
} catch (error) {
return res(Boom.internal());
}
}
};
ДОДАТОК В
Дослідження методів розробки програмних систем для
автоматизації перевірки ризиків при роботі з новими клієнтами
компаній
Інструкція користувача
482.ЧДТУ.32286-01 34 01
Листів 4
Розробник _______________ Ірина ШЕВЧЕНКО
Черкаси 2023
2
482.ЧДТУ.32286-01 34 01
Налаштування системи автоматизації перевірки ризиків при роботі з
новими клієнтами компаній - це важливий процес, який дозволяє забезпечити
оптимальну роботу системи та забезпечити конфіденційність даних
користувачів.
Для додавання нового користувача адміністратор системи повинен
мати доступ до конфігурації програми. Зазвичай цей доступ має
адміністратор системи або особа, відповідальна за управління
користувачами.
Спочатку необхідно створити YAML-файл, який буде містити
конфігурацію користувачів. У цьому файлі можуть бути визначені наступні
параметри для кожного користувача, такі як назва компанії, пароль,
електронна пошта, ролі та права доступу.
YAML (YAML Ain't Markup Language) - це людино-читабельний
формат обміну даними, який використовується для представлення інформації
у структурованому текстовому вигляді. YAML розроблений для того, щоб
бути легким для людей для читання і написання, а також для машинного
розуміння.
Для додавання користувачів необхідно заповнити YAML-файл
інформацією про кожного користувача. Наприклад:
users:
- name: CHDTU
password: 1234
email: [email protected]
roles:
- client
usage:
- lexisNexis
- persona
3
482.ЧДТУ.32286-01 34 01
- maxmind
Конфігурація користувачів, збережена у YAML-файлі, повинна бути
імпортована в систему. Для цього може використовуватися функція імпорту,
яка читає YAML-файл та додає користувачів до системи.
Після зміни конфігурації серверного додатка зазвичай потрібно
виконати перезавантаження додатка, щоб зміни набрати чинності. Це
необхідно, оскільки багато налаштувань і параметрів конфігурації
завантажуються при старті додатка та залишаються в пам'яті до його
перезапуску.
Налаштування доступу до зовнішніх систем, таких як LexisNexis,
Persona та MaxMind, через файл конфігурації є важливим аспектом
управління системою автоматизації перевірки ризиків. Це дозволяє
забезпечити безпеку та контроль доступу до цих сервісів.
Далі надано приклад файлу конфігурації сторонніх сервісів:
lexisnexis:
api_key: YOUR_LEXISNEXIS_API_KEY
secret: YOUR_LEXISNEXIS_SECRET_KEY
persona:
api_key: YOUR_PERSONA_API_KEY
secret: YOUR_PERSONA_SECRET_KEY
webhook_url: https://localhost:4200/persona-webhook
maxmind:
api_key: YOUR_MAXMIND_API_KE
Керування доступом до зовнішніх сервісів через конфігураційні файли
робить процес налаштування та зміни параметрів більш простим та
централізованим.
Якщо конфігурація для сторонніх сервісів, таких як LexisNexis,
Persona, та MaxMind, буде задана невірно або буде містити недійсні
4
482.ЧДТУ.32286-01 34 01
параметри, то система автоматизації перевірки ризиків не зможе коректно
використовувати ці сервіси для проведення перевірок.
Для запобігання цим проблемам важливо ретельно перевірити та
підтвердити правильність конфігурації перед використанням сторонніх
сервісів. Також може бути корисним використовувати механізми валідації та
обробки помилок для обробки невірних конфігурацій та відповідного
повідомлення про це адміністраторам системи.