Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/7282
Full metadata record
DC FieldValueLanguage
dc.contributor.advisorБАБЕНКО, Віра-
dc.contributor.authorДІХТЯРУК, Владислав-
dc.date.accessioned2026-03-08T15:25:53Z-
dc.date.available2026-03-08T15:25:53Z-
dc.date.issued2025-
dc.identifier.urihttps://er.chdtu.edu.ua/handle/ChSTU/7282-
dc.description.abstractМетою виконання даної кваліфікаційної роботи на здобуття освітнього ступеня «бакалавр» є розробка системи автоматичного інформування про важливі новини на базі штучного інтелекту. Загальний обсяг роботи становить 91 сторінку. У роботі використано15 рисунків, 1 таблиця. Для виконання роботи використано 20 літературних джерел. Головне завдання – розроблення системи, що автоматично завантажує новини з відомих перевірених або офіційних джерел, аналізує їх важливість за допомогою штучного інтелекту, присвоює пріоритет від 0 до 5 та надсилає push-сповіщення користувачам про найважливіші події через PWA-додаток. Стислий опис розділів кваліфікаційної роботи бакалавра складається з: – аналізу предметної області та постановки задачі; – вибору технологій та інструментальних засобів; – розробка системи автоматичного інформування про важливі новини на базі штучного інтелекту та реалізації захисту системи.uk_UA
dc.subjectШТУЧНИЙ ІНТЕЛЕКТuk_UA
dc.subjectАВТОМАТИЧНЕ ІНФОРМУВАННЯuk_UA
dc.subjectНОВИНИuk_UA
dc.subjectКЛАСИФІКАЦІЯuk_UA
dc.subjectПРІОРИТЕТНІСТЬuk_UA
dc.subjectPUSH- НОТИФІКАЦІЇuk_UA
dc.subjectPWA-ДОДАТОКuk_UA
dc.subjectПАРСИНГ НОВИНuk_UA
dc.subjectАНАЛІЗ ТЕКСТУuk_UA
dc.subjectСИСТЕМА СПОВІЩЕННЯuk_UA
dc.titleСистема автоматичного інформування про важливі новини на базі штучного інтелектуuk_UA
dc.typeBachelor Thesisuk_UA
Appears in Collections:123 Комп’ютерна інженерія (Комп'ютерні системи та мережі)

Files in This Item:
File Description SizeFormat 
1_ТИТУЛКА_Діхтярук-merged.pdf
  Restricted Access
3.67 MBAdobe PDFView/Open Request a copy


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

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ ІНЖЕНЕРІЇ
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи бакалавра
на тему: «Система автоматичного інформування
про важливі новини на базі штучного інтелекту»
ЧДТУ.252178.002 ПЗ
Виконав: студент 4 курсу, групи КМ-2105
спеціальності 123 – «Комп’ютерна інженерія»
за освітньою програмою – «Комп’ютерні системи
та мережі»
Владислав ДІХТЯРУК
Керівник
д.т.н., професор
Віра БАБЕНКО
Рецензент
к.т.н., доцент
Віталій ЗАЖОМА
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ___________ Віра БАБЕНКО
Черкаси 2025 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет: інформаційних технологій і систем
Кафедра: інформаційної безпеки та комп’ютерної інженерії
Освітньо-кваліфікаційний рівень: Бакалавр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Комп’ютерні системи та мережі
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор _____________ Віра БАБЕНКО
«28» лютого 2025 року
ЗАВДАННЯ
на кваліфікаційну роботу бакалавра студенту
Діхтяруку Владиславу Володимировичу
(прізвище, ім‘я, по батькові)
1. Тема роботи: Система автоматичного інформування про важливі новини на базі
штучного інтелекту
Керівник роботи: д.т.н., професор Бабенко Віра Григорівна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «25» лютого 2025 р. № 53/03-03
2. Строк подання студентом роботи:
3. Вихідні дані до роботи:
Штучний інтелект для аналізу новин: сучасні алгоритми машинного навчання та обробки
природної мови; Система сповіщення: push-повідомлення. Архітектура: клієнт-серверна;
Програмна реалізація: PWA-додаток; Функціональні можливості: парсинг новин, аналіз тексту,
автоматичне визначення пріоритетності; Вимоги до ПЗ: кросплатформенність; необмежена
кількість користувачів.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
1. Аналіз предметної області та постановка задачі
2. Вибір технологій та інструментальних засобів
3. Розробка інформаційної системи пошуку важливих новин з використання штучного інтелекту
4. Захист інформаційної системи пошуку важливих новин з використання штучного інтелекту
Висновки
Додатки
Список використаних джерел
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
1. Додаток А Специфікація
2. Додаток Б Текст програм
3. Додаток В Інструкція користувача
6. Консультанти розділів роботи:
Розділ Прізвище, ініціали Підпис, дата
консультанта завдання видав завдання прийняв
7. Дата видачі завдання: 28 лютого 2025 року
КАЛЕНДАРНИЙ ПЛАН
Термін
№ з/п Назва етапів роботи виконання Примітка
етапів роботи
1 Збір матеріалу 01.03 – 14.03 виконано
2 Обробка матеріалу 15.03 – 20.03 виконано
3 Обґрунтування актуальності виконання досліджень 21.03 - 25.03 виконано
4 Оцінка стану проблеми, виокремлення дослідницьких виконано
задач, постановка задачі дослідження 26.03 – 01.04
5 Викладення сутності і результатів дослідження 03.04 - 08.04 виконано
6 Практичне застосування результатів дослідження 09.04 - 27.04 виконано
7 Оформлення результатів в пояснювальну записку 28.04 - 02.05 виконано
8 Подання роботи на відгук та рецензування 15.05 - 20.05 виконано
Студент ___________________________ Владислав ДІХТЯРУК
(підпис)
Керівник роботи ___________________________ Віра БАБЕНКО
(підпис)
АНОТАЦІЯ
Метою виконання даної кваліфікаційної роботи на здобуття освітнього
ступеня «бакалавр» є розробка системи автоматичного інформування про
важливі новини на базі штучного інтелекту.
Загальний обсяг роботи становить 91 сторінку. У роботі використано15
рисунків, 1 таблиця. Для виконання роботи використано 20 літературних
джерел.
Головне завдання – розроблення системи, що автоматично завантажує
новини з відомих перевірених або офіційних джерел, аналізує їх важливість за
допомогою штучного інтелекту, присвоює пріоритет від 0 до 5 та надсилає
push-сповіщення користувачам про найважливіші події через PWA-додаток.
Стислий опис розділів кваліфікаційної роботи бакалавра складається з:
– аналізу предметної області та постановки задачі;
– вибору технологій та інструментальних засобів;
– розробка системи автоматичного інформування про важливі новини на
базі штучного інтелекту та реалізації захисту системи.
Ключові слова: ШТУЧНИЙ ІНТЕЛЕКТ, АВТОМАТИЧНЕ
ІНФОРМУВАННЯ, НОВИНИ, КЛАСИФІКАЦІЯ, ПРІОРИТЕТНІСТЬ, PUSH-
НОТИФІКАЦІЇ, PWA-ДОДАТОК, ПАРСИНГ НОВИН, АНАЛІЗ ТЕКСТУ,
СИСТЕМА СПОВІЩЕННЯ
ANOTATION
The purpose of this qualification work for the degree of Bachelor is to develop
a system for automatic information about important news based on artificial
intelligence.
The total volume of the work is 91 pages. The work uses 15 figures, 1 table.
20 literary sources were used to perform the work.
The main task is to develop a system that automatically downloads news from
well-known verified or official sources, analyzes their importance using artificial
intelligence, assigns a priority from 0 to 5 and sends push notifications to users about
the most important events via the PWA application.
A brief description of the sections of the bachelor's qualification work consists
of:
– analysis of the subject area and statement of the task;
– selection of technologies and tools;
– development of a system for automatic information about important news
based on artificial intelligence and implementation of system protection.
Key words: ARTIFICIAL INTELLIGENCE, AUTOMATIC
INFORMATION, NEWS, CLASSIFICATION, PRIORITY, PUSH
NOTIFICATIONS, PWA APPLICATION, NEWS PARSING, TEXT ANALYSIS,
NOTIFICATION SYSTEM.
ЗМІСТ
ВСТУП……………………………………………………………………………..4
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ…….…..7
1.1 Аналіз існуючих систем………………………...………….…………..7
1.2 Постановка задачі………...………………………………………...…15
1.3 Висновок до розділу…… ………………………………….…………20
2 ВИБІР ТЕХНОЛОГІЙ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ………......21
2.1 Огляд існуючих технологій……………………………….………….21
2.2 Обґрунтування вибору…..………………………………………...….31
2.3 Висновок до розділу ……………………………………….…………36
3 РОЗРОБКА СИСТЕМИ АВТОМАТИЧНОГО ІНФОРМУВАННЯ ПРО
ВАЖЛИВІ НОВИНИ НА БАЗІ ШТУЧНОГО ІНТЕЛЕКТУ……………...38
3.1 Структура системи……………...………………………………..…...38
3.2 Опис функцій системи………………………………………………..43
3.3 Технічні вимоги для роботи з системою…………………………….48
3.4 Оцінка ефективності………………………………………………….51
3.5 Висновки до розділу………………………………………………….53
4 ЗАХИСТ СИСТЕМИ АВТОМАТИЧНОГО ІНФОРМУВАННЯ ПРО
ВАЖЛИВІ НОВИНИ НА БАЗІ ШТУЧНОГО ІНТЕЛЕКТУ …..……...…55
4.1 Огляд існуючих рішень …………………..………….………………55
4.2 Реалізація захисту даних користувачів……………………….….….59
4.3 Висновки до розділу…………..…………………………….…….….64
ВИСНОВКИ……………………………………………………………………..65
ЧДТУ.252178.002 ПЗ
Змн. Арк. № докум. Підпис Дата
РозрКобив Владислав Діхтярук Системи а Літ. Лист Листів
Керівник Бабенко В.Г. іннфовоирнмиувнаан
внтяопмраотвиачжнлоигвоі 2 91
Рецеанзент Зажома В.М. базі штучного
Н.Контроль Гресько С.О. інтелекту Кафедра ІБ та КІ
Затвфердив Бабенко В.Г. Пояснювальна записка гр. КМ-2105
е
д
р
а
К
К
-
0
6
ДОДАТКИ:
А – 482.ЧДТУ.52178-01 Системи автоматичного інформування про
важливі новини на базі штучного інтелекту
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ……………………………...………..90
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 3
ВСТУП
Актуальність теми. У сучасному інформаційному середовищі щодня
з’являється величезна кількість новин з різних джерел – інформаційних
агентств, новинних сайтів, соціальних мереж. Такий потік даних створює так
званий інформаційний шум, коли користувачу стає складно швидко
визначити, які з новин дійсно важливі, а які не потребують негайної уваги. У
періоди соціально-політичної нестабільності, воєнних конфліктів,
економічних криз, а також під час надзвичайних ситуацій, таких як природні
катастрофи чи техногенні аварії, ця проблема стає ще гострішою.
Своєчасне отримання перевіреної та критично важливої інформації
може впливати на безпеку людини, її здатність оперативно реагувати на
загрози, а також приймати обґрунтовані рішення. Проте користувачі не мають
змоги постійно моніторити десятки сайтів та новинних стрічок. У таких
умовах актуальним є створення інтелектуальної автоматизованої системи, яка
не лише збирає новини з надійних джерел, але й здатна самостійно аналізувати
їхній зміст, визначати рівень важливості та оперативно повідомляти
користувача про справді значущі події.
Застосування штучного інтелекту – зокрема мовних моделей, таких як
ChatGPT – відкриває нові можливості у сфері аналізу текстової інформації. Ці
моделі можуть інтерпретувати зміст новини, оцінити її за певними критеріями
важливості (наприклад, масштаб події, потенційна загроза для населення,
терміновість тощо), та присвоїти їй відповідний рівень пріоритету. Це
дозволяє користувачеві миттєво отримувати push-сповіщення про критично
важливі новини без необхідності витрачати час на перегляд великої кількості
інформаційних ресурсів.
Додаткову практичну цінність роботи надає реалізація поставленої
задачі програмно у вигляді PWA-додатку, який є легким, зручним, працює на
будь-якому пристрої з браузером та підтримує функцію миттєвих сповіщень.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 4
Це забезпечує доступність рішення для широкого кола користувачів без
потреби встановлення окремого програмного забезпечення.
Отже, створення системи автоматичного інформування про важливі
новини на базі штучного інтелекту є вкрай актуальним як у глобальному
контексті, так і з огляду на потреби звичайного користувача в сучасному
цифровому суспільстві.
Метою кваліфікаційної роботи є забезпечення ефективного доступу
до актуальної та важливої інформації шляхом розробки інтелектуальної
системи автоматичного інформування користувачів про важливі новини, яка
здійснює збір інформації з авторитетних джерел, проводить аналіз новин за
допомогою технологій штучного інтелекту, визначає рівень їхньої важливості
та забезпечує оперативне сповіщення користувачів через push-нотифікації у
PWA-додатку.
Для досягнення сформульованої мети необхідно вирішити такі задачі:
1. Провести аналіз існуючих методів та інструментів автоматичного збору,
аналізу та класифікації новин з використанням штучного інтелекту;
визначити їх переваги, недоліки та можливості інтеграції.
2. Розробити концептуальну модель інтелектуальної системи
інформування, яка включає модулі збору, аналізу, класифікації новин та
механізм нотифікацій.
3. Створити алгоритми для автоматичного збору новин з обраних надійних
джерел (таких як BBC Ukraine, Hromadske, UA.NEWS), а також їх
попередньої обробки (очищення, нормалізація тексту тощо).
4. Реалізувати механізм оцінки важливості новин з використанням методів
обробки природної мови (NLP) та моделей штучного інтелекту, зокрема
GPT, для класифікації новин за пріоритетністю від 0 до 5.
5. Розробити систему push-сповіщень, яка оперативно інформуватиме
користувача про новини з високим рівнем важливості.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 5
6. Створити адаптивний PWA-додаток із сучасним інтерфейсом
користувача для зручного доступу до списку новин та керування
сповіщеннями.
7. Провести тестування розробленої системи та оцінити її ефективність,
точність класифікації новин та зручність використання для кінцевого
користувача.
На даний момент існує багато джерел інформації, книга Russell S.,
Norvig P. – “Штучний інтелект: сучасний підхід” є класичним підручником,
який охоплює основи штучного інтелекту. Вона містить теоретичні та
практичні аспекти створення інтелектуальних систем, включаючи пошук,
планування, навчання, обробку природної мови, розпізнавання образів і
прийняття рішень. Книга є основним джерелом для вивчення алгоритмів та
моделей штучного інтелекту, а також надає поглиблені знання з різних
напрямків цієї галузі. Також PWA (Прогресивні веб-додатки) – Документація
розробників Google – це офіційна документація від Google, яка містить
рекомендації та інструкції щодо створення прогресивних веб-додатків (PWA).
Вона охоплює основи розробки PWA, такі як використання service worker для
офлайн-режиму, реалізацію push-нотифікацій, покращення продуктивності та
забезпечення адаптивного інтерфейсу, що підлаштовується під різні пристрої.
Документація надає практичні поради та кроки для розробників, які бажають
створювати ефективні, надійні та зручні додатки для користувачів на всіх
типах пристроїв.
Одержані в кваліфікаційній роботі результати мають практичне
значення вона дозволяє автоматично збирати новини з авторитетних джерел,
що знижує потребу в ручному відборі та сортуванні інформації, заощаджуючи
час користувачів і забезпечуючи їх актуальною інформацією. Використання
штучного інтелекту та методів обробки природної мови дозволяє точно
класифікувати новини за рівнем важливості, що особливо важливо в умовах
інформаційного перевантаження. Реалізація push-нотифікацій забезпечує
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 6
миттєве сповіщення користувачів про новини з високим пріоритетом, що
актуально для надзвичайних ситуацій, таких як стихійні лиха чи політичні
кризи. Розробка зручного та адаптивного інтерфейсу в PWA-додатку дає змогу
користувачам отримувати доступ до важливих новин на різних пристроях без
необхідності встановлювати додаткові програми. Система також може бути
адаптована до існуючих платформ новин, що забезпечує її гнучкість і
здатність працювати з різними джерелами інформації.
Кваліфікаційна робота складається з 4-х розділів, у яких подається
інформація про:
1. Обрану предметну область дослідження та про постановку проблема;
2. Огляд існуючих технологій, за допомогою яких можна реалізувати
подібну систему та обґрунтування вибору тієї чи іншої технології;
3. Реалізацію системи: відображення структури системи, опис функцій
кожної частини системи, технічні вимоги до системи, а також практична
оцінка ефективності роботи;
4. Розробка захисту системи.
Використана література, під час написання кваліфікаційної роботи,
досить добре розкриває основні методики та підходи для розробки подібних
автоматизованих систем.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 7
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ
1.1 Аналіз існуючих систем
Портали, які створюють новини, є важливими інформаційними
ресурсами, що збирають, обробляють і публікують актуальну інформацію для
широкої аудиторії. Такі платформи можуть працювати як традиційні медіа та
в онлайн-форматі, надаючи новини в реальному часі через веб-сайти, мобільні
додатки та соціальні мережі. Такі відомі новинні портали, як BBC Ukraine,
Hromadske, UA.NEWS, публікують новини про події в Україні та світі, часто
роблячи акцент на незалежність, перевіреність інформації та оперативність.
Ці портали часто спеціалізуються на різних аспектах життя – від політики та
економіки до культури, науки та технологій.
Завдяки своїм багатофункціональним можливостям новинні портали
забезпечують користувачів доступом до різноманітних джерел інформації,
об’єднуючи в одному місці матеріали з різних видів медіа – текстові новини,
відео, інтерв’ю та репортажі. Такі платформи також можуть використовувати
аналітику, графіку, інтерактивні елементи, щоб користувачі могли отримати
не тільки факти, але й глибокі аналізи подій. Важливою характеристикою
новинних порталів є те, що вони оперативно реагують на зміни в
інформаційному середовищі, що дозволяє своєчасно висвітлювати актуальні
події, такі як катастрофи, політичні кризи чи інші надзвичайні ситуації.
Такі новинні платформи також відіграють важливу роль у формуванні
громадської думки та у забезпеченні доступу до перевіреної інформації.
Порівняно з традиційними ЗМІ, новинні портали здебільшого мають більшу
оперативність і можливість постійного оновлення контенту, що робить їх
важливими у контексті новинної політики. Вони активно використовуються
для обміну інформацією між людьми, громадськими організаціями, урядами
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 8
та іншими важливими суб’єктами.
Новини є важливим інструментом для отримання актуальної та
достовірної інформації про події, що відбуваються у світі та в їхньому
оточенні. Вони допомагають людям бути в курсі важливих змін у суспільстві,
економіці, політиці та інших сферах життя. Для багатьох людей новини
служать основним джерелом інформації про стан країни чи світу, даючи змогу
приймати обґрунтовані рішення у повсякденному житті, наприклад, при
виборі товарів і послуг, підготовці до змін на роботі або в особистому житті.
Крім того, новини відіграють ключову роль у формуванні світогляду і
громадської думки. Через новинні платформи люди отримують інформацію
про важливі події, що можуть мати довгостроковий вплив на суспільство. Це
може бути, наприклад, політичні вибори, економічні кризи чи глобальні
катастрофи. Завдяки новинам люди можуть бути більш поінформованими,
брати участь у громадських дискусіях і навіть впливати на соціальні та
політичні процеси.
Важливість новин також полягає в їхній здатності формувати культурні
та соціальні уявлення. За допомогою новин люди мають змогу дізнаватися про
різні культури, звичаї, національні та глобальні проблеми, що сприяє
формуванню більш усвідомленого і толерантного суспільства. Новини
сприяють розвитку критичного мислення, оскільки люди повинні оцінювати
інформацію, аналізувати різні точки зору та робити висновки, що є важливим
аспектом для демократичного суспільства.
Агрегатори новин – це онлайн-платформи або сервіси, які автоматично
збирають, організовують і надають користувачам новини з різних джерел.
Вони не створюють новий контент, а лише збирають новини з різних
вебсайтів, новинних порталів, блогів та інших інформаційних ресурсів,
сортують і представляють їх в зручному форматі для користувачів [1].
Агрегатори новин можуть включати як текстову інформацію, так і відео,
інтерв’ю, а також інтерактивні елементи, що допомагає користувачам
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 9
отримувати різноманітну та об’єктивну картину подій. Найпоширенішими
прикладами агрегаторів є Google News, Flipboard, Яндекс.Новини.
Необхідність агрегаторів новин виникає через великий обсяг інформації,
яку щодня публікують численні новинні платформи. Користувачам стає все
складніше вручну відслідковувати всі новини з різних джерел, тому
агрегатори пропонують зручний спосіб централізовано збирати новини,
класифікувати їх за темами, популярністю чи важливістю. Це дозволяє
заощаджувати час користувачів, які можуть швидко дізнатися останні події з
різних сфер, не відвідуючи кожен сайт окремо.
Агрегатори новин також допомагають підвищити доступність
інформації, особливо в умовах, коли новини публікуються на численних
платформах і в різних форматах. Вони можуть адаптувати новини під інтереси
користувача, пропонуючи персоналізований контент на основі його
попередніх запитів або переваг. Це дозволяє створити індивідуальну
інформаційну стрічку, яка відповідає потребам конкретного користувача, що
підвищує зручність та ефективність використання таких сервісів.
Google News – це один з найбільших агрегаторів новин, який збирає
інформацію з різних джерел і організовує її у зручний формат для
користувачів. Платформа надає новини, що оновлюються в реальному часі, на
основі алгоритмів, які аналізують популярність і важливість матеріалів.
Google News пропонує персоналізовану стрічку новин, адаптуючи її під
інтереси користувача, враховуючи його попередні пошукові запити та
взаємодію з платформою. Зовнішній вигляд порталу зображено на рисунку
1.1.
Завдяки інтеграції з іншими сервісами Google, користувачі можуть
швидко переглядати новини не лише з текстових джерел, але й відео та фото
[2]. Це робить платформу надзвичайно популярною та зручною для всіх, хто
шукає швидкий доступ до останніх новин з різних галузей.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 10
Ukr.net – один із провідних українських агрегаторів новин, що об’єднує
інформацію з численних новинних джерел, а також надає додаткові послуги,
як погода, курси валют та інші актуальні дані. Платформа дає змогу
користувачам слідкувати за новинами з політики, економіки, культури,
спорту, а також специфічними матеріалами для української аудиторії.
Зовнішній вигляд порталу зображено на рисунку 1.2.
Рисунок 1.1 – Платформа Google News
Рисунок 1.2 – Портал Ukr.net
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 11
Ukr.net має простий інтерфейс, що дозволяє зручно фільтрувати новини
за категоріями і отримувати персоналізовану інформацію. Це робить ресурс
важливим для тих, хто хоче мати швидкий доступ до актуальних подій в
Україні.
UNIAN – це одне із найбільших новинних агентств України, яке також
виконує функції агрегатора новин. Платформа забезпечує користувачів
оперативною та об’єктивною інформацією з різних джерел, публікуючи
новини з політики, економіки, науки, культури та міжнародної політики.
UNIAN має зручну навігацію, розділяючи новини на категорії та надаючи
можливість отримати свіжу інформацію в кілька кліків. Зовнішній вигляд
порталу зображено на рисунку 1.3.
Рисунок 1.3 – Портал UNIAN
Крім того, сайт активно використовує мультимедійний контент – відео,
фото та інфографіку, що робить новини більш доступними для широкої
аудиторії.
Liga.net – ще один популярний агрегатор новин в Україні, який публікує
як загальнонаціональні, так і регіональні новини. Платформа відома своїм
акцентом на бізнесову та політичну інформацію, а також вирізняєтья високою
оперативністю у висвітленні економічних подій. News.liga.net використовує
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 12
алгоритми для сортування новин за важливістю та надає користувачам
актуальну інформацію про зміни на ринку, фінансові новини, а також інтерв’ю
та аналітику. Зовнішній вигляд порталу зображено на рисунку 1.4.
Рисунок 1.4 – Портал Liga.net
Цей агрегатор став важливим інструментом для тих, хто слідкує за
новинами в бізнес-сфері та політиці.
Окрім вищезгаданих, існує безліч інших платформ, таких як RBC.ua,
ZIK.ua, Інтерфакс-Україна, що теж виконують функцію агрегаторів новин.
Ці платформи пропонують користувачам зручний доступ до новин з різних
тематичних розділів, а також дозволяють отримувати оперативну інформацію
з важливих подій в Україні та світі [3]. Вони можуть мати власні особливості
у подачі новин, як наприклад акцент на наукові чи спортивні події, залежно
від спрямованості аудиторії.
Агрегатори новин надають користувачам можливість легко знаходити
важливу та актуальну інформацію з різних джерел без необхідності
відвідувати кожен сайт окремо, що значно економить час і робить процес
споживання новин зручнішим.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 13
Телеграм-канали – це популярний формат доставки новин та іншої
інформації, який дозволяє користувачам отримувати оперативні оновлення
прямо в месенджері. Телеграм-канали часто використовуються новинними
редакціями, громадськими організаціями, політичними активістами та іншими
групами для поширення новин і аналітики. Однією з основних переваг
телеграм-каналів є їхня швидкість: вони дозволяють миттєво поширювати
важливі новини, навіть якщо вони стосуються надзвичайних ситуацій або змін
в політичному ландшафті. Канали можуть бути як загальними, так і
спеціалізованими: новини, аналітика, наукові досягнення, бізнес чи культура
– вибір величезний. Також телеграм-канали дають змогу надавати
мультимедійний контент (фото, відео, графіки), що робить інформацію більш
доступною та легко сприйнятною.
Вайбер-чати – це ще один популярний канал для розповсюдження
новин. Вайбер дозволяє створювати чати для обміну інформацією, де новини
можуть бути надіслані безпосередньо до користувачів за допомогою
месенджера. Вайбер-чати часто використовуються як для поширення новин,
так і для обговорення актуальних тем у реальному часі. Вони можуть бути
організовані як офіційними новинними агентствами, так і неформальними
групами чи громадськими ініціативами, щоб швидко передавати інформацію
або організовувати обговорення важливих подій. Зазвичай, чати обмежують
кількість учасників, щоб забезпечити якісну комунікацію, але деякі відкриті
чати можуть зібрати величезну кількість людей для обговорення
різноманітних новин.
Однією з головних переваг як Телеграм-каналів, так і Вайбер-чатів є
їхня можливість оперативно інформувати великі аудиторії без необхідності
відвідувати окремі вебсайти або новинні портали. Це створює зручний і
швидкий спосіб отримання новин безпосередньо в месенджерах, з якими
багато користувачів вже звикли працювати щодня [4]. Також, такі канали
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 14
забезпечують можливість безперервного оновлення контенту і дозволяють
користувачам взаємодіяти з інформацією через обговорення чи коментарі.
1.2 Постановка задачі
1.2.1 Опис проблематики обраної предметної області
Телеграм-канали та Вайбер-чати часто модерується адмінами або
групами осіб, які можуть обмежувати або відфільтровувати інформацію згідно
з власними переконаннями або політичними інтересами. У таких випадках
виникає проблема цензури, коли важлива або суперечлива інформація не
публікується або видаляється. Оскільки не існує загальних стандартів
модерації для всіх каналів, це може призводити до маніпуляцій і обмеження
доступу до об’єктивної інформації, що, в свою чергу, негативно впливає на
свободу слова і різноманіття думок у медіапросторі.
Також поширюється значна кількість пропаганди, дезінформації або
фейків. Оскільки на цих платформах немає жорсткої перевірки контенту,
користувачі можуть стикатися з неправдивими новинами, перекрученими
фактами чи маніпулятивними матеріалами. Іноді канали створюються з метою
поширення пропаганди або політичних маніпуляцій, що ускладнює перевірку
достовірності інформації. Такі канали можуть стати інструментами для певних
груп чи організацій, щоб впливати на громадську думку, що підвищує ризик
маніпулювання суспільством.
На відміну від офіційних новинних сайтів або агенцій, де існують
редакційні стандарти та контроль якості, Телеграм-канали та Вайбер-чати не
завжди можуть гарантувати точність чи перевірку інформації. Кожен канал
або чат може мати свою редакційну політику (або її відсутність), і тому інколи
виникає ситуація, коли користувачі отримують новини без належної
перевірки. Це може призводити до поширення неточної або застарілої
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 15
інформації, що може мати негативні наслідки для аудиторії, адже вона
покладається на такі канали як на основне джерело новин [5].
Користувачі часто не перевіряють джерела інформації, отримані через
Телеграм-канали та Вайбер-чати. Оскільки канали можуть бути анонімними
або створеними приватними особами без офіційної ідентифікації, не завжди
можна довіряти цьому контенту. Відсутність верифікації джерел робить ці
платформи вразливими до поширення чуток і ненадійної інформації, що може
призвести до непорозумінь і стресових ситуацій серед користувачів, які
приймають все за правду.
Таким чином, хоча Телеграм-канали та Вайбер-чати можуть бути
зручними і оперативними способами отримання новин, вони мають значні
недоліки: ненадійність, можливість пропаганди, дезінформації та відсутність
контролю якості контенту. Це робить їх менш надійними джерелами новин
порівняно з перевіреними медіа.
Агрегатори новин збирають і представляють велику кількість інформації
з різних джерел, проте користувачеві часто потрібно самостійно фільтрувати
та контролювати вміст, щоб знайти актуальні та важливі новини. Це може
стати проблемою, коли інформація надходить безперервно, і є ризик
пропустити важливі новини серед великої кількості менш значущих
матеріалів. Користувачі повинні витрачати час на перегляд численних новин
і робити власні висновки щодо їх важливості, що може бути виснажливим і
стресовим процесом, якщо особливо новини надходять постійно.
Агрегатори часто надають недостатню кількість інформації, яка може
привести до інформаційного перевантаження. Велика кількість новин, які
постійно оновлюються, може швидко втомити користувача, зробити процес
споживання новин важким і виснажливим. Потреба в постійному моніторингу
величезної кількості джерел і фільтрації важливої інформації може викликати
відчуття стресу, що негативно позначається на психологічному стані
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 16
користувачів. Це може спричинити «інформаційну втому», коли користувач
перестає сприймати новини як щось корисне і важливе.
Можуть видавати новини з різних джерел, але це не означає, що всі
новини є рівнозначними або релевантними для конкретного користувача. Без
механізмів персоналізації чи належного сортування користувачам часто
доводиться самостійно оцінювати важливість новин, що може бути
проблематичним. У результаті люди можуть витратити багато часу на
вивчення новин, які не мають для них великого значення, замість того, щоб
отримати лише найбільш релевантну та важливу інформацію. Це можна
призвести до втрати часу та зниження ефективності в пошуках важливих
новин.
Таким чином, хоча агрегатори новин можуть забезпечити доступ до
великої кількості інформації, користувачі часто змушені самостійно
фільтрувати новини та контролювати величезну кількість джерел, що
призводить до перевантаження інформації та відчуття стресу.
1.2.2 Обґрунтування та постановка задач, що вирішуються у
кваліфікаційній роботі
Створення системи, яка автоматично без модерації визначатиме важливі
новини та інформуватиме користувача, є надзвичайно важливим для
забезпечення ефективного доступу до актуальної та важливої інформації. Така
система дозволяє зменшити навантаження на користувачів, які постійно
стикаються з великим потоком новин і змушені вручну відбирати
найважливіше серед безлічі менш значущих матеріалів [6]. Автоматизація
процесу дозволить уникнути зайвого інформаційного перевантаження,
зосередивши увагу лише на тих подіях, які дійсно мають значення для
користувача.
Така система повинна використовувати штучний інтелект для
класифікації та аналізу новин, що дозволяє автоматично визначати їх
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 17
важливість без людського втручання. Використання сучасних алгоритмів
машинного навчання та обробки природної мови дозволяє досягти високої
точності в розпізнаванні важливих новин, таких як надзвичайні події, зміни в
політичній ситуації, економічні катастрофи тощо. Відсутність модерації
дозволяє системі працювати швидше та ефективніше, оскільки інформація не
затримується через додаткові етапи перевірки чи корекції.
Застосування штучного інтелекту – зокрема мовних моделей, таких як
ChatGPT – відкриває нові можливості у сфері аналізу текстової інформації. Ці
моделі можуть інтерпретувати зміст новини, оцінити її за певними критеріями
важливості (наприклад, масштаб події, потенційна загроза для населення,
терміновість тощо), та присвоїти їй відповідний рівень пріоритету. Це
дозволяє користувачеві миттєво отримувати push-сповіщення про критично
важливі новини без необхідності витрачати час на перегляд великої кількості
інформаційних ресурсів.
Автоматичне інформування користувача через push-повідомлення
дозволяє йому бути в курсі важливих подій без необхідності регулярно
перевіряти новини. Такий підхід не лише підвищує ефективність споживання
новин, але й забезпечує оперативність у часі. Користувач отримує інформацію
тоді, коли вона є найбільш актуальною, що дозволяє йому швидко реагувати
на події та приймати обґрунтовані рішення. Це також зменшує ризик
пропустити важливі новини, адже система буде автоматично адаптувати
повідомлення відповідно до актуальних подій та інтересів користувача.
При розробці системи, яка автоматично визначатиме важливі новини та
інформуватиме користувачів, особливу увагу потрібно приділити
забезпеченню її кросплатформенності. Це означає, що система повинна
працювати на різних операційних системах і пристроях, включаючи мобільні
телефони, планшети, десктопи та ноутбуки, незалежно від того, чи користувач
працює з Android, iOS, Windows, macOS або іншими платформами.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 18
Кросплатформне рішення дозволить залучити широку аудиторію без
обмежень щодо вибору пристрою [7].
Таке рішення має бути легким у використанні, з інтуїтивно зрозумілим
інтерфейсом, що дозволяє користувачеві отримувати важливу інформацію без
зайвих ускладнень. Система повинна бути спроектована таким чином, щоб
користувач не стикався з проблемами сумісності, незалежно від того, який
пристрій або операційну систему він використовує. Це забезпечить більш
широкий доступ до новин і дозволить досягти максимального охоплення, адже
сучасні користувачі використовують різні пристрої на протязі дня, і
можливість отримувати актуальні новини з будь-якого пристрою є важливою
вимогою.
Однією з головних переваг кросплатформних рішень є можливість
швидкого масштабування та оновлень. Розробка однієї універсальної системи
дозволяє швидко вносити зміни та вдосконалення, а також оптимізувати
продуктивність на всіх платформах. Це дає змогу зберігати узгодженість в
роботі системи та скорочує витрати часу на підтримку кількох окремих версій
для кожної платформи.
Практична цінність роботи полягає у реалізації поставленої задачі
програмно у вигляді PWA-додатку, який є легким, зручним, працює на будь-
якому пристрої з браузером та підтримує функцію миттєвих сповіщень. Це
забезпечує доступність рішення для широкого кола користувачів без потреби
встановлення окремого програмного забезпечення.
Отже, метою кваліфікаційної роботи є забезпечення ефективного
доступу до актуальної та важливої інформації шляхом розробки
інтелектуальної системи автоматичного інформування користувачів про
важливі новини, яка здійснює збір інформації з авторитетних джерел,
проводить аналіз новин за допомогою технологій штучного інтелекту,
визначає рівень їхньої важливості та забезпечує оперативне сповіщення
користувачів через push-нотифікації у PWA-додатку.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 19
Для досягнення сформульованої мети необхідно вирішити такі задачі:
8. Провести аналіз існуючих методів та інструментів автоматичного
збору, аналізу та класифікації новин з використанням штучного інтелекту;
визначити їх переваги, недоліки та можливості інтеграції.
9. Розробити концептуальну модель інтелектуальної системи
інформування, яка включає модулі збору, аналізу, класифікації новин та
механізм нотифікацій.
10. Створити алгоритми для автоматичного збору новин з обраних
надійних джерел (таких як BBC Ukraine, Hromadske, UA.NEWS), а також їх
попередньої обробки (очищення, нормалізація тексту тощо).
11. Реалізувати механізм оцінки важливості новин з використанням
методів обробки природної мови (NLP) та моделей штучного інтелекту,
зокрема GPT, для класифікації новин за пріоритетністю від 0 до 5.
12. Розробити систему push-сповіщень, яка оперативно
інформуватиме користувача про новини з високим рівнем важливості.
13. Створити адаптивний PWA-додаток із сучасним інтерфейсом
користувача для зручного доступу до списку новин та керування
сповіщеннями.
14. Провести тестування розробленої системи та оцінити її
ефективність, точність класифікації новин та зручність використання для
кінцевого користувача.
1.3 Висновки до розділу
Аналіз існуючих систем новинних порталів, агрегаторів новин та
платформ для спілкування, таких як телеграм-канали і вайбер-чати, показує,
що користувачі мають доступ до різноманітних джерел інформації, але ці
системи мають значні недоліки. Портали та агрегатори новин зручні для збору
інформації, але потребують самостійного моніторингу та можуть призвести
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 20
до перевантаження. Телеграм-канали і вайбер-чати часто мають модерацію і
можуть поширювати пропаганду.
Найбільш ефективним рішенням є створення автоматизованої системи,
яка без модерації буде визначати важливі новини та інформувати користувача
в реальному часі. Використання алгоритмів машинного навчання дозволить
сортувати новини за важливістю. Важливим є також те, щоб система була
кросплатформною і працювала на різних пристроях, забезпечуючи
доступність та зручність для користувачів без додаткових зусиль з їх боку.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 21
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЙ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ
2.1 Огляд існуючих технологій
Штучний інтелект (ШІ) – це галузь комп’ютерних наук, яка займається
створенням систем, здатних виконувати завдання, що зазвичай вимагають
людського інтелекту. Це можуть бути такі завдання, як розпізнавання мови,
зображень, розуміння текстів, навчання на основі досвіду, прийняття рішень,
прогнозування, аналіз даних тощо.
Може самостійно навчатися на основі даних. Наприклад, аналізуючи
тисячі новин, він здатен визначити, які з них зазвичай вважаються важливими.
Підвиди навчання:
– Навчання з учителем (дані мають мітки);
– Навчання без учителя (без міток);
– Підкріплювальне навчання (навчання через нагороду).
ШІ може аналізувати, інтерпретувати і навіть генерувати людську мову.
Це дозволяє йому читати новини, розуміти зміст, витягати головне або навіть
формулювати підсумки.
На основі аналізу даних ШІ може приймати рішення — наприклад,
визначати, яка новина є терміновою і надсилати сповіщення користувачу.
Сучасний ШІ може розпізнавати обличчя, об’єкти на фото, розуміти
людський голос і навіть відповідати.
Сфери застосування ШІ:
 Медицина: діагностика хвороб, аналіз знімків;
 Транспорт: безпілотні автомобілі;
 Освіта: персоналізоване навчання;
 Новини і ЗМІ: фільтрація, персоналізація контенту, аналітика;
 Бізнес: прогнозування продажів, автоматизація процесів.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 22
Штучний інтелект — це потужний інструмент, який здатен імітувати
людські когнітивні процеси і виконувати завдання, які раніше вимагали
втручання людини. Його ефективне використання дозволяє автоматизувати
рутинні процеси, аналізувати великі обсяги даних та приймати обґрунтовані
рішення в режимі реального часу [8].
Перелік основних систем і платформ, які надають можливість
використовувати штучний інтелект:
ChatGPT (OpenAI) – модель генерації тексту на базі GPT (Generative
Pre-trained Transformer). Надає відповіді на запитання, написання текстів,
програмування, аналіз інформації, підтримка розмовної мови. Зовнішній
вигляд зображено на рисунку 2.1.
Рисунок 2.1 – ChatGPT
Працює у Веб-версія, мобільний застосунок, API для інтеграції в системи та
сервіси.
Google AI/Bard/Gemini – розробка від Google на базі великої мовної
моделі Gemini (раніше Bard). Зовнішній вигляд зображено на рисунку 2.2.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 23
Рисунок 2.2 – Gemini
Це генерація тексту, аналіз інформації та його пошук.
Microsoft Copilot (на базі OpenAI GPT) – AI-асистент, інтегрований у
продукти Microsoft 365 (Word, Excel, PowerPoint). Зовнішній вигляд зображено
на рисунку 2.3.
Рисунок 2.3 – Microsoft Copilot
Допомога з документами, аналітика даних, автогенерація звітів,
створення презентацій.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 24
Claude (Anthropic) – альтернатива GPT, створена компанією Anthropic.
Зовнішній вигляд зображено на рисунку 2.4.
Рисунок 2.4 – Microsoft Copilot
Генерація тексту, безпечніша та етичніша взаємодія, використання у
чатботах та бізнес-сервісах.
Midjourney/DALL·E/Stable Diffusion – це AI-системи для генерації
зображень на основі текстових описів. Зовнішній вигляд зображено на
рисунку 2.5.
Рисунок 2.5 - Microsoft Copilot
Створення ілюстрацій, обкладинок, дизайнів, фотоманіпуляцій.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 25
Hugging Face – це платформа з відкритим кодом, яка містить тисячі
моделей ШІ. Зовнішній вигляд зображено на рисунку 2.6.
Рисунок 2.6 – Hugging Face
Обробка тексту, зображень, аудіо, переклад, класифікація, аналіз
настроїв
IBM Watson – це потужна корпоративна AI-платформа. Зовнішній
вигляд зображено на рисунку 2.7.
Рисунок 2.7 – IBM Watson
Аналіз бізнес-даних, автоматизація процесів, NLP, чат-боти для бізнесу.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 26
Meta AI (раніше Facebook AI) – напрацювання компанії Meta у сфері
ШІ. Зовнішній вигляд зображено на рисунку 2.8.
Рисунок 2.8 – Meta AI
Генерація тексту та зображень, машинне навчання, вбудовані AI-
асистенти для соцмереж.
You.com AI/Perplexity.ai – це AI-пошукові системи з можливістю
ведення діалогу. Відповіді на питання з посиланнями, аналітика, створення
звітів. Зовнішній вигляд зображено на рисунку 2.9.
Рисунок 2.9 – You.com AI/Perplexity.ai
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 27
Існує багато систем, які надають можливість використовувати штучний
інтелект – від універсальних моделей до спеціалізованих сервісів для обробки
мовлення, зображень, даних і автоматизації бізнесу [9]. Їх можна інтегрувати
у власні додатки або використовувати у вигляді готових інструментів.
Сучасні системи штучного інтелекту, такі як ChatGPT, Google Gemini,
Claude, IBM Watson та інші, повинні обов’язково мати API (Application
Programming Interface) — інтерфейс прикладного програмування, який
забезпечує можливість інтеграції їхніх функцій у сторонні програмні продукти
та сервіси.
API дозволяє розробникам підключати можливості штучного інтелекту
до власних вебзастосунків, мобільних додатків або внутрішніх корпоративних
систем без потреби створювати власні нейронні мережі з нуля. Наприклад, за
допомогою API можна реалізувати такі функції:
 автоматичний аналіз і класифікацію тексту;
 генерацію відповідей на запити користувачів;
 пошук релевантних новин;
 переклад тексту;
 обробку природної мови (NLP);
 створення візуального контенту з описів.
Наявність API робить систему масштабованою, гнучкою та легко
інтегровуваною, що є ключовим фактором у розробці будь-якої сучасної
інформаційної системи, зокрема тієї, яка автоматично інформує користувача
про важливі новини на основі ШІ [10].
Розробка кросплатформених додатків – це підхід, який дозволяє
створювати одне програмне рішення, що працює на різних типах пристроїв та
операційних системах: Windows, macOS, Android, iOS тощо. Такий підхід
значно знижує витрати часу та ресурсів у порівнянні з розробкою окремих
застосунків для кожної платформи.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 28
Одним із найбільш ефективних рішень у цьому напрямку є створення
PWA (Progressive Web Apps) – прогресивних вебдодатків. Це вебсайти, які
поводяться як нативні мобільні застосунки: їх можна встановити на головний
екран смартфона, вони працюють офлайн, надсилають push-сповіщення та
мають швидкий час завантаження. [11]
Основні переваги PWA:
 Кросплатформеність – одна кодова база для всіх платформ;
 Легка установка – не потребує публікації в App Store чи Google Play;
 Push-сповіщення – можливість інформувати користувача про важливі
події в реальному часі;
 Офлайн-режим – завдяки кешуванню даних PWA може працювати
навіть без доступу до Інтернету;
 Автоматичне оновлення – користувачі завжди мають актуальну версію
без необхідності оновлення вручну.
У контексті системи автоматичного інформування про важливі новини,
PWA є ідеальним вибором, оскільки дозволяє швидко та ефективно
доставляти критично важливу інформацію користувачам незалежно від
пристрою, яким вони користуються. Це робить систему доступною,
адаптивною та сучасною, що повністю відповідає вимогам сучасного
користувача.
Розробка простого backend-сервісу – важливий етап у створенні будь-
якої сучасної інформаційної системи, зокрема системи автоматичного
інформування про важливі новини. Backend відповідає за логіку роботи,
взаємодію з базою даних, підключення до зовнішніх API (наприклад, API
штучного інтелекту), обробку запитів від клієнтських застосунків і
повернення необхідної інформації.
Основні популярні мови програмування для створення backend:
PHP – одна з найстаріших та найпоширеніших мов для веб-розробки.
Має простий синтаксис, велику кількість готових рішень (фреймворки, CMS).
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 29
Переваги: легкість у вивченні, швидкий старт, підтримка хостингами.
Недоліки: менш сучасна архітектура, ускладнена масштабованість
великих проєктів.
Node.js – це середовище виконання JavaScript на сервері. Дає змогу
створювати дуже швидкі та асинхронні системи з низькою затримкою.
Переваги: одна мова (JavaScript) для клієнта і сервера, висока
продуктивність, популярність.
Недоліки: для складних операцій із великим навантаженням потрібна
додаткова оптимізація.
Python – універсальна мова з потужними можливостями у сфері
обробки даних, штучного інтелекту та машинного навчання. Часто
використовується для наукових і аналітичних задач.
Переваги: читабельний код, величезна кількість бібліотек (Flask,
Django), легка інтеграція з AI/ML.
Недоліки: повільніший за Node.js у плані обробки великої кількості
одночасних запитів.
Go (Golang) – мова від Google, орієнтована на простоту, високу
швидкодію і масштабованість. Ідеально підходить для систем з великим
навантаженням і мікросервісної архітектури.
Переваги: дуже висока швидкість, проста багатопоточність, сучасний
підхід.
Недоліки: менш розвинене співтовариство, менше готових рішень,
порівняно з іншими мовами.
У роботі для створення автоматичного інформування про новини вибір
мови програмування для backend залежить від багатьох факторів: досвіду
команди, специфіки задач, інтеграції з AI API, продуктивності та простоти
обслуговування [12]. Головне – створити надійний, простий у підтримці,
гнучкий backend, який забезпечить стабільну роботу системи на всіх етапах її
функціонування.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 30
Для зберігання новин у системі автоматичного інформування доцільно
використовувати неструктуровану базу даних, наприклад MongoDB. Це
обумовлено тим, що новини зазвичай мають гнучку структуру: вони можуть
містити заголовки, теги, дати, авторів, текст різної довжини, зображення,
посилання тощо. Такі дані зручно зберігати у форматі JSON або подібному,
без необхідності створювати складну схему таблиць, як у традиційних
реляційних базах даних.
MongoDB – це документоорієнтована база даних, яка зберігає
інформацію у вигляді колекцій документів (аналог таблиць у SQL), де кожен
документ – це JSON-подібна структура.
Переваги:
 Гнучкість структури даних;
 Висока швидкість запису та читання;
 Простота масштабування;
 Добре підходить для динамічних або швидко змінюваних даних.
Firebase Firestore (від Google) – хмарна база даних реального часу, яка
також використовує документоорієнтований підхід. Ідеально підходить для
мобільних та вебдодатків. Має вбудовану синхронізацію, авторизацію,
хостинг.
Плюси: інтеграція з іншими сервісами Google, простота у використанні,
підтримка offline-режиму.
Мінуси: ліміт безкоштовного тарифу, менш гнучке масштабування при
великих об’ємах [13].
CouchDB – ще одна документоорієнтована база, що підтримує
реплікацію, offline-first архітектуру та роботу через HTTP.
Плюси: підтримка конфліктів реплікації, підходить для мобільних
додатків.
Мінуси: не така швидка, як MongoDB, складніший API.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 31
Amazon DynamoDB продукт від AWS – високомасштабована NoSQL-
база даних. Підтримує як документоорієнтовані, так і key-value моделі.
Плюси: надійність, автоматичне масштабування, інтеграція з AWS
сервісами.
Мінуси: висока складність налаштування та ціноутворення [14].
Для виконання поставлених задач у кваліфікаційній роботі, де новини
мають гнучку структуру, а дані можуть часто змінюватись, MongoDB або її
аналоги є оптимальним вибором. Вони дозволяють швидко зберігати й
обробляти великі об’єми даних, масштабувати систему та легко працювати з
різними форматами інформації. Це робить систему більш адаптивною до змін
та стійкою до навантажень.
2.2 Обґрунтування вибору технологій
Розробка системи автоматичного інформування про важливі новини є
надзвичайно актуальною в сучасному світі. В умовах стрімкого розвитку подій
та великого обсягу інформації, що щодня надходить із різних джерел, люди
потребують швидкого та якісного доступу до найважливішої інформації. Така
система дозволяє оперативно повідомляти користувачів про критично важливі
події – політичні рішення, надзвичайні ситуації, зміни в законодавстві, погодні
катастрофи тощо.
Автоматичне інформування забезпечує не лише швидкість реагування,
а й зменшує ризик пропуску важливих повідомлень у потоці другорядної
інформації. Це особливо важливо для прийняття рішень, що можуть впливати
на безпеку, здоров’я або економічну стабільність громадян. Таким чином,
впровадження таких систем сприяє підвищенню поінформованості
суспільства, зміцненню комунікацій між державою, бізнесом та громадянами,
а також формуванню більш відповідального й свідомого інформаційного
середовища.
В останні роки технології штучного інтелекту (ШІ) розвиваються
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 32
надзвичайно активно, відкриваючи нові можливості для автоматизації
обробки та аналізу інформації. Саме ці технології можуть суттєво допомогти
у створенні ефективних систем автоматичного інформування про важливі
новини.
Завдяки алгоритмам машинного навчання та обробки природної мови
(NLP), ШІ здатен розпізнавати ключові події у великому потоці новин,
відсортовувати важливу інформацію, класифікувати її за тематикою та навіть
формулювати короткі, зрозумілі повідомлення для користувачів. Це значно
підвищує якість інформування та зменшує час, необхідний для передачі
актуальної інформації [15].
Крім того, ШІ може навчатися на основі уподобань користувачів,
адаптуючи подачу новин до їхніх потреб і підвищуючи релевантність
отриманих повідомлень. Отже, інтеграція штучного інтелекту у подібні
системи не лише розширює їх функціональні можливості, а й робить їх більш
гнучкими, точними та ефективними.
Для розробки системи автоматичного інформування важливо на
початковому етапі визначитися, яку саме систему штучного інтелекту
доцільно використати. Це залежить від цілей, функціональних вимог та
масштабу проєкту.
Існує кілька основних підходів, зокрема використання моделей
машинного навчання для класифікації новин, систем обробки природної мови
(NLP) для аналізу текстового контенту, а також нейронних мереж для
виявлення важливих подій або формування персоналізованих повідомлень. У
випадку, якщо система має працювати в реальному часі, варто звернути увагу
на високопродуктивні та оптимізовані моделі, які можуть швидко обробляти
великі обсяги інформації.
Таким чином, правильний вибір типу системи штучного інтелекту – це
ключовий крок, який впливає на ефективність, точність та масштабованість
майбутнього рішення.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 33
Для розробки подібної системи можна обрати ChatGPT, оскільки ця
модель штучного інтелекту має потужні можливості обробки природної мови,
аналізу тексту та генерації зрозумілих і структурованих повідомлень. ChatGPT
може швидко обробляти великі обсяги новинних даних, виявляти ключові
події та формулювати стислий і релевантний контент для користувачів.
Завдяки налаштуванню та інтеграції API, ChatGPT може адаптуватися
до конкретних потреб системи: від автоматичної генерації коротких новинних
зведень до персоналізованого інформування користувачів на основі їхніх
уподобань. Використання цієї технології допоможе зробити систему
інформування ефективною, швидкою та доступною для широкого кола людей.
У рамках розробки системи автоматичного інформування ChatGPT
може виконувати роль інтелектуального модуля аналізу новин. Його основне
завдання – отримувати текстову інформацію про новину, аналізувати її зміст
та визначати ступінь важливості.
На основі вбудованих моделей обробки природної мови ChatGPT здатен
виявляти ключові слова, контекст подій та потенційний вплив новини на
користувачів. Після аналізу модель формує висновок щодо важливості події
та передає відповідний сигнал або повідомлення до сервісу інформування.
Таким чином, система може швидко реагувати на важливі події,
автоматично розсилаючи повідомлення користувачам або оновлюючи стрічку
новин, зберігаючи при цьому високу точність і релевантність повідомлень.
Розробку системи автоматичного інформування важливо здійснювати у
кросплатформеному вигляді, щоб забезпечити зручний доступ до сервісу для
якомога ширшого кола користувачів, незалежно від типу пристрою чи
операційної системи [16].
Підтримка різних платформ – WEB, Android, iOS – дозволяє
користувачам отримувати важливу інформацію в режимі реального часу як на
смартфонах, так і на комп’ютерах. Це особливо актуально для екстрених
повідомлень або критично важливих новин, які мають бути доставлені
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 34
миттєво, незалежно від контексту використання.
Кросплатформенність також спрощує подальше масштабування та
оновлення системи, зменшує витрати на розробку окремих рішень для кожної
платформи та забезпечує узгоджений користувацький досвід.
Для розробки кросплатформеного додатку доцільно обрати технологію
Progressive Web App (PWA). Цей підхід дозволяє створити вебдодаток, який
виглядає і працює як нативний мобільний застосунок, але водночас доступний
через браузер на будь-якому пристрої.
PWA має низку переваг: підтримка офлайн-режиму, швидке
завантаження, можливість надсилання push-сповіщень, а також встановлення
на головний екран пристрою без необхідності завантаження з App Store чи
Google Play.
Завдяки цим можливостям, використання PWA дозволяє реалізувати
систему автоматичного інформування у зручному, доступному та гнучкому
форматі, що охоплює максимально широку аудиторію користувачів.
Для розробки PWA-додатку можна використовувати лише мову
JavaScript, що робить процес створення застосунку більш простим та
доступним. JavaScript – одна з найпопулярніших і найпоширеніших мов
програмування, яка підтримується всіма сучасними браузерами і має велику
екосистему інструментів та бібліотек.
Основні переваги використання JavaScript для створення PWA:
 Універсальність – JavaScript дозволяє реалізувати як інтерфейс
користувача, так і логіку додатку, включаючи обробку запитів до
серверів, роботу з API, push-сповіщення та кешування;
 Кросплатформеність – один і той самий код JavaScript працює на будь-
якому пристрої з браузером, що спрощує підтримку і оновлення
додатку;
 Велика кількість готових рішень – доступність популярних фреймворків
(React, Vue, Angular) значно прискорює розробку і дає змогу створити
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 35
сучасний, адаптивний і зручний інтерфейс;
 Активна спільнота – завдяки великій кількості розробників, JavaScript
має потужну підтримку у вигляді документації, форумів, навчальних
матеріалів та відкритого коду;
 Інтеграція з іншими технологіями – JavaScript легко поєднується з
HTML, CSS та backend-сервісами, що дозволяє створювати повноцінні,
інтерактивні вебзастосунки.
Таким чином, використання JavaScript для створення PWA – це
ефективне, гнучке та сучасне рішення для реалізації кросплатформених
додатків.
Серверну частину системи автоматичного інформування можна
розробити за допомогою технології Node.js. Це дозволяє ефективно обробляти
запити, керувати базами даних, здійснювати інтеграцію з зовнішніми API
(наприклад, для отримання новин), а також забезпечувати зв’язок між
користувацьким інтерфейсом і внутрішньою логікою системи. Node.js
ідеально підходить для розробки сучасних вебсервісів, зокрема тих, що
потребують обробки даних у реальному часі.
Node.js також дозволяє використовувати JavaScript для розробки
серверної частини, що забезпечує єдність технологічного стеку. Це означає,
що розробники можуть використовувати одну й ту саму мову програмування
як для клієнтської, так і для серверної частини додатку, що спрощує розробку,
тестування та підтримку системи.
Для збереження даних у системі автоматичного інформування можна
використовувати неструктуровану базу даних, таку як NoSQL. Це дозволяє
зберігати дані без жорсткої структури, що ідеально підходить для роботи з
великими обсягами різноманітної інформації, як-от текстові новини, метадані,
лог-файли тощо.
Неструктуровані бази даних, наприклад, MongoDB, CouchDB або
Firebase, дають гнучкість у зберіганні даних, що дозволяє швидко адаптувати
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 36
структуру бази під змінювані вимоги без необхідності виконання складних
міграцій. Це підходить для динамічних даних, таких як новини, повідомлення
та інші елементи, які можуть мати різну структуру або часто змінюватися.
Для цього сервісу можна обрати MongoDB як базу даних, оскільки вона
є неструктурованою і добре підходить для зберігання великих обсягів даних,
таких як новини, метадані або логи подій. MongoDB дозволяє зберігати дані
у вигляді документів, що дає гнучкість у їхній організації та швидку адаптацію
до змін у вимогах системи [17].
MongoDB також забезпечує високу масштабованість і ефективну роботу
з великими обсягами інформації, що важливо для системи, яка обробляє
новини в реальному часі та потребує швидкого доступу до даних.
У результаті аналізу обраних технологій, комбінація Node.js, MongoDB
та PWA дозволяє створити потужну, гнучку та масштабовану систему
автоматичного інформування, яка буде ефективно працювати на різних
пристроях і забезпечить користувачів важливою інформацією у реальному
часі.
2.3 Висновки до розділу
У другому розділі проаналізовано сучасні технології для створення
системи автоматичного інформування про важливі новини. Штучний інтелект,
зокрема моделі на зразок ChatGPT, забезпечують ефективний аналіз текстів і
класифікацію новин за важливістю. Такі сервіси зазвичай мають API, що дає
змогу інтегрувати їх у розроблювану систему.
Обґрунтовано вибір кросплатформеного застосунку, який працюватиме
на різних пристроях, забезпечуючи доступність для широкого кола
користувачів. Для створення backend-частини доцільно використовувати
сучасні мови програмування, як-от Node.js, Python або Golang, що
забезпечують гнучкість, швидкість та легку інтеграцію з API.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 37
Для зберігання новин рекомендовано використовувати неструктуровану
базу даних MongoDB або її аналоги (Firestore, CouchDB), які добре підходять
для роботи з динамічними текстовими даними. Обрані інструменти
дозволяють створити гнучку, масштабовану та ефективну систему.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 38
РОЗДІЛ 3 СИСТЕМА АВТОМАТИЧНОГО ІНФОРМУВАННЯ ПРО
ВАЖЛИВІ НОВИНИ НА БАЗІ ШТУЧНОГО ІНТЕЛЕКТУ
3.1 Структура системи
Розроблена система складається з двох основних частин: клієнтської
частини та серверної частини.
Клієнтська частина відповідає за взаємодію з користувачем. Вона
розроблена як Progressive Web App (PWA), що дозволяє отримувати доступ до
системи через браузер на різних пристроях. PWA забезпечує швидке
завантаження, офлайн-режим, можливість надсилання push-сповіщень та
встановлення додатку на головний екран пристрою. Структура системи
зображена на рисунку 3.1.
БД Серверний додаток
MongoDB Node.js
VPS Сервер
CDN
Cloudflare Інтернет Штучний інтелект
ChatGPT
PWA
Користувацький додаток
Рисунок 3.1 – Структура системи
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 39
Серверна частина побудована за допомогою Node.js, що дозволяє
ефективно обробляти запити від користувачів, працювати з API та базами
даних. Серверна частина керує обробкою даних, визначає важливість новин
та передає відповідні повідомлення користувачам.
Обидві частини системи, клієнтська та серверна, обмінюються даними
через REST API інтерфейс. Клієнтська частина надсилає запити до серверної
частини для отримання актуальних новин, визначення їх важливості та інших
даних, а серверна частина обробляє ці запити та повертає відповідні відповіді
у форматі JSON.
Цей підхід дозволяє забезпечити чітку роздільність між частинами
системи та спрощує інтеграцію та масштабування. Використання REST API
також гарантує сумісність з різними пристроями та платформами, оскільки
HTTP-запити можуть бути оброблені будь-яким клієнтом, який підтримує
стандартні веб-технології.
HTTP запити в системі автоматичного інформування допомагають
забезпечити захист даних завдяки використанню TLS (Transport Layer
Security). Це протокол шифрування, який гарантує безпечну передачу
інформації між клієнтською та серверною частинами через інтернет.
TLS забезпечує конфіденційність та цілісність даних, запобігаючи їхній
фальсифікації або перехопленню під час передачі. Таким чином, завдяки
використанню TLS, система забезпечує високий рівень безпеки для всіх HTTP
запитів, що є критичним для захисту персональних даних користувачів і
уникнення зловмисних атак.
Серверна частина системи розміщена на VPS (Virtual Private Server), що
забезпечує надійне середовище для обробки запитів та зберігання даних. VPS
дозволяє мати власний віртуальний сервер, який повністю ізольований від
інших користувачів, що гарантує високу продуктивність та безпеку.
Це дає змогу гнучко налаштовувати серверне середовище,
контролювати ресурси та масштабувати систему відповідно до зростання
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 40
навантаження, забезпечуючи стабільну роботу навіть при великій кількості
одночасних запитів.
PWA додаток завантажується клієнтом через CDN (Content Delivery
Network), що дозволяє значно прискорити завантаження додатку.
Використання CDN гарантує, що файли додатку зберігаються на численних
серверах по всьому світу, що забезпечує їх доставку з найближчого до
користувача сервера. Це дозволяє зменшити час завантаження додатку та
покращити загальний користувацький досвід, навіть при низьких швидкостях
інтернет-з'єднання.
Для доставки PWA додатку через CDN використовується платформа
Cloudflare. Вона забезпечує швидке та надійне завантаження додатку,
використовуючи свою глобальну мережу серверів. Завдяки Cloudflare,
статичні ресурси (HTML, CSS, JavaScript, зображення тощо)
розповсюджуються по серверах, розташованих ближче до користувача, що
зменшує час завантаження та покращує загальну продуктивність додатку.
Крім того, Cloudflare також надає додаткові рівні захисту, зокрема захист від
DDoS-атак і шифрування трафіку, що підвищує безпеку системи [18].
Новини завантажуються з різних новинних платформ, і весь процес
обробки даних виконується на стороні серверу. Серверна частина системи
відповідає за підключення до зовнішніх джерел, отримання актуальних новин,
їх обробку та визначення важливості. Після цього відповідні дані передаються
клієнтській частині через API. Такий підхід дозволяє знизити навантаження
на клієнтські пристрої та забезпечити швидке та ефективне отримання
актуальної інформації.
Збереження новин у системі здійснюється за допомогою бази даних
MongoDB. Оскільки MongoDB є неструктурованою базою даних, вона
ідеально підходить для зберігання різноманітних новинних даних, таких як
текстові повідомлення, метадані, час публікації та інші деталі. Завдяки
гнучкості цієї бази даних, система може ефективно обробляти великий обсяг
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 41
новин у реальному часі та забезпечити швидкий доступ до необхідної
інформації.
Серверний додаток виставляє пріоритет для кожної новини на основі її
важливості, актуальності та інших критеріїв. Це дозволяє визначити, які
новини мають бути оприлюднені першочергово, а які можуть бути відкладені
або показані користувачам за замовчуванням. Пріоритети новин можуть
залежати від різних факторів, таких як тематика, географічна локалізація або
інтереси користувачів. Це дозволяє надавати більш персоналізовану та
релевантну інформацію, забезпечуючи високу ефективність інформування.
Для отримання пріоритету кожної новини система використовує
ChatGPT API, на яке відправляється текст новини. Штучний інтелект, за
допомогою моделі ChatGPT, аналізує зміст новини, її актуальність, значущість
та інші фактори, після чого визначає пріоритет новини. Цей процес дозволяє
автоматично класифікувати новини за важливістю та надавати користувачам
найбільш релевантну та актуальну інформацію в першу чергу.
Для комунікації з ChatGPT API використовується HTTPS протокол, що
забезпечує безпечну передачу даних між сервером та штучним інтелектом. Це
не лише гарантує конфіденційність та цілісність запитів і відповідей, але й
додає додатковий рівень захисту для системи, запобігаючи перехопленню або
модифікації даних під час передачі. Використання HTTPS допомагає
забезпечити високий рівень безпеки для всієї комунікації з ChatGPT, що є
критично важливим для захисту даних користувачів і запобігання
потенційним атакам.
PWA працює на різних платформах завдяки використанню браузерів.
Це дозволяє користувачам отримувати доступ до додатку на будь-якому
пристрої: від комп'ютерів до смартфонів, без необхідності завантажувати
додаткові програми з магазинів додатків. Завдяки цьому, PWA забезпечує
універсальний доступ до функціоналу додатку через веб-браузер, незалежно
від операційної системи, що робить його зручним і кросплатформенним
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 42
рішенням для користувачів.
PWA додаток використовує можливості браузера для кешування новин
та запитів користувача. Це дозволяє зберігати дані локально на пристрої, що
забезпечує доступ до новин навіть в офлайн-режимі. Кешування також
допомагає значно прискорити завантаження додатку, оскільки він може
використовувати збережені дані замість того, щоб кожного разу виконувати
запити до сервера. Такий підхід покращує користувацький досвід, роблячи
додаток швидким і доступним навіть при нестабільному з'єднанні з
інтернетом.
Користувацький додаток використовує авторизацію для комунікації з
сервером, що забезпечує безпечний доступ до персоналізованих даних та
функціоналу. Після того, як користувач входить у систему, авторизаційний
токен або сесійні дані зберігаються локально в браузері, що дозволяє додатку
здійснювати запити до серверу з підтвердженням особи користувача. Це
гарантує, що лише авторизовані користувачі можуть отримати доступ до
специфічних даних, таких як персоналізовані новини, налаштування або інші
функції, що потребують захисту.
Авторизація в PWA додатку виконується через JWT (JSON Web Token).
Після успішної аутентифікації користувача сервер генерує JWT, який містить
закодовану інформацію про користувача та його права доступу. Цей токен
передається на клієнтську сторону, де зберігається локально (зазвичай у
localStorage або sessionStorage).
При кожному подальшому запиті до серверу, токен додається в
заголовок запиту, що дозволяє серверу перевіряти авторизацію користувача
та підтверджувати його права доступу до захищених ресурсів. Використання
JWT забезпечує безпечний, масштабований та ефективний механізм
авторизації для системи.
Розроблена система здатна витримувати навантаження до 1000
користувачів онлайн завдяки поєднанню кількох ефективних рішень. По-
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 43
перше, використання системи кешування в PWA додатку дозволяє зменшити
кількість звернень до серверу, оскільки новини та інші дані зберігаються
локально в браузері користувача. Це значно знижує навантаження на серверну
частину при повторних запитах.
По-друге, завдяки вибору бази даних MongoDB, яка оптимізована для
швидкого читання та обробки неструктурованих даних, система забезпечує
швидкий доступ до новин навіть при великій кількості одночасних
користувачів. Така комбінація технологій дозволяє підтримувати стабільну
роботу сервісу та високу продуктивність у режимі реального часу.
3.2 Опис функцій системи
Основна функція системи – надати користувачу можливість оперативно
отримувати важливі новини. Система автоматично збирає інформацію з різних
новинних джерел, визначає її пріоритет за допомогою штучного інтелекту
(ChatGPT API) та доставляє користувачу тільки найактуальніші й значущі
новини. Це дозволяє користувачам не витрачати час на пошук інформації
вручну, а миттєво отримувати те, що дійсно має значення.
Користувач може відкрити портал, який розроблений у вигляді PWA
додатку. Розроблений портал є універсальним і підтримує відкриття як у
браузері комп’ютера, так і на мобільному пристрої. Завдяки використанню
технології Progressive Web App, портал адаптується до різних розмірів екранів,
забезпечує швидке завантаження, можливість роботи в офлайн-режимі та
встановлення на головний екран пристрою — як звичайний додаток. Це
забезпечує зручний доступ до важливих новин у будь-який час і з будь-якого
пристрою.
Мобільні браузери автоматично пропонують користувачу встановити
даний додаток на телефон, якщо він відповідає вимогам PWA. Після першого
відвідування порталу в браузері користувач бачить повідомлення з
можливістю додати додаток на головний екран.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 44
Після встановлення додаток працює як нативний – відкривається у
повноекранному режимі, має власну іконку та інтегрується з операційною
системою мобільного пристрою, забезпечуючи зручний та швидкий доступ до
важливих новин. Інтерфейс користувача зображено на рисунку 3.2.
Рисунок 3.2 – Інтерфейс користувача
Розроблена система дозволяє користувачу виконати авторизацію для
доступу до персоналізованих функцій. Зокрема, система підтримує
авторизацію через популярні соціальні мережі, такі як Google та Facebook, що
значно спрощує процес входу в систему.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 45
Користувач може швидко увійти без необхідності створювати окремий
акаунт, що покращує зручність використання сервісу та знижує бар’єр для
початку роботи. Авторизація через соцмережі також дозволяє інтегрувати
додаткові можливості, такі як збереження вподобаних новин або
персоналізація контенту.
Авторизація в системі є необхідною, зокрема для того, щоб запобігти
несанкціонованому парсингу новин іншими системами. Завдяки авторизації
доступ до новин обмежується лише зареєстрованими та автентифікованими
користувачами, що унеможливлює масове автоматичне зчитування контенту
сторонніми ботами або сервісами. Це допомагає зберігати унікальність та
цінність інформації, а також захищає систему від потенційного
перевантаження, несанкціонованого використання даних та порушення умов
обслуговування.
Після входу в систему користувач отримує від свого пристрою запит на
дозвіл на отримання push-нотифікацій. Це стандартна функція PWA-додатків,
яка дозволяє надсилати важливі повідомлення навіть тоді, коли додаток
неактивний або закритий.
Push-нотифікації використовуються для оперативного інформування
користувача про важливі новини, що дозволяє не пропустити критичну або
термінову інформацію. Користувач самостійно вирішує, чи надавати дозвіл,
але активація цієї функції значно підвищує ефективність користування
системою.
Після підписки на новини система автоматично буде надсилати push-
нотифікації користувачу у випадку надходження важливих новин. Це дозволяє
користувачу миттєво отримувати сповіщення про події, які мають високий
пріоритет, без необхідності постійно перевіряти додаток вручну.
Завдяки інтеграції з механізмами штучного інтелекту, система
самостійно визначає, які новини є дійсно важливими, і повідомляє про них у
зручному форматі – прямо на екран пристрою користувача.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 46
Користувач має можливість самостійно визначити, що вважати
важливою новиною, відповідно до власних інтересів та пріоритетів. Для
одного це можуть бути новини, пов’язані з військовими конфліктами, для
іншого – природні катаклізми або надзвичайні ситуації, а для когось -
фінансові кризи, зміни на ринку чи економічні події.
Система дозволяє налаштовувати власні категорії важливості, що
забезпечує максимально персоналізоване інформування. Завдяки цьому
користувач отримує саме ту інформацію, яка для нього дійсно має значення.
Користувач отримує готові новини, які вже були оброблені та визначені
як важливі. Всі процеси по завантаженню новин та їхній обробці, включаючи
отримання даних з різних джерел, аналіз їх значущості та пріоритету,
виконуються на стороні серверу. Це дозволяє користувачеві отримувати лише
актуальну та відповідно персоналізовану інформацію без необхідності
займатися пошуком новин чи їхнім фільтруванням самостійно.
Сервер виконує комунікацію з різними новинними платформами,
такими як Ukr.net, Unian.ua, News.liga.net та інші, для збору актуальних новин.
Він підключається до цих джерел, завантажує новини, обробляє їх та визначає
важливість на основі заданих критеріїв. Після цього оброблені новини
передаються на клієнтську частину додатку, де користувач отримує тільки
найбільш значущу та релевантну інформацію. Це дозволяє підтримувати
систему актуальною та швидко реагувати на зміни в інформаційному просторі.
У новинних платформах, таких як Ukr.net, Unian.ua, News.liga.net та
інші, є широкий спектр актуальних новин з різних тематик, таких як:
 Політика: інформація про державні рішення, законодавчі зміни,
політичні події та аналізи;
 Економіка: новини про фінансові ринки, бізнес, інвестиції, економічні
прогнози та кризові ситуації;
 Соціальні питання: події в суспільстві, зміни в соціальній політиці,
проблеми здоров'я та освіти;
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 47
 Природні катаклізми та надзвичайні ситуації: повідомлення про
землетруси, повені, стихійні лиха та інші надзвичайні ситуації;
 Культура та шоу-бізнес: новини з галузі культури, кінематографу,
музики, а також події в шоу-бізнесі;
 Спорт: останні новини зі світу спорту, результати змагань, аналізи
матчів та інші події.
Ці платформи надають постійну інформаційну підтримку, що дозволяє
серверу збирати різноманітні новини для подальшої обробки та надання
користувачеві тільки важливої та актуальної інформації.
Додаток PWA має функції кешування, що дозволяють зберігати
завантажені новини локально в кеші браузера та в localStorage. Це дозволяє
користувачам отримувати доступ до новин навіть за відсутності стабільного
з'єднання з інтернетом, а також забезпечує швидке завантаження контенту при
наступних візитах.
Новини, які вже були завантажені, зберігаються в кеші та в localStorage,
що дозволяє додатку швидко відображати їх без необхідності повторного
звернення до серверу. Це значно покращує ефективність і користувацький
досвід, оскільки зменшується час завантаження та забезпечується
безперебійний доступ до новин навіть в умовах обмеженого інтернет-
з'єднання.
Поки користувач читає новини, клієнтський додаток періодично
завантажує нові новини за допомогою технології long polling. Це дозволяє
підтримувати зв'язок з сервером в реальному часі, без необхідності постійно
оновлювати сторінку. Кожен запит до сервера чекає на відповідь і, коли нові
дані з'являються, вони передаються користувачу автоматично.
Цей механізм дозволяє зменшити навантаження на сервер і забезпечити
плавне отримання нових новин без необхідності перезавантаження додатку
або вручну оновлювати контент. Користувач отримує актуальні новини
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 48
відразу після їх появи на сервері, що забезпечує швидкий доступ до найбільш
важливої інформації.
3.3 Технічні вимоги для роботи з системою
Важливо визначити технічні вимоги, яким має задовольняти система,
щоб користувач міг ефективно використовувати даний сервіс. Сумісність з
браузерами є важливим аспектом для забезпечення універсального доступу до
системи. PWA додаток має бути сумісним з основними веб-браузерами,
такими як:
 Google Chrome;
 Mozilla Firefox;
 Safari;
 Microsoft Edge.
Це забезпечує, що користувачі, незалежно від того, який браузер вони
використовують, зможуть безперешкодно взаємодіяти з додатком.
Окрім того, мобільні браузери також повинні підтримувати функціонал
PWA, що дає можливість користувачам відкривати додаток на смартфонах і
планшетах. Важливо, щоб додаток правильно працював на таких мобільних
браузерах, як Chrome, Safari, Firefox для Android та iOS, що забезпечить доступ
до системи з різних платформ і пристроїв.
Забезпечення сумісності з браузерами дозволяє охопити широку
аудиторію, адже більшість користувачів використовують різні браузери та
пристрої для доступу до Інтернету.
Інтернет-з'єднання є важливим технічним вимогам для роботи системи,
оскільки для завантаження новин і обміну даними з сервером необхідно
стабільне підключення до Інтернету. Однак, завдяки функціональності PWA
додатку, система також повинна підтримувати офлайн-режим, що дозволяє
користувачам продовжувати перегляд новин, які були завантажені раніше,
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 49
навіть при відсутності або нестабільному з'єднанні з Інтернетом. Ключові
аспекти щодо Інтернет-з'єднання:
 Стабільне з'єднання. Для регулярного оновлення новин і надсилання
запитів до серверу користувачам необхідно мати надійне та швидке
підключення до Інтернету, особливо під час первинного завантаження
новин або отримання push-нотифікацій;
 Офлайн-режим. Оскільки додаток підтримує кешування, користувач
може отримати доступ до новин, які вже були завантажені, навіть без
підключення до Інтернету. Це важливо для користувачів, які можуть
опинитися в умовах обмеженого з'єднання або в регіонах з нестабільним
Інтернет-зв'язком.
Таким чином, хоча стабільне з'єднання є важливим для повноцінної
роботи системи, PWA додаток забезпечує користувачів можливістю
отримувати інформацію навіть при відсутності Інтернету, що підвищує
зручність використання додатку.
Продуктивність серверу є важливим аспектом для забезпечення
стабільної та швидкої роботи системи. Сервер повинен мати достатні ресурси
для обробки великої кількості одночасних запитів від користувачів, особливо
в моменти високого навантаження. Оскільки система займається збором та
обробкою новин з різних платформ, сервер повинен ефективно взаємодіяти з
численними джерелами даних, забезпечуючи швидкий доступ до актуальної
інформації.
У разі збільшення кількості користувачів сервер має бути здатний
масштабуватися, щоб підтримувати стабільну продуктивність без зниження
швидкості завантаження чи обробки запитів. Це може досягатися шляхом
використання потужних серверних технологій, балансування навантаження та
оптимізації запитів до бази даних.
Забезпечення високої продуктивності серверу дозволяє системі
надавати користувачам найактуальніші новини без затримок і зберігати
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 50
стабільність роботи навіть за умов високого попиту.
Безпека є одним з ключових аспектів для успішної роботи системи,
оскільки система обробляє чутливі дані користувачів, такі як інформація про
авторизацію та персоналізовані налаштування. Для захисту цих даних
важливо використовувати шифрування комунікацій через HTTPS, що
дозволяє забезпечити конфіденційність та цілісність даних, що передаються.
Додатково, для запобігання несанкціонованому доступу до системи,
використовується авторизація через JWT (JSON Web Tokens), що дозволяє
безпечно ідентифікувати користувачів і контролювати їх доступ до різних
функцій додатку. Такий підхід забезпечує високий рівень захисту при
взаємодії користувача з системою.
Також, для захисту від атак та несанкціонованого доступу важливо
налаштувати відповідні механізми перевірки та валідації запитів, а також
своєчасно оновлювати систему та програмне забезпечення для усунення
можливих вразливостей. Всі ці заходи сприяють забезпеченню надійної
безпеки користувацьких даних та безперебійної роботи системи.
Ресурси пристрою є важливим аспектом для ефективної роботи додатку,
особливо при використанні PWA технології. Оскільки додаток працює в
браузері та використовує кешування для зберігання новин і запитів, він
повинен оптимізувати використання ресурсів пристрою, таких як пам'ять і
процесор. Це забезпечує плавну роботу додатку навіть на пристроях з
обмеженими ресурсами, таких як старі смартфони або планшети.
Забезпечення правильного балансування використання ресурсів
дозволяє уникнути перевантаження пристрою і зменшити споживання батареї,
що особливо важливо для мобільних пристроїв. Крім того, ефективне
використання кешування дозволяє зменшити навантаження на сервер,
зберігаючи частину даних локально на пристрої, що також позитивно впливає
на загальну продуктивність.
Врахування обмежених ресурсів пристроїв дає можливість забезпечити
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 51
оптимальну швидкість роботи додатку і покращити користувацький досвід,
навіть в умовах низької потужності деяких пристроїв.
3.4 Оцінка ефективності
Оцінку ефективності розробленої системи необхідно проводити в
порівнянні з уже існуючими рішеннями на ринку. Це дозволить не тільки
визначити, наскільки система відповідає сучасним вимогам, а й виявити її
переваги та можливі недоліки. Порівняння з конкурентами дозволяє оцінити
її швидкість, зручність використання, персоналізацію новин, а також
надійність в умовах високих навантажень.
Також важливо порівняти технічні характеристики та функціональні
можливості з аналогічними системами, зокрема у плані безпеки,
масштабованості та відповідності потребам користувачів. Це дозволить не
тільки підтвердити конкурентоспроможність розробленої системи, а й виявити
можливості для її подальшого вдосконалення та оптимізації.
На ринку вже існують системи, які визначають важливі новини для своїх
користувачів. Наприклад, на порталі Ukr.net є спеціальна секція "Важливі
новини", де збираються найбільш актуальні та значущі події. Цей підхід
дозволяє користувачам швидко ознайомлюватися з новинами, які мають
найбільший вплив на суспільство або є важливими для певних категорій
людей.
Подібні рішення також використовуються іншими новинними
порталами, які спеціалізуються на визначенні пріоритетних новин на основі
певних критеріїв, таких як політична значущість, соціальний вплив чи
економічні наслідки. Це дозволяє значно полегшити користувачам доступ до
найбільш важливої та актуальної інформації, що допомагає їм залишатися в
курсі подій.
Однак, всі ці системи зазвичай модеруються людьми або
використовують прості алгоритми, які визначають важливі новини на основі
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 52
певних критеріїв. Люди можуть вручну вибирати новини, що мають
найбільший вплив, або автоматизовані алгоритми можуть аналізувати новини
за допомогою простих методів, таких як ключові слова або популярність серед
користувачів.
Проте ці підходи не завжди здатні врахувати контекст або змінюваність
важливості новин в реальному часі. У таких системах можуть бути випадки,
коли важлива новина залишиться непоміченою через обмежені можливості
алгоритмів або людської модерації. Тому для підвищення точності і
ефективності відбору важливих новин все більше уваги приділяється
впровадженню штучного інтелекту, який здатний аналізувати інформацію на
більш глибокому рівні.
Розроблена система є повністю автоматичною та не потребує модерації
з боку людей. Вона використовує штучний інтелект, зокрема API ChatGPT,
для автоматичного визначення важливості новин. Система здатна самостійно
аналізувати новини, оцінюючи їх значущість на основі контексту та
актуальності, без необхідності втручання модераторів або простих алгоритмів.
Це дозволяє знизити людський фактор і забезпечити більш об'єктивне
та швидке реагування на важливі події. Завдяки такому підходу, система
постійно і автоматично актуалізує новини, що дозволяє користувачам
отримувати тільки найбільш значущу та релевантну інформацію в реальному
часі.
Тому варто провести аналіз та порівняння між модерованою системою
та розробленою автоматизованою системою. Модеровані системи зазвичай
залучають людей або прості алгоритми для визначення важливості новин, що
може призводити до певних обмежень у швидкості оновлення і точності
відбору. Людська модерація може бути суб'єктивною або обмеженою в
можливостях для обробки великої кількості новин.
З іншого боку, розроблена автоматизована система використовує
штучний інтелект для безперервного, об'єктивного та швидкого аналізу новин,
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 53
що дозволяє досягти більш високого рівня точності та актуальності
інформації. Така система може швидше реагувати на зміни в новинах і
автоматично визначати, що є важливим для користувачів.
Порівняння цих двох підходів допоможе оцінити переваги і недоліки
кожного з них, а також зрозуміти, чи може автоматизація дати кращі
результати, ніж традиційні методи модерації новин.
Таблиця 3.1 – Порівняння вартості обслуговування систем
Модерована система Розроблена система
Обслуговування серверу $15.00 в місяць $15.00 в місяць
Адміністрування контенту $200.00 в місяць $0.00 в місяць
Використання штучного $0.00 в місяць $20.00 в місяць
інтелекту
Базуючись на проведеному аналізі, можна зробити висновок, що
обслуговування автоматизованої системи є значно меншим, ніж у
модерованих системах. Автоматизація процесу дозволяє знизити потребу в
людському втручанні, що, в свою чергу, зменшує витрати часу і ресурсів на
модерацію новин.
Однак, незважаючи на знижене обслуговування, швидкість виявлення
важливих новин і якість їх визначення значно вища в автоматизованій системі.
Використання штучного інтелекту для автоматичного аналізу новин дозволяє
оперативно та точно оцінювати важливість подій, без затримок і людських
помилок, що забезпечує більш актуальні та релевантні новини для
користувачів. Таким чином, автоматизована система є більш ефективною у
плані своєчасності та якості доставки важливих новин.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 54
3.5 Висновки до розділу
У цьому розділі представлено реалізацію системи автоматичного
інформування про важливі новини, яка складається з двох основних частин:
клієнтської та серверної. Клієнтська частина реалізована у вигляді
кросплатформеного Progressive Web App-додатку, що дозволяє зручно
працювати з системою з будь-якого пристрою – як з комп’ютера, так і зі
смартфона. PWA забезпечує швидке завантаження, підтримку офлайн-
режиму, push-сповіщення та можливість встановлення на головний екран, що
значно підвищує зручність користування.
Система автоматично збирає новини з перевірених інформаційних
порталів, аналізує їх важливість за допомогою інструментів штучного
інтелекту (зокрема, через ChatGPT API) і на основі цього надсилає
користувачу лише найзначущі події. Це дозволяє уникнути перевантаження
інформацією та зосередитися на справді важливих новинах.
Портал є адаптивним і оптимізованим для різних екранів, що робить
доступ до новин простим і швидким у будь-який момент. Технічна реалізація
забезпечує стабільну та ефективну роботу системи, а проведена оцінка
підтвердила її точність, швидкодію та зручність для кінцевих користувачів.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 55
РОЗДІЛ 4 ЗАХИСТ СИСТЕМИ АВТОМАТИЧНОГО
ІНФОРМУВАННЯ ПРО ВАЖЛИВІ НОВИНИ НА БАЗІ ШТУЧНОГО
ІНТЕЛЕКТУ
4.1 Огляд існуючих рішень
Захист інформації при використанні штучного інтелекту є надзвичайно
важливим аспектом, особливо в умовах зростаючого обсягу обробки
персональних та чутливих даних. Системи штучного інтелекту часто
взаємодіють з великими масивами інформації, яка може містити особисті,
фінансові, медичні або інші конфіденційні відомості. Тому необхідно
забезпечити належний рівень безпеки як під час збору, так і в процесі обробки
та зберігання даних.
Один із ключових принципів – це дотримання вимог до
конфіденційності, які включають шифрування даних на всіх етапах: під час
передачі (наприклад, за допомогою HTTPS), при зберіганні (через
використання алгоритмів шифрування даних у базах даних), а також під час
обробки. Крім того, важливо обмежувати доступ до даних лише
авторизованим користувачам або сервісам і впроваджувати системи
автентифікації та контролю доступу.
Особливу увагу слід приділяти питанням прозорості алгоритмів ШІ та
уникненню витоків даних через API. Оскільки багато сервісів ШІ (зокрема,
ChatGPT API) працюють у хмарі, важливо враховувати політику обробки
даних, яка визначає, які дані зберігаються, передаються або використовуються
для подальшого навчання моделей. Для забезпечення високого рівня безпеки
рекомендується використовувати сервіси, які відповідають міжнародним
стандартам захисту даних (наприклад, GDPR, ISO/IEC 27001) [19].
Таким чином, для ефективного та безпечного використання штучного
інтелекту в інформаційних системах необхідно впроваджувати комплексний
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 56
підхід до захисту даних, що поєднує технічні засоби безпеки, правові норми
та етичні принципи роботи з інформацією.
Захист інформації при роботі з інформаційними системами, особливо
тими, що працюють з персональними даними користувачів або застосовують
штучний інтелект, є критично важливим аспектом. Надійна система безпеки
включає кілька рівнів захисту: авторизацію, автентифікацію та використання
сучасних методів передачі даних, таких як JWT токени.
Автентифікація – це процес перевірки особи користувача, який
намагається отримати доступ до системи. Це перший і базовий етап захисту
інформації. Найпоширенішим методом є введення логіна та пароля. У більш
безпечних системах додаються двофакторна автентифікація (2FA) або
біометричні методи, як-от сканер відбитків пальців або розпізнавання
обличчя. Мета автентифікації – переконатися, що саме той користувач, за
якого себе видає особа, входить у систему.
Авторизація – це процес надання користувачеві дозволів після успішної
автентифікації. Іншими словами, авторизація визначає, що саме може робити
користувач у системі: переглядати певні дані, редагувати, видаляти,
створювати нові записи тощо. Наприклад, користувач із правами “читача” не
зможе видалити новини чи налаштовувати систему, як це може зробити
адміністратор.
JWT токени (JSON Web Token) – це сучасний та зручний спосіб
керування автентифікацією та авторизацією в веб-додатках. Після успішного
входу користувача система генерує токен, який кодує інформацію про
користувача та його права доступу. Токен надсилається клієнту (наприклад,
браузеру) й зберігається у вигляді cookies або localStorage.
При кожному наступному запиті клієнт надсилає токен серверу, і той,
розшифровуючи токен, перевіряє доступ та ідентичність користувача, не
вимагаючи повторного входу.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 57
Основні переваги JWT дані всередині токена підписані та не можуть
бути змінені сторонніми особами. Простота інтеграції з фронтендом і
бекендом. Підходить для мікросервісної архітектури та API.
Щоб забезпечити надійний захист інформації в системі, важливо:
 Впровадити надійні паролі та політику їх зміни;
 Використовувати шифрування HTTPS для всіх запитів;
 Реалізувати JWT для авторизації та зберігання сесій;
 Встановити рівні доступу (ролі) та чітко їх обмежити;
 Застосувати логування дій користувачів та виявлення підозрілих дій.
Таким чином, комплексний підхід до авторизації, автентифікації та
використання JWT токенів дозволяє створити безпечну, сучасну та ефективну
систему, яка надійно захищає дані користувачів та зменшує ризики
несанкціонованого доступу [20].
Захист інформації при збереженні даних у базі даних є критично
важливим аспектом інформаційної безпеки будь-якої системи. Особливо це
стосується систем, які працюють з персональними даними користувачів або
обробляють чутливу інформацію, як-от новинні системи з елементами
штучного інтелекту. Основні методи захисту бази даних включають
шифрування, контроль доступу, аудит, резервне копіювання та ізоляцію
середовищ.
Шифрування – це перетворення даних у формат, що незрозумілий без
спеціального ключа дешифрування. Воно може бути реалізоване на двох
рівнях шифрування даних на рівні поля (field-level encryption) – наприклад,
паролі, електронна пошта, токени та шифрування на рівні всього сховища або
файлу (disk/database-level encryption) – наприклад, MongoDB підтримує
Encrypted Storage Engine, що дозволяє шифрувати весь вміст бази.
Паролі ніколи не зберігаються у відкритому вигляді – вони хешуються
з використанням надійних алгоритмів, як-от bcrypt, scrypt, або Argon2.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 58
Надання доступу до БД має бути максимально обмеженим. У кожної
ролі – свої права: лише читання, лише запис, повний доступ тощо. Секрети
доступу (логін/пароль до БД) не зберігаються в коді – їх варто зберігати у
середовищі (environment variables) або спеціальних сховищах (Vault, AWS
Secrets Manager). Використовуються білі списки IP-адрес, яким дозволений
доступ до бази.
Система має вести журнал доступу до бази даних хто, коли і які операції
виконував. Це дозволяє виявити спроби несанкціонованого доступу та
реагувати на інциденти безпеки. У MongoDB, наприклад, можна увімкнути
audit log, який записує дії адміністраторів та користувачів.
Регулярне створення резервних копій бази даних – обов’язкова вимога.
Бекапи повинні зберігатися у захищеному вигляді (зашифровані). Необхідно
перевіряти працездатність копій – відновлення має працювати на тестовому
середовищі.
Розробка, тестування та продакшн повинні мати окремі бази даних, щоб
уникнути випадкової втрати або витоку реальних даних. Також слід
відокремлювати сервер бази даних від веб-доступу (використання окремих
внутрішніх мереж або VPN).
Захист від SQL/NoSQL-інʼєкцій у випадку SQL: використання
параметризованих запитів або ORM. У випадку MongoDB: валідація вхідних
даних, перевірка типів, використання бібліотек типу Mongoose з обмеженнями
на поля.
Захист інформації в базі даних – це не одна дія, а система заходів, що
включає шифрування, обмеження доступу, регулярне резервне копіювання,
аудит, ізоляцію середовищ і захист від інʼєкцій. Реалізація цих методів
забезпечує надійне збереження даних, знижує ризики витоку інформації та
гарантує безпечну роботу системи в цілому.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 59
4.2 Реалізація захисту користувачів
Для розробки подібних систем важливо враховувати аспекти безпеки
користування, збереження даних та роботи з ними. Оскільки система працює
з чутливою інформацією користувачів, включаючи їхні налаштування та
авторизаційні дані, необхідно забезпечити високий рівень захисту цих даних.
Зокрема, слід приділяти увагу шифруванню даних під час їх передачі
через Інтернет, використовуючи HTTPS та TLS, щоб запобігти перехопленню
або модифікації інформації. Також важливо правильно налаштувати
зберігання даних на сервері та в базах даних, забезпечивши їхню цілісність і
доступність лише для авторизованих користувачів.
Також, треба враховувати управління доступом до даних, щоб уникнути
несанкціонованого доступу до особистої інформації. Всі ці аспекти необхідно
ретельно інтегрувати в архітектуру системи, щоб забезпечити
конфіденційність, цілісність і доступність даних при їх обробці та зберіганні.
Розроблена система комунікує з сервером через HTTPS протокол, що
забезпечує захищену передачу даних між клієнтом і сервером. Використання
HTTPS є важливим аспектом безпеки, оскільки цей протокол шифрує
інформацію, що передається, захищаючи її від можливих атак, таких як
перехоплення або модифікація даних під час їх транспортування. Це критично
важливо, особливо коли система обробляє чутливу інформацію користувачів,
таку як авторизаційні дані та персоналізовані налаштування.
Крім того, HTTPS забезпечує вірність переданої інформації,
гарантуючи, що дані, які надсилаються клієнтом, не будуть змінені або
підроблені третьою стороною. Використання цього протоколу також дозволяє
користувачам бути впевненими, що вони взаємодіють із справжнім сервером,
а не з потенційно шкідливим джерелом. Всі ці фактори разом забезпечують
надійний захист даних і підвищують рівень довіри до системи.
Додаток PWA також є захищеним завдяки кільком важливим аспектам,
що забезпечують безпеку при його використанні. Оскільки PWA працює в
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 60
браузері, він наслідує всі безпекові можливості браузерів, зокрема,
використання HTTPS для захищеної передачі даних між сервером і клієнтом.
Це забезпечує шифрування даних, захищаючи їх від перехоплення під час
обміну між користувачем та сервером.
Додатково, служба кешування PWA використовує безпечні механізми
для зберігання даних локально на пристрої, забезпечуючи їх доступність
навіть при відсутності з'єднання з Інтернетом. Кешування працює за певними
правилами безпеки, щоб уникнути зберігання чутливої або важливої
інформації без належного захисту.
Окрім цього, PWA додатки мають обмеження по доступу до системних
ресурсів пристрою, що додатково знижує ризики. Наприклад, вони не мають
доступу до файлової системи або іншим чутливим даним пристрою без явного
дозволу користувача, що гарантує безпеку даних.
Ці всі заходи забезпечують високий рівень захисту, що робить PWA
додаток безпечним і надійним для користувачів.
Вся інформація, що завантажується з новинних платформ, зберігається
в базі даних з обов'язковим зазначенням першоджерела. Це важливо не лише
для забезпечення правильності та достовірності інформації, а й для захисту
авторських прав. Кожна новина має свого початкового автора або платформу,
яка її опублікувала, і це потрібно відображати в базі даних, щоб уникнути
порушення прав власників контенту.
Збереження інформації про першоджерело також сприяє прозорості та
підвищує довіру до системи. Користувачі можуть перевірити, з якого саме
ресурсу була отримана новина, що забезпечує можливість підтвердження
достовірності інформації та її правдивості. Крім того, вказівка на
першоджерело дозволяє системі дотримуватися норм авторського права,
оскільки дозволяє відслідковувати джерело публікації і уникати незаконного
копіювання контенту.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 61
Таким чином, правильне зберігання інформації про першоджерело не
тільки підвищує юридичну безпеку системи, але й допомагає дотримуватися
етичних норм, поважаючи права авторів новин. Це також може допомогти у
випадку юридичних спорів, якщо виникнуть питання щодо використання
контенту з новинних платформ.
Сервер, на якому зберігається вся інформація, працює на базі
операційної системи Ubuntu. Цей вибір надає певний рівень захисту завдяки
надійності та стабільності Ubuntu, яка є однією з найпопулярніших
операційних систем для серверів. Вона регулярно отримує оновлення безпеки,
що забезпечує захист від відомих вразливостей і дозволяє підтримувати сервер
у актуальному стані з точки зору захисту від шкідливих програм і атак.
Ubuntu також підтримує різні інструменти для налаштування та
посилення безпеки, такі як AppArmor та UFW (Uncomplicated Firewall), що
дозволяють налаштувати доступ до сервера та обмежити можливості для
зовнішніх атак. Завдяки своїй відкритій природі та великій спільноті
користувачів, Ubuntu забезпечує широкий доступ до інструментів для
моніторингу та управління безпекою, що ще більше підвищує захищеність
інформації, що зберігається.
Цей вибір операційної системи дозволяє забезпечити високий рівень
захисту даних, що зберігаються на сервері, і є важливим елементом для
забезпечення надійності і безпеки всієї системи в цілому.
Важливим аспектом є постійна підтримка сервера та всіх технологій,
використаних у системі, в актуальному та оновленому стані. Це включає в
себе регулярне оновлення операційної системи, програмного забезпечення та
всіх компонентів, таких як база даних, серверне програмне забезпечення та
бібліотеки, що використовуються у розробці. Регулярні оновлення
забезпечують не лише нові функціональні можливості, а й виправлення
вразливостей безпеки, що можуть бути знайдені в старіших версіях програм.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 62
Підтримка технологій в актуальному стані є критично важливою для
збереження стабільності та надійності роботи системи, а також для захисту
від потенційних атак, які можуть виникнути через використання застарілих
версій програмного забезпечення. Це дозволяє забезпечити високу
продуктивність та безпеку серверної частини системи, що зберігає чутливі
дані та забезпечує коректну роботу всіх сервісів, зокрема взаємодії з
новинними платформами та авторизацією користувачів.
Отже, своєчасне оновлення всіх складових системи є важливим кроком
для збереження її ефективності, безпеки та довготривалої працездатності.
Попри те, що розроблена система є публічною, вона все ж має систему
авторизації, яка дозволяє переглядати новини тільки для авторизованих
користувачів. Це дає можливість контролювати доступ до певних функцій
системи, таких як персоналізовані налаштування новин або історія переглядів,
що можуть бути важливими для підвищення користувацького досвіду.
Авторизація необхідна для запобігання несанкціонованому доступу до
чутливої інформації та можливості персоналізації сервісу. Крім того, вона
дозволяє уникнути потенційних проблем, таких як парсинг новин або
використання системи сторонніми особами без належного дозволу. Завдяки
цьому, система залишається захищеною, і лише авторизовані користувачі
можуть отримати доступ до важливих новин або персоналізованого контенту.
Розроблена система використовує авторизацію через соціальні мережі,
що є важливим елементом безпеки. Такий підхід не лише спрощує процес
входу для користувачів, але й суттєво зменшує ймовірність реєстрації ботів в
системі. Використання соціальних мереж для авторизації дозволяє перевірити
достовірність користувача через його профіль в таких мережах, як Google або
Facebook, що значно ускладнює створення фальшивих облікових записів.
Крім того, цей метод авторизації додає ще один рівень захисту, оскільки
сервіси соціальних мереж застосовують власні механізми виявлення та
блокування ботів, що додатково підвищує безпеку системи. Завдяки такому
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 63
підходу, система отримує більше гарантій того, що її користувачі є реальними
людьми, а не автоматизованими програмами.
Усі дані, що передаються між клієнтом (користувачем) і сервером,
повинні бути захищені від перехоплення, модифікації або підміни. Особливо
це важливо для персональних даних користувачів, токенів авторизації,
результатів роботи штучного інтелекту тощо. Ось основні методи та засоби,
які забезпечують захист переданих даних:
Найбільш базовий, але надзвичайно важливий крок – це використання
захищеного протоколу HTTPS, який працює поверх протоколу SSL/TLS.
HTTPS шифрує всі запити й відповіді між клієнтом і сервером. Навіть якщо
дані будуть перехоплені, зловмисник не зможе їх розшифрувати без
відповідного ключа. Наявність валідного SSL-сертифіката на сервері є
обов’язковою вимогою для будь-якого сучасного вебдодатку.
Валідація запитів та захист від атак типу “man-in-the-middle” (MITM).
Користувач має працювати тільки з перевіреними доменами (перевіряється
цифровий сертифікат). Сервер перевіряє, що запит дійсно надійшов від
авторизованого джерела. У разі використання токенів (наприклад, JWT), вони
передаються тільки по HTTPS – ніколи не у відкритому вигляді.
Для доступу до API використовуються авторизаційні токени, які
шифруються та мають обмежений термін дії. Кожен клієнт може мати свій
API-ключ, що обмежує доступ лише до потрібних функцій. Запити без
авторизації або з недійсним токеном повинні блокуватись.
Впровадження CORS (Cross-Origin Resource Sharing) контролює, з яких
доменів дозволено надсилати запити до API. Це обмежує можливість
зловмисників надсилати запити до API з інших сайтів. Виявлення і запобігання
підробленим запитам (CSRF-захист). Захист від атак типу CSRF (Cross-Site
Request Forgery) реалізується шляхом перевірки CSRF-токенів, які
генеруються сервером і валідуються при кожному запиті.
Обмеження швидкості запитів (Rate Limiting). Обмеження кількості
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 64
запитів від одного IP-адреса або токена зменшує ризик DDoS-атак або
брутфорсу авторизаційних даних.
Захист інформації при передачі даних через Інтернет реалізується через
використання шифрування (HTTPS), авторизаційних токенів, перевірки
джерел запиту, захисту від атак MITM, CSRF і CORS, а також засобів
обмеження частоти запитів. Всі ці заходи працюють разом і забезпечують
безпечну та надійну взаємодію клієнта із сервером у сучасному
вебсередовищі.
4.3 Висновки до розділу
У цьому розділі було розглянуто основні аспекти захисту системи
автоматичного інформування про важливі новини на базі штучного інтелекту.
Оскільки система працює з персональними даними користувачів та взаємодіє
з AI-сервісами, особлива увага була приділена безпеці як на етапі обробки, так
і при зберіганні та передачі даних.
Захист реалізовано на кількох рівнях:
 Авторизація та автентифікація здійснюються за допомогою JWT-
токенів, що дозволяє обмежити доступ до системи лише для перевірених
користувачів;
 Шифрування даних при передачі здійснюється через HTTPS (SSL/TLS),
що запобігає їх перехопленню чи модифікації;
 База даних захищена механізмами контролю доступу, а також
налаштуванням обмежень на зберігання чутливої інформації;
 PWA-додаток додатково захищений за рахунок безпечного кешування,
обмеженого доступу до ресурсів пристрою та стандартів безпеки
сучасних браузерів.
Усі ці заходи гарантують конфіденційність, цілісність і доступність
інформації, створюючи надійну та безпечну архітектуру системи.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 65
ВИСНОВКИ
У ході виконання кваліфікаційної роботи бакалавра було проведено
всебічний аналіз існуючих систем подачі новин, включаючи новинні портали,
агрегатори та платформи для обміну інформацією, такі як Telegram-канали та
Viber-чати. Встановлено, що хоча ці інструменти забезпечують широкий
доступ до новин, вони не позбавлені суттєвих недоліків – інформаційне
перевантаження, необхідність ручного моніторингу та ймовірність
потрапляння на недостовірні або пропагандистські матеріали.
На основі проведеного аналізу було обґрунтовано доцільність створення
автоматизованої системи інформування, яка за допомогою штучного інтелекту
здійснює фільтрацію та оцінку новин за їхньою важливістю. Такий підхід
дозволяє користувачам миттєво отримувати лише справді значущі події без
необхідності самостійно їх шукати чи перевіряти достовірність. Для цього
використано API ChatGPT, що забезпечує глибоку семантичну обробку текстів
та інтелектуальну класифікацію контенту.
Розроблена система складається з клієнтської частини у вигляді
кросплатформеного Progressive Web App-додатку та серверної частини,
реалізованої з використанням сучасних мов програмування. Такий підхід
забезпечує зручність, доступність і швидкодію сервісу на різних типах
пристроїв – як на комп’ютерах, так і на мобільних гаджетах.
Окрему увагу в роботі приділено питанням інформаційної безпеки. У
системі впроваджено багаторівневий захист: авторизація та автентифікація
через JWT-токени, шифрування даних за допомогою HTTPS-протоколу,
обмеження доступу до бази даних, безпечне кешування в PWA-додатку. Усі
ці заходи дозволили забезпечити конфіденційність, цілісність та доступність
персональних даних користувачів.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 66
Таким чином, у результаті дослідження та практичної реалізації було
створено сучасну, зручну й безпечну систему автоматичного інформування
про важливі новини, яка відповідає актуальним вимогам користувачів і має
значний потенціал для подальшого розвитку та масштабування.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 67
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. John D. Kelleher, John Mac. Carthy Fundamentals of Machine Learning for
Predictive Data Analytics. MIT Press. 2015. 350 p.
2. Ian Goodfellow, Yoshua Bengio, Aaron Courville.Deep Learning. MIT Press.
2016. 800 p.
3. Stuart J. Russell, Peter Norvig. Artificial Intelligence: A Modern Approach.
Pearson. 2021. 1136 p.
4. Géron Aurélien. Hands-On Machine Learning with Scikit-Learn, Keras, and
TensorFlow. O’Reilly Media. 2022. 896 p.
5. Luger George F. Artificial Intelligence: Structures and Strategies for Complex
Problem Solving. Addison-Wesley. 2021. 784 p.
6. Alpaydin Ethem. Introduction to Machine Learning. MIT Press. 2020. 640 p.
7. Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze. Introduction
to Information Retrieval. Cambridge University Press. 2008. 496 p.
8. Chollet François. Deep Learning with Python. Manning Publications. 2021.
504 p.
9. Sebastian Raschka, Vahid Mirjalili. Python Machine Learning. Packt
Publishing. 2020. 770 p.
10.Nixon Robin. Learning PHP, MySQL & JavaScript. O’Reilly Media. 2022.
832 p.
11.White Tom. Hadoop: The Definitive Guide. O’Reilly Media. 2021. 800 p.
12.Mario Casciaro, Luciano Mammino. Node.js Design Patterns. Packt
Publishing. 2020. 646 p.
13.Lynn Beighley, Michael Morrison. Head First PHP & MySQL. O’Reilly
Media. 2021. 812 p.
14.Grinberg Miguel. Flask Web Development. O’Reilly Media. 2018. 258 p.
15.Lakshmanan Kartik. Pro MongoDB Development. Apress. 2022. 380 p.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 68
16.Newman Sam. Building Microservices. O’Reilly Media. 2021. 450 p.
17.Wieruch Robin. The Road to React. Independently Published. 2021. 280 p.
18.Nixon Robin. Learning Web Development with React and Bootstrap. O’Reilly
Media. 2022. 544 p.
19.Moroney Laurence. AI and Machine Learning for Coders. O’Reilly Media.
2020. 390 p.
20.Mehta Nishant. Applied Machine Learning and AI for Engineers. BPB
Publications. 2021. 450 p.
Лист
ЧДТУ.252178.002 ПЗ т
Зм. Лист № докум. Підпис Дата 69

ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор Віра БАБЕНКО
__________________
«___» ____________ 2025 року
Система автоматичного інформування про важливі новини на
базі штучного інтелекту
Специфікація
482.ЧДТУ.52178-01
Листів 2
Розробник ______________ Владислав ДІХТЯРУК
Керівник ______________ Віра БАБЕНКО
Черкаси 2025
2
482.ЧДТУ.52178-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.52178-01 12 01 Текст програми
482.ЧДТУ.52178-01 34 01 Інструкція користувача
ДОДАТОК Б
Система автоматичного інформування про важливі новини на
базі штучного інтелекту
Текст програми
482.ЧДТУ.52178-01 12 01
Листів 17
Розробник: Владислав ДІХТЯРУК
Черкаси 2025
2
482.ЧДТУ.52178-01 12 01
const axios = require('axios');
const cheerio = require('cheerio');
async function fetchNewsFromUkrNet() {
const url = 'https://www.ukr.net/';
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const articles = [];
$('.news-item__title').each((index, element) => {
const title = $(element).text();
const link = $(element).attr('href');
const date = $(element).closest('.news-item').find('.news-item__time').text();
articles.push({ title, link, date, source: 'Ukr.net' });
});
return articles;
}
async function fetchNewsFromUNIAN() {
const url = 'https://www.unian.ua/';
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const articles = [];
$('.news-title').each((index, element) => {
const title = $(element).text().trim();
const link = $(element).find('a').attr('href');
const date = $(element).closest('.news-item').find('.date').text().trim();
articles.push({ title, link, date, source: 'UNIAN.UA' });
});
return articles;
}
async function fetchNewsFromLigaNet() {
const url = 'https://news.liga.net/';
const { data } = await axios.get(url);
const $ = cheerio.load(data);
3
482.ЧДТУ.52178-01 12 01
const articles = [];
$('.news-item').each((index, element) => {
const title = $(element).find('.news-title').text().trim();
const link = $(element).find('a').attr('href');
const date = $(element).find('.news-date').text().trim();
articles.push({ title, link, date, source: 'News.liga.net' });
});
return articles;
}
async function fetchAllNews() {
try {
const [ukrNetNews, unianNews, ligaNetNews] = await Promise.all([
fetchNewsFromUkrNet(),
fetchNewsFromUNIAN(),
fetchNewsFromLigaNet()
]);
return [...ukrNetNews, ...unianNews, ...ligaNetNews];
} catch (error) {
console.error('Error fetching news:', error);
}
}
/**
* Run the news fetching system
*/
(async () => {
const allNews = await fetchAllNews();
console.log('All Fetched News:');
allNews.forEach(article => {
console.log(`${article.date} - ${article.title} (${article.source}):
${article.link}`);
});
})();
const { MongoClient } = require('mongodb');
4
482.ЧДТУ.52178-01 12 01
const uri = 'mongodb://localhost:27017';
const dbName = 'newsDatabase';
const collectionName = 'articles';
class NewsDatabase {
constructor() {
this.client = new MongoClient(uri, { useNewUrlParser: true,
useUnifiedTopology: true });
this.db = null;
this.collection = null;
}
async connect() {
try {
await this.client.connect();
console.log('Connected to the MongoDB database');
this.db = this.client.db(dbName);
this.collection = this.db.collection(collectionName);
} catch (error) {
console.error('Error connecting to MongoDB:', error);
throw error;
}
}
async disconnect() {
await this.client.close();
console.log('Disconnected from the MongoDB database');
}
async saveArticle(article) {
try {
const existingArticle = await this.collection.findOne({ link: article.link });
if (existingArticle) {
console.log(`Article already exists: ${article.title}`);
return false;
}
await this.collection.insertOne(article);
console.log(`Saved article: ${article.title}`);
return true;
} catch (error) {
5
482.ЧДТУ.52178-01 12 01
console.error('Error saving article:', error);
return false;
}
}
async getAllArticles() {
try {
const articles = await this.collection.find({}).toArray();
console.log(`Retrieved ${articles.length} articles from the database`);
return articles;
} catch (error) {
console.error('Error retrieving articles:', error);
return [];
}
}
async getArticleById(id) {
try {
const article = await this.collection.findOne({ _id: id });
if (!article) {
console.log(`No article found with id: ${id}`);
return null;
}
return article;
} catch (error) {
console.error('Error retrieving article by ID:', error);
return null;
}
}
async deleteArticleById(id) {
try {
const result = await this.collection.deleteOne({ _id: id });
if (result.deletedCount === 0) {
console.log(`No article found with id: ${id} to delete`);
return false;
}
console.log(`Deleted article with id: ${id}`);
return true;
} catch (error) {
console.error('Error deleting article by ID:', error);
6
482.ЧДТУ.52178-01 12 01
return false;
}
}
async updateArticle(id, updateData) {
try {
const result = await this.collection.updateOne({ _id: id }, { $set:
updateData });
if (result.modifiedCount === 0) {
console.log(`No article found with id: ${id} to update`);
return false;
}
console.log(`Updated article with id: ${id}`);
return true;
} catch (error) {
console.error('Error updating article by ID:', error);
return false;
}
}
}
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const NewsDatabase = require('./NewsDatabase');
const app = express();
const PORT = process.env.PORT || 3000;
const newsDb = new NewsDatabase();
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const startServer = async () => {
await newsDb.connect();
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
};
app.post('/articles', async (req, res) => {
7
482.ЧДТУ.52178-01 12 01
try {
const article = req.body;
const saved = await newsDb.saveArticle(article);
if (saved) {
return res.status(201).json({ success: true, message: 'Article saved
successfully.' });
}
return res.status(409).json({ success: false, message: 'Article already
exists.' });
} catch (error) {
return res.status(500).json({ success: false, message: 'An error occurred while
saving the article.' });
}
});
app.get('/articles', async (req, res) => {
try {
const articles = await newsDb.getAllArticles();
return res.status(200).json({ success: true, articles });
} catch (error) {
return res.status(500).json({ success: false, message: 'An error occurred while
retrieving articles.' });
}
});
app.get('/articles/:id', async (req, res) => {
try {
const articleId = req.params.id;
const article = await newsDb.getArticleById(articleId);
if (article) {
return res.status(200).json({ success: true, article });
}
return res.status(404).json({ success: false, message: 'Article not found.' });
} catch (error) {
return res.status(500).json({ success: false, message: 'An error occurred while
retrieving the article.' });
}
});
app.put('/articles/:id', async (req, res) => {
try {
8
482.ЧДТУ.52178-01 12 01
const articleId = req.params.id;
const updateData = req.body;
const updated = await newsDb.updateArticle(articleId, updateData);
if (updated) {
return res.status(200).json({ success: true, message: 'Article updated
successfully.' });
}
return res.status(404).json({ success: false, message: 'No matching article
found.' });
} catch (error) {
return res.status(500).json({ success: false, message: 'An error occurred while
updating the article.' });
}
});
app.delete('/articles/:id', async (req, res) => {
try {
const articleId = req.params.id;
const deleted = await newsDb.deleteArticleById(articleId);
if (deleted) {
return res.status(200).json({ success: true, message: 'Article deleted
successfully.' });
}
return res.status(404).json({ success: false, message: 'No matching article
found.' });
} catch (error) {
return res.status(500).json({ success: false, message: 'An error occurred while
deleting the article.' });
}
});
app.use((req, res) => {
return res.status(404).json({ success: false, message: 'Endpoint not found.' });
});
const gracefulShutdown = async () => {
console.log('Shutting down server...');
await newsDb.disconnect();
process.exit(0);
};
9
482.ЧДТУ.52178-01 12 01
process.on('SIGINT', gracefulShutdown);
process.on('SIGTERM', gracefulShutdown);
startServer();
require('dotenv').config();
const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const FacebookStrategy = require('passport-facebook').Strategy;
const cookieSession = require('cookie-session');
const mongoose = require('mongoose');
const User = require('./UserModel');
const app = express();
const PORT = process.env.PORT || 3000;
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true,
useUnifiedTopology: true });
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
const user = await User.findById(id);
done(null, user);
});
passport.use(new GoogleStrategy({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: '/auth/google/callback'
}, async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ googleId: profile.id });
if (existingUser) {
return done(null, existingUser);
}
const newUser = await new User({
googleId: profile.id,
username: profile.displayName,
thumbnail: profile._json.picture
10
482.ЧДТУ.52178-01 12 01
}).save();
return done(null, newUser);
}));
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_APP_ID,
clientSecret: process.env.FACEBOOK_APP_SECRET,
callbackURL: '/auth/facebook/callback',
profileFields: ['id', 'displayName', 'photos']
}, async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ facebookId: profile.id });
if (existingUser) {
return done(null, existingUser);
}
const newUser = await new User({
facebookId: profile.id,
username: profile.displayName,
thumbnail: profile.photos[0].value
}).save();
return done(null, newUser);
}));
app.use(cookieSession({
maxAge: 24 * 60 * 60 * 1000,
keys: [process.env.COOKIE_KEY]
}));
app.use(passport.initialize());
app.use(passport.authenticate('session'));
app.get('/auth/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
app.get('/auth/google/callback', passport.authenticate('google', {
successRedirect: '/profile',
failureRedirect: '/login'
}));
app.get('/auth/facebook', passport.authenticate('facebook', {
scope: ['email']
11
482.ЧДТУ.52178-01 12 01
}));
app.get('/auth/facebook/callback', passport.authenticate('facebook', {
successRedirect: '/profile',
failureRedirect: '/login'
}));
app.get('/api/logout', (req, res) => {
req.logout();
res.redirect('/');
});
app.get('/api/user', (req, res) => {
res.send(req.user);
});
app.get('/profile', (req, res) => {
if (!req.user) {
return res.redirect('/login');
}
res.send(`<h1>Hello, ${req.user.username}</h1><img
src="${req.user.thumbnail}" />`);
});
app.get('/login', (req, res) => {
res.send('<h1>Please log in using <a href="/auth/google">Google</a> or <a
href="/auth/facebook">Facebook</a>.</h1>');
});
app.get('/', (req, res) => {
res.send('<h1>Home Page</h1><a href="/auth/google">Login with
Google</a><br/><a href="/auth/facebook">Login with Facebook</a>');
});
app.use((req, res) => {
res.status(404).json({ success: false, message: 'Endpoint not found.' });
});
const gracefulShutdown = async () => {
console.log('Shutting down server...');
await mongoose.connection.close();
12
482.ЧДТУ.52178-01 12 01
process.exit(0);
};
process.on('SIGINT', gracefulShutdown);
process.on('SIGTERM', gracefulShutdown);
const startServer = () => {
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
};
startServer();
class MemoryCache {
constructor() {
this.cache = new Map();
this.expirations = new Map();
this.locks = new Map();
}
set(key, value, ttl) {
if (this.locks.has(key) && this.locks.get(key)) {
throw new Error('Key is locked for updates.');
}
const expirationTime = Date.now() + ttl;
this.cache.set(key, value);
this.expirations.set(key, expirationTime);
}
get(key) {
if (this.locks.has(key) && this.locks.get(key)) {
throw new Error('Key is locked for updates.');
}
if (!this.cache.has(key) || this.isExpired(key)) {
return undefined;
}
return this.cache.get(key);
}
isExpired(key) {
13
482.ЧДТУ.52178-01 12 01
if (!this.expirations.has(key)) {
return true;
}
const expirationTime = this.expirations.get(key);
if (Date.now() > expirationTime) {
this.cache.delete(key);
this.expirations.delete(key);
return true;
}
return false;
}
delete(key) {
this.cache.delete(key);
this.expirations.delete(key);
}
clear() {
this.cache.clear();
this.expirations.clear();
}
setLock(key) {
this.locks.set(key, true);
}
releaseLock(key) {
this.locks.delete(key);
}
getStats() {
const totalItems = this.cache.size;
const expiredItems = Array.from(this.cache.keys()).filter(key =>
this.isExpired(key)).length;
return {
totalItems,
expiredItems
};
}
cleanUp() {
14
482.ЧДТУ.52178-01 12 01
for (const key of this.cache.keys()) {
this.isExpired(key);
}
}
async batchSet(pairs, ttl) {
for (const [key, value] of pairs) {
this.set(key, value, ttl);
}
}
async batchGet(keys) {
return keys.map(key => this.get(key));
}
async batchDelete(keys) {
keys.forEach(key => this.delete(key));
}
async getItemWithRetry(key, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
const value = await this.get(key);
if (value !== undefined) return value;
} catch (error) {
console.error(`Attempt ${i + 1} failed: ${error.message}`);
}
}
return undefined;
}
async updateItemTTL(key, newTtl) {
if (this.cache.has(key)) {
this.set(key, this.cache.get(key), newTtl);
}
}
async fillCacheWithDefaults(defaults) {
for (const [key, { value, ttl }] of Object.entries(defaults)) {
this.set(key, value, ttl);
}
15
482.ЧДТУ.52178-01 12 01
}
}
const cachingMiddleware = (cache) => {
return async (req, res, next) => {
const cacheKey = req.originalUrl || req.url;
const cachedResponse = cache.get(cacheKey);
if (cachedResponse) {
return res.json(cachedResponse);
}
res.sendResponse = res.json;
res.json = (body) => {
cache.set(cacheKey, body, 60000);
res.sendResponse(body);
};
next();
};
};
require('dotenv').config();
const axios = require('axios');
class ChatGPT {
constructor() {
this.apiKey = process.env.OPENAI_API_KEY;
this.apiUrl = 'https://api.openai.com/v1/chat/completions';
this.defaultModel = 'gpt-3.5-turbo';
}
async sendMessage(messages, model = this.defaultModel) {
try {
const response = await axios.post(this.apiUrl, {
model: model,
messages: messages,
temperature: 0.7,
max_tokens: 150,
n: 1,
stop: null,
}, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
16
482.ЧДТУ.52178-01 12 01
'Content-Type': 'application/json'
}
});
if (response.data && response.data.choices) {
return response.data.choices[0].message.content.trim();
} else {
throw new Error('Empty response from API');
}
} catch (error) {
console.error('Error communicating with ChatGPT:', error.message);
throw error;
}
}
async chatWithAssistant(userMessage) {
const messages = [
{ role: 'user', content: userMessage }
];
try {
const response = await this.sendMessage(messages);
return response;
} catch (error) {
throw error;
}
}
async chatWithContext(userMessage, contextMessages) {
const messages = contextMessages.concat([{ role: 'user', content:
userMessage }]);
try {
const response = await this.sendMessage(messages);
return response;
} catch (error) {
throw error;
}
}
async summarizeText(text) {
17
482.ЧДТУ.52178-01 12 01
const messages = [
{ role: 'user', content: `Summarize the following text: ${text}` }
];
try {
const response = await this.sendMessage(messages);
return response;
} catch (error) {
throw error;
}
}
async chatWithCustomModel(userMessage, model) {
const messages = [
{ role: 'user', content: userMessage }
];
try {
const response = await this.sendMessage(messages, model);
return response;
} catch (error) {
throw error;
}
}
}
module.exports = new ChatGPT();
ДОДАТОК В
Система автоматичного інформування про важливі новини на
базі штучного інтелекту
Інструкція користувача
482.ЧДТУ.52178-01 34 01
Листів 4
Розробник: Владислав ДІХТЯРУК
Черкаси 2025
2
482.ЧДТУ.52178-01 34 01
Для першого запуску системи користувач (адміністратор) має виконати
кілька необхідних кроків для коректного налаштування та запуску системи.
Перш за все, адміністратор повинен налаштувати серверне середовище,
зокрема інсталяцію операційної системи, такої як Ubuntu, та необхідного
програмного забезпечення для роботи системи, включаючи Node.js, MongoDB
та інші компоненти.
Далі необхідно налаштувати базу даних, підключити її до серверу і
здійснити початкове налаштування сховища даних, зокрема для новин та
даних користувачів. Адміністратор повинен також налаштувати підключення
до зовнішніх новинних платформ, щоб система могла коректно завантажувати
новини з відповідних джерел.
Крім того, має виконати налаштування авторизації через соціальні
мережі, що дозволить користувачам входити в систему через Google або
Facebook. Для цього необхідно отримати відповідні API ключі від соціальних
мереж і налаштувати інтеграцію.
Останнім етапом є конфігурація сервера для роботи з HTTPS
протоколом, налаштування сертифікатів безпеки та перевірка доступності
сервісу для користувачів через CDN для швидкого завантаження PWA
додатку. Ці кроки необхідні для того, щоб система працювала без збоїв, мала
правильну конфігурацію безпеки та була готова до використання
користувачами.
Користувач має запускати розроблену систему на операційній системі
Ubuntu, оскільки вона забезпечує стабільність та сумісність з необхідними
технологіями, що використовуються в системі. Для кращої продуктивності та
безпеки бажано розгорнути систему на VPS сервері. Використання VPS
дозволяє виділити ресурси для системи, забезпечити надійність і контроль за
роботою сервера, а також дозволяє масштабувати ресурси відповідно до
зростаючого навантаження.
3
482.ЧДТУ.52178-01 34 01
Запуск на VPS також дає можливість налаштувати сервер так, щоб він
працював в ізольованому середовищі, що зменшує ризики і дає додатковий
рівень захисту. Крім того, VPS забезпечує постійну доступність сервісу, що
критично важливо для обробки новин і авторизації користувачів у реальному
часі.
На VPS сервері повинні бути встановлені кілька ключових компонентів
для коректної роботи розробленої системи. Перш за все, необхідно встановити
MongoDB, оскільки це база даних, яка зберігає новини та інші дані системи.
MongoDB має бути налаштована для ефективного збереження і швидкого
доступу до інформації.
Також потрібно встановити Node.js, який є основною технологією для
серверної частини системи. Node.js дозволяє обробляти HTTP запити,
виконувати серверні логіки і взаємодіяти з базою даних та іншими сервісами.
Це дозволяє забезпечити високопродуктивну роботу сервера.
Нарешті, необхідно налаштувати Nginx як веб-сервер для обробки
вхідних запитів і проксирування їх до Node.js. Nginx також відповідає за
управління трафіком і забезпечення безпеки через використання SSL
сертифікатів для шифрування даних.
Таким чином, на VPS сервері повинні бути налаштовані всі ці
компоненти, щоб система працювала стабільно, ефективно і безпечно.
Запустити розроблену серверну частину можна кількома способами,
зокрема за допомогою PM2 або Docker. PM2 – це менеджер процесів для
Node.js, який дозволяє легко керувати запущеними додатками, забезпечує
автоматичний рестарт у разі збою, а також підтримує моніторинг та логування.
Використання PM2 дозволяє зручно запускати серверну частину,
контролювати її стан і виконувати необхідні дії для підтримки стабільної
роботи.
4
482.ЧДТУ.52178-01 34 01
Docker – це контейнеризаційна платформа, яка дозволяє запустити
серверну частину системи в ізольованому середовищі. Використання Docker
дозволяє створити контейнер для додатку, що забезпечує його портативність
та стабільну роботу на будь-якому сервері. За допомогою Docker можна
уникнути конфліктів з залежностями, а також полегшити процес
масштабування та управління системою.
Обидва варіанти – це ефективні способи запуску серверної частини, і
вибір між ними залежить від потреб користувача та складності
інфраструктури.
Після запуску системи, вона буде доступна через IP-адресу сервера, на
якому вона розгорнута. Це дозволить користувачам підключатися до сервісу
та взаємодіяти з ним, використовуючи стандартні веб-браузери.
Адміністратор може налаштувати сервер так, щоб система була доступна
через доменне ім'я, якщо це потрібно, але на початковому етапі доступ
здійснюється безпосередньо через IP-адресу сервера.
Для запуску клієнтської частини системи достатньо завантажити
додаток на будь-який з CDN (Content Delivery Network), наприклад, Cloudflare.
Це дозволить користувачам отримувати доступ до PWA додатку з будь-якої
точки світу швидко та ефективно, оскільки контент буде доставлятися з
найближчого до користувача серверу. Завантаження на CDN забезпечить
оптимізацію швидкості завантаження додатку, знизить навантаження на
основний сервер та підвищить доступність ресурсу для великої кількості
користувачів одночасно.