add poetry, count_lines.py, .gitignore, README.md, LICENSE and TERMS.md

This commit is contained in:
2024-12-09 10:38:50 +07:00
commit 4a6ab7b36c
7 changed files with 1615 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
# db_neiro_filter
## Описание проекта
Этот проект представляет собой систему модулей для идентификации и фильтрации нежелательного контента, интегрированную с ботами Telegram и Discord. Основной функционал системы заключается в автоматическом удалении и классификации сообщений, которые могут содержать спам, нецензурные выражения, или материалы категории 18+. Проект направлен на обеспечение безопасного и контролируемого взаимодействия пользователей в сообществах.
## Структура проекта
Проект состоит из трех основных модулей: **core**, **telegram**, и **discord**. Каждый модуль выполняет свои задачи и взаимодействует с остальными для обеспечения бесперебойного функционирования системы.
### 1. Core
Модуль **core** отвечает за идентификацию и классификацию нежелательного контента. Он включает в себя:
- **API**: Обеспечивает взаимодействие с пользователями и позволяет выполнять фильтрацию и управление данными.
- **spam**: Нейросеть, предназначенная для классификации сообщений как спам или допустимый контент.
- **mat**: Нейросеть, определяющая, содержит ли сообщение нецензурную лексику.
- **18+**: Нейросеть, анализирующая сообщения на наличие контента категории 18+.
- **mongodb**: База данных, в которой хранятся не обнаруженные ранее нежелательные сообщения, используемые для последующего дообучения нейросетей.
#### Структура базы данных:
База данных состоит из коллекций, в которых хранится необнаруженный контент для последующего дообучения. Каждая коллекция включает данные о типе контента, источнике и добавившем пользователе.
### 2. Telegram
Модуль **telegram** обеспечивает интеграцию с Telegram ботом для взаимодействия с пользователями и обработки контента. Включает в себя:
- **bot**: Обрабатывает поступающие сообщения и команды, передавая их на обработку в модуль **core**.
- **команды**: Отправляют запросы к API модуля **core** для добавления не угодного контента и взаимодействия с базой данных.
- **mongodb**: База данных, где хранятся все удалённые сообщения, с указанием времени и причины удаления.
#### Структура базы данных:
База данных сохраняет информацию о пользователе, сообщения которого были удалены, включая текст, изображение, время удаления, ID пользователя и сведения о том, было ли удаление автоматическим или ручным.
### 3. Discord
Модуль **discord** интегрирован с Discord ботом и аналогично модулю **telegram** выполняет обработку и классификацию контента:
- **bot**: Обрабатывает сообщения и команды, отправляя их на анализ в модуль **core**.
- **команды**: Позволяют добавлять новый нежелательный контент и взаимодействовать с базой данных через API модуля **core**.
- **mongodb**: База данных, в которой хранятся все удалённые сообщения, время и причина удаления.
#### Структура базы данных:
База данных Discord хранит данные о пользователях, чьи сообщения были удалены, включая текст, изображение, ID пользователя и тип удаления (автоматическое или ручное).
## Дополнительная информация
Проект разрабатывается на приватном сервере Gitea с использованием следующих практик и инструментов:
- **Линтинг**: Код проверяется с использованием линтеров для поддержания высокого качества.
- **Тестирование**: Автоматические модульные тесты написаны с использованием Pytest для обеспечения корректности функционала.
- **Нагрузочное тестирование**: Проводится с помощью Locust для оценки производительности системы под высокой нагрузкой.
- **Автоматическое развёртывание**: С помощью Gitea Actions реализован непрерывный цикл интеграции и доставки (CI/CD).
## Установка и настройка
1. Склонируйте репозиторий на локальную машину:
```bash
git clone https://gitea.db-of.ru/db_neiro_filter/telegram
```
2. Установите зависимости, используя Poetry:
```bash
poetry install
```
## Запуск
- Запуск бота
```bash
poetry run python main.py
```
## Статистические данные
- Количество строк/комментариев
```bash
poetry run python count_lines.py
```
- Проверка линтером
```bash
poetry run ruff check .
```
- Сырые статистические данные
```bash
poetry run radon raw ./
```
- Цикломатическая сложность
```bash
poetry run radon cc ./
```
- Метрики Холстеда
```bash
poetry run radon hal ./
```
- Индекс поддерживаемости кода
```bash
poetry run radon mi ./
```
## Лицензия
Этот проект распространяется под лицензией **GNU AGPLv3 с дополнительными условиями**.
Основные положения:
- Код остаётся открытым.
- Обязательно указание авторства.
- Все модификации должны распространяться под той же лицензией.
- Коммерческое использование запрещено без разрешения автора.
- Пользователи должны уведомлять автора о публичном использовании проекта.
Подробные условия см. в файле `LICENSE`.
Дополнительные требования см. в файле `TERMS.md`.