README.md edited
This commit is contained in:
120
.history/README_20241206103125.md
Normal file
120
.history/README_20241206103125.md
Normal file
@@ -0,0 +1,120 @@
|
||||
Техническое задание: 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-ботами
|
||||
Reference in New Issue
Block a user