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

9.4 KiB
Raw Blame History

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