#### Техническое задание: NotifyPro 1. #### Введение ```Проект NotifyPro представляет собой систему для мониторинга и уведомления, которая работает с электронной почтой через IMAP/POP3 и Telegram-ботами. Система предоставляет удобную панель администрирования для управления ботами, группами и пользователями, а также API для взаимодействия с внешними сервисами.``` ``` 2. Основные компоненты системы Telegram-боты Система должна позволять пользователям создавать и управлять Telegram-ботами. Каждый бот должен иметь возможность отправлять уведомления в Telegram-группы. Боты активируются при получении новых писем через IMAP/POP3 или другие триггеры. Для каждого бота в системе должно быть поддержано подключение по webhook для получения уведомлений. Админ-панель В админ-панели пользователь должен иметь возможность управлять: Ботами Группами, которые получают уведомления Способами и правилами пересылки сообщений Сотрудниками своей организации (создание сотрудников и распределение ролей) В админ-панели отображаются данные о системе, включая логи и настройки. Важно, чтобы панель администрирования была удобной, с возможностью использования кастомных иконок и настроек интерфейса. Для этого будет использоваться django-material или jazzmin. API Для взаимодействия с системой и создания ботов должна быть разработана REST API: API для создания и управления ботами. API для добавления/удаления групп и контактов. API для отправки уведомлений. API для управления пользователями и ролями в организации. База данных База данных PostgreSQL (или MySQL) для хранения информации о пользователях, ботах, группах и настройках системы. Каждому пользователю должна быть предоставлена возможность создавать свою организацию и управлять своей командой (с добавлением ролей). Фронтенд Простой веб-интерфейс для взаимодействия с админ-панелью и управления ботами. Пользователи смогут отслеживать статус своих ботов, настраивать триггеры и конфигурировать получателей уведомлений. Docker Все сервисы системы (включая API, фронтенд и базу данных) должны быть контейнеризированы с использованием Docker. Для каждого бота создается отдельный контейнер, обеспечивающий независимую работу и перезапуск в случае сбоя. Логирование и мониторинг Все события и ошибки должны логироваться в систему. Для мониторинга и анализа производительности системы можно настроить сбор статистики и отчетности. 3. Архитектура Микросервисная архитектура Система должна быть разделена на несколько микросервисов: API сервис: Обрабатывает запросы к базе данных и взаимодействует с фронтендом. Telegram-бот сервис: Управляет ботами и их взаимодействием с пользователями. База данных: Хранит данные о пользователях, ботах, группах, настройках и событиях. Коммуникация между сервисами Взаимодействие между сервисами осуществляется через API. Все запросы к базе данных проходят через API, без прямого доступа из ботов. Безопасность Все API запросы должны быть защищены с использованием токенов или OAuth. Базы данных должны быть защищены паролями, а доступ к серверу — через безопасные каналы (SSH, HTTPS). 4. Технические требования Фреймворк: Django 5.x База данных: PostgreSQL / MySQL Языки программирования: Python (Django), JavaScript (для фронтенда) Используемые технологии: Django REST Framework (для API) Django Material / Jazzmin (для админки) Docker (для контейнеризации) Celery (для асинхронных задач, например, для обработки почты) Требования к серверу: Ubuntu (или любой другой сервер с Linux). Docker и Docker Compose для развертывания сервисов. Возможность настройки HTTPS для защищенной работы через веб. 5. Описание функционала Создание и управление ботами: Каждый пользователь может создать свой Telegram-бот через админ-панель. Бот может быть настроен на пересылку сообщений в Telegram группы при поступлении новых писем через IMAP/POP3. Группы и контакты: Пользователь может создать группы, которым будут отправляться уведомления. Каждая группа может быть связана с одним или несколькими ботами. Панель управления для пользователей: Каждый пользователь имеет личный кабинет для управления своими ботами и группами. Возможность добавления сотрудников в организацию и назначения ролей (например, администратор, пользователь, и т. д.). API для взаимодействия: Все данные взаимодействуют через REST API, что позволяет интегрировать систему с внешними сервисами. Интерфейс: Простое и интуитивно понятное веб-приложение для администрирования. 6. Этапы разработки Подготовка инфраструктуры: Настройка Docker контейнеров. Настройка базы данных и миграция данных из старой базы. Разработка API: Реализация всех необходимых API эндпоинтов для взаимодействия с ботами, группами и пользователями. Разработка фронтенда: Создание веб-интерфейса для администрирования и управления системой. Тестирование: Модульные тесты для API и функционала. Тестирование на различных сценариях работы с системой. Развертывание: Развертывание системы на продакшн сервере. 7. Технологический стек Backend: Django 5.x, Django REST Framework, Celery, PostgreSQL / MySQL Frontend: HTML, CSS, JavaScript (для взаимодействия с API) Docker: Для контейнеризации сервисов и работы с ними Telegram API: Для создания и управления Telegram-ботами