Files
Touchh/.history/README_20241206103211.md
2024-12-06 10:45:08 +09:00

122 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Техническое задание: 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-ботами