8.23M

ДИПЛОМУС123

1.

Дипломный проект на тему:
Разработка информационной
системы агрегации уведомлений
из внешних сервисов на
платформе Discord (Bot)
Студента группы: 407ИС-22
Минаева Данила
Александровича
Руководитель дипломного
проекта: Е. В. Чегодаева

2.

Цель, задачи, актуальность:
Цель работы
Разработка информационной системы в виде Discord-бота для централизованного сбора,
обработки и доставки уведомлений из внешних сервисов.
Задачи работы
Анализ предметной области и существующих решений (Mee6, Carl-bot, MonitoRSS)
Проектирование унифицированной модели уведомления
Разработка модулей интеграции с внешними API (GitHub, Jira)
Реализация механизмов фильтрации и маршрутизации
Создание базы данных для хранения истории уведомлений
Тестирование системы и оценка эффективности
Актуальность
Необходимость централизации уведомлений из разнородных сервисов в едином окне для
снижения информационного шума и ускорения реакции IT-команд.
Научная значимость
Применение методов унификации данных и модульной архитектуры для построения системыагрегатора на платформе Discord.
Практическая значимость
Создан программный продукт, позволяющий собирать уведомления из GitHub, Jira и других
сервисов в выделенные каналы Discord.
2

3.

Главная архитектурая схема системы
3

4.

ПРОБЛЕМА И ОБОСНОВАНИЕ
АКТУАЛЬНОСТИ
Проблема: информационная перегрузка IT-команд из-за разрозненных каналов уведомлений
Факторы:
•Множество внешних сервисов (GitHub, Jira, Sentry, CI/CD)
•Необходимость ручной проверки каждого сервиса
•Потеря критических уведомлений в общем потоке
•Снижение производительности из-за переключения между приложениями
Актуальность: требуется централизованная система сбора и доставки событий в единое окно
4

5.

ОБЗОР СУЩЕСТВУЮЩИХ АНАЛОГОВ
Критерий
Mee6
Carl-bot
MonitoRSS
GitWebhook
Поддержка произвольных
API
Нет
Нет
Нет
Нет
Вебхуки от сервисов
Нет
Нет
Нет
Да (один тип)
Унифицированная
модель
Нет
Нет
Нет
Нет
Хранение истории
Нет
Нет
Нет
Нет
Гибкая фильтрация
Частично
Частично
Да
Нет
Вывод: ни один аналог не решает задачу комплексно → необходима собственная разработка
5

6.

Sequence Diagram
6

7.

ПЛАТФОРМА РЕАЛИЗАЦИИ: DISCORD
Почему Discord выбран в качестве платформы-агрегатора:
• Развитый API для создания ботов
• Поддержка embed-сообщений (богатое
форматирование)
• Слеш-команды для удобного управления
• Система ролей и разрешений
• Вебхуки на уровне каналов
• Интерактивные компоненты (кнопки, меню)
• Широкая распространённость в IT-сообществе
• Бесплатный доступ к API без существенных
ограничений
7

8.

АРХИТЕКТУРА СИСТЕМЫ
Модульная архитектура (7 основных компонентов):
1.Discord Gateway Module — подключение к Discord API, приём команд
2.Webhook Receiver Module — приём HTTP-запросов от сервисов
3.API Poller Module — периодический опрос API (для сервисов без вебхуков)
4.Unification Module — преобразование данных в единую модель
5.Filter Engine — проверка уведомлений по правилам фильтрации
6.Router Module — определение целевого канала Discord
7.Storage Module — работа с базой данных SQLite
8.Configuration Manager — обработка пользовательских команд
Преимущества: разделение ответственности, лёгкость добавления новых сервисов,
изолированное тестирование
8

9.

UML Use Case Diagram
9

10.

УНИФИЦИРОВАННАЯ МОДЕЛЬ УВЕДОМЛЕНИЯ
Назначение: абстрагироваться от специфики каждого внешнего сервиса
Структура модели:
Поле
Тип
Пример
source_service_id
INT
5
source_type
TEXT
github / jira
event_type
TEXT
push / issues
title
TEXT
Новый коммит в main
description
TEXT
Добавлен файл README
severity
TEXT
info / warning / error
author
TEXT
username
url
TEXT
https://github.com/...
timestamp
DATETIME
2025-05-21 14:30:00
raw_data
TEXT
{"commit": "..."}
10

11.

СХЕМА ОБРАБОТКИ ДАННЫХ
Последовательность обработки уведомления:
11

12.

СТРУКТУРА БАЗЫ ДАННЫХ
СУБД: SQLite
Основные таблицы:
12

13.

ИНТЕГРАЦИЯ С ВНЕШНИМИ СЕРВИСАМИ
GitHub (поддерживаемые
события):
•push — новые коммиты
•issues —
создание/редактирование
задачи
•pull_request —
создание/обновление PR
•release — новый релиз
•workflow_run — выполнение
GitHub Actions
Jira (поддерживаемые
события):
Механизмы получения
данных:
•issue_created — создание
задачи
•issue_updated — обновление
задачи
•Вебхуки (основной способ,
реальное время)
•issue_deleted — удаление
задачи
•Периодический опрос API
(для сервисов без вебхуков)
•comment_created —
добавление комментария
13

14.

Парсинг-алгоритм
14

15.

ВЫВОД ПО МОДУЛЮ, ДЕМОНСТРАЦИЯ ПРОЕКТА
Основные результаты работы:
• Разработан Discord-бот для агрегации уведомлений из внешних сервисов
• Реализована модульная архитектура, позволяющая легко добавлять новые сервисы
• Создана унифицированная модель уведомления для абстрагирования от форматов
сервисов
• Обеспечена фильтрация и маршрутизация уведомлений в целевые каналы Discord
• Реализовано хранение истории в SQLite с возможностью просмотра через команды
• Проведено тестирование, подтвердившее корректную работу всех модулей
• Экономический расчёт показал высокую эффективность внедрения
Практическая значимость: готовая к использованию система для IT-команд и
организаций
Пути развития: добавление новых сервисов (Sentry, GitLab, Prometheus), вебинтерфейс, интеллектуальная приоритизация.
15

16.

ТРЕБОВАНИЯ К РАЗРАБОТАННОЙ ИС
Функциональные требования:
1. Приём вебхуков от внешних сервисов (GitHub, Jira) с валидацией подписи и парсингом
JSON-данных
2. Унификация полученных данных в единую внутреннюю модель уведомления
(нормализация, приведение типов)
3. Фильтрация уведомлений по заданным правилам (тип события, уровень важности,
ключевые слова)
4. Сохранение уведомлений в SQLite с возможностью просмотра истории через команду
/history
5. Управление конфигурацией через слеш-команды Discord (/add_service, /add_filter, /stats)
Нефункциональные требования:
6. Время обработки одного вебхука — не более 2 секунд
7. Время ответа на слеш-команду — не более 1 секунды
8. Автоматические повторные попытки при сетевых сбоях (до 3 раз)
9. Устойчивость к некорректным данным (отсутствие аварийного завершения)
10.Совместимость с ОС Windows и Linux
16

17.

ОБОСНОВАНИЕ ВЫБОРА ИНСТРУМЕНТАЛЬНЫХ
СРЕДСТВ
Компонент
Технология
Версия
Язык
Python
3.10+
Discord API
discord.py
2.3+
Веб-сервер
FastAPI
0.100+
HTTP-клиент
aiohttp
3.8+
СУБД
SQLite
3
Валидация
Pydantic
2.0+
17
Конфигурация
python-dotenv
1.0+

18.

РЕЗУЛЬТАТЫ РАБОТЫ И ВЫВОД ПО МОДУЛЮ
Разработан Discord-бот для централизованной агрегации
уведомлений.
Автоматически собирает события из GitHub и Jira через вебхуки.
Данные сохраняются в SQLite с историей доставки. Тестирование
успешно пройдено.
Затраты на разработку — 353 000 руб.
Срок окупаемости — 5 месяцев.
18
English     Русский Правила