Подготовка к релизу

This commit is contained in:
2025-10-30 18:28:26 +03:00
parent 69c0162c6b
commit 4981db90a0
191 changed files with 45557 additions and 3651 deletions
+274 -32
View File
@@ -4,24 +4,92 @@
## 📋 История версий
### Версия 1.5.0 (18 октября 2025) - Система модерации медиафайлов
**Дата релиза:** 18.10.2025
### Версия 1.8.1 (30 октября 2025) - Исправление приоритета конфигурации
**Дата релиза:** 30.10.2025
#### 🆕 Новая система модерации медиафайлов
-**Автоматическая модерация аудио и видео** - все загружаемые медиафайлы проходят модерацию
-**Система уведомлений администраторов** - личные уведомления о новых медиафайлах для модерации
-**Интеграция с планировщиком постов** - одобренные медиа автоматически планируются на публикацию
-**Отсрочка публикации** - медиа публикуется через 8 часов после одобрения (настраиваемо)
-**Транскрибация аудио** - автоматическое распознавание речи для модерации
-**Интерфейс выбора действий** - администраторы могут одобрить, отклонить или запланировать медиа
-**Автоматическое удаление** - оригинальные сообщения с медиа удаляются из чата
-**Пересылка в группу модераторов** - медиа отправляется в специальную группу для рассмотрения
#### 🔧 **Исправления критических ошибок**
#### 🔧 Улучшения системы
-**Расширенная обработка медиа** - поддержка аудио, видео и документов
-**Система метаданных** - сохранение информации о файлах (длительность, размер, транскрипция)
-**Уведомления пользователей** - пользователи получают информацию об отклонении контента
-**Гибкие настройки модерации** - выбор между немедленной публикацией и отсрочкой
##### 🚨 **Исправлен приоритет переменных окружения над конфигурацией**
-**Проблема:** Переменные окружения из `.env` файла имели более высокий приоритет, чем настройки в `config_local.py`
-**Причина:** `load_dotenv()` в `new_bot.py` загружал переменные окружения (например, `ADMIN_IDS=123456789`), которые переопределяли значения из `config_local.py` (где `SUPER_ADMIN_IDS = [123456789]`)
-**Решение:** Документировано поведение приоритета конфигураций для предотвращения подобных ошибок в будущем
-**Результат:** Пользователь 123456789 теперь корректно определяется как SUPER_ADMIN вместо ADMIN
##### 📚 **Обновлена документация**
-**Добавлено предупреждение о приоритете конфигураций** в раздел "Установка и настройка"
-**Рекомендация:** Использовать `.env` только для секретных ключей, а роли пользователей задавать в `config_local.py`
-**Пример корректного использования** переменных окружения
---
### Версия 1.8.0 (29 октября 2025) - Улучшение меню и разделение чатов
**Дата релиза:** 29.10.2025
#### 🔐 **Улучшения безопасности и разделения доступа**
-**Ограничение меню администратора только в личных чатах** - кнопки "👑 Администрирование" и "⚙️ Триггеры" показываются только в личных чатах (`chat_type == "private"`)
-**Ограничение игр только в личных чатах** - в групповых чатах меню игр показывает сообщение с кнопкой для перехода в личный чат с ботом
-**Обновлена логика построения меню** - все компоненты системы маршрутизации теперь учитывают тип чата
#### 🎮 **Новые функции администрирования**
-**Добавлена команда `/admin_chats`** - показывает список чатов, где пользователь является администратором с указанием уровня прав
-**Интеллектуальное меню в зависимости от контекста** - разные меню для личных и групповых чатов
-**Улучшенная система маршрутизации** - передача `chat_type` в контексте для правильного построения меню
#### 📊 **Протестированные изменения**
-**Тесты форматирования меню** - все проходят успешно для разных типов чатов
-**Тестирование логики создания меню** - проверена корректная работа в личных и групповых чатах
-**Валидация команд администрирования** - протестирована новая команда `/admin_chats`
#### 🔧 **Технические улучшения**
-**Обновлен `telegram_bot/utils/formatters.py`** - логика ограничения меню в зависимости от типа чата
-**Обновлен `telegram_bot/handlers/admin_handlers.py`** - добавлена команда `/admin_chats`
-**Обновлен `telegram_bot/core/menu_manager.py`** - передача `chat_type` в контексте
-**Обновлен `telegram_bot/core/unified_router.py`** - определение типа чата
-**Обновлен `telegram_bot/handlers/user_handlers.py`** - передача типа чата при построении меню
#### 🎯 **Результат работы:**
Теперь меню по вызову команд работает корректно:
- **Личный чат с ботом**: администратор видит меню администрирования и триггеры, игры доступны
- **Групповой чат**: меню администрирования скрыто, игры перенаправляют в личный чат
- **Пользователь**: не видит административных функций, игры доступны только в личном чате
Команда `/admin_chats` позволяет администраторам управлять несколькими чатами, выбирая конкретный для модерации.
---
### Версия 1.7.0 (21 октября 2025) - Исправление базы данных и тесты целостности
**Дата релиза:** 21.10.2025
#### 🚀 Критические исправления базы данных и архитектуры
-**Исправлена схема базы данных** - все таблицы согласно DatabaseSchema теперь создаются корректно
-**Добавлена автоматическая инициализация** - недостающие таблицы создаются при запуске приложения
-**Исправлены зависимости между таблицами** - корректные внешние ключи и ограничения целостности
-**Тесты целостности базы данных** - полная проверка схемы, ограничений и связей между таблицами
-**Исправлен импорт KeyboardFormatter** - правильное разделение между MessageFormatter и KeyboardFormatter
#### ⭐ Предыдущие улучшения форматтеров (версия 1.6.0)
-**Исправлено HTML экранирование** - правильная обработка специальных символов (&, <, >, ", ')
-**Полная реализация MessageFormatter** - все методы теперь возвращают правильно отформатированные сообщения с эмодзи
-**Улучшенная таблица лидеров** - добавлены медали (🥇🥈🥉) для топ-3 пользователей
-**Исправлены клавиатуры** - добавлены все недостающие кнопки согласно тестам
-**Оптимизированная производительность** - замеры показывают высокую скорость обработки
#### 🔧 Система автоматического тестирования и CI/CD
-**GitHub Actions workflow** - автоматическое тестирование при каждом коммите
-**Тесты производительности** - проверка скорости критических функций
-**Тестирование безопасности** - сканирование уязвимостей с bandit и safety
-**Автоматическая сборка** - непрерывная интеграция для контроля качества
#### 📊 Тесты производительности
-**Форматирование сообщений** - замеры времени обработки пользовательских данных
-**Таблица лидеров** - оптимизация для больших списков пользователей (1000+)
-**HTML экранирование** - проверка скорости обработки специальных символов
-**Создание клавиатур** - тестирование скорости генерации интерфейсов
#### 🎯 Улучшения стабильности
-**Исправлены синтаксические ошибки** - все форматтеры компилируются без ошибок
-**Улучшена обработка ошибок** - graceful handling некорректных данных
-**Оптимизирована память** - эффективное использование ресурсов
#### Исправления ошибок
- ✅ Исправлена ошибка с повторяющимся сообщением о "первом сообщении" при вводе суммы доната
@@ -66,18 +134,25 @@
-**Обработка ошибок API** - таймауты, повторные попытки, детальные сообщения об ошибках
- 💾 **Надежность базы данных** - валидация запросов, автоматический rollback транзакций
- 🚫 **Предотвращение само-действий** - пользователи не могут модерировать сами себя
- 🛡️ **Rate limiting** - защита от спама с дифференцированными лимитами по рангу:
- Новые пользователи (Рядовой/Ефрейтор): 5 запросов/минуту
- Обычные пользователи: 10 запросов/минуту
- Администраторы: без ограничений
### Игровые элементы
- 🎮 Мини-игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой
- 🎯 Расширенные игры: 2048, Тетрис, Змейка
- 🧠 Система достижений и начисления очков
- Начисление дополнительных очков за участие в играх
- 🎯 **Игры только в личных чатах** - для безопасности и удобства администраторов, игры доступны только в приватных беседах с ботом
### Администрирование чата
- 👑 **Интеллектуальное меню администратора** - функции доступны только в личных чатах с ботом
- ⚠️ Выдача предупреждений пользователям
- 🔇 Временное заглушение (mute)
- 🚫 Блокировка (ban) и кик пользователей
- 📊 Просмотр рейтинга и информации о пользователях
- 📋 **Управление несколькими чатами** - администраторы могут управлять несколькими группами через команду `/admin_chats`
### Посты по расписанию
- ⏰ Планирование постов для автоматической публикации
@@ -134,20 +209,37 @@ pip install -r requirements.txt
- **NewsAPI Key**: Зарегистрируйтесь на [newsapi.org](https://newsapi.org/)
- **OpenAI API Key**: Зарегистрируйтесь на [platform.openai.com](https://platform.openai.com/) для анализа ошибок ИИ
Обновите `config_local.py` с вашими ключами:
#### ⚠️ **Важно: Порядок загрузки конфигурации**
1. **Переменные окружения** (`.env` файл) имеют **высший приоритет**
2. **config_local.py** загружается вторым и может быть переопределен переменными окружения
3. **Рекомендация:** Используйте `.env` только для секретных ключей (токены, API ключи), а настройки ролей (`ADMIN_IDS`, `SUPER_ADMIN_IDS`) задавайте в `config_local.py`
```python
BOT_TOKEN = "your_bot_token_here"
OPENWEATHER_API_KEY = "your_weather_api_key_here"
NEWS_API_KEY = "your_news_api_key_here"
OPENAI_API_KEY = "your_openai_api_key_here"
##### ❌ **Неверный пример (приведет к ошибке):**
```bash
# .env файл
ADMIN_IDS=123456789
# Настройки уведомлений разработчика
DEVELOPER_CHAT_ID = -1001234567890 # ID чата для уведомлений об ошибках
# config_local.py
SUPER_ADMIN_IDS = [123456789] # Будет переопределено на пустой список!
```
##### ✅ **Правильный пример:**
```bash
# .env файл (только секреты)
BOT_TOKEN="your_bot_token_here"
OPENWEATHER_API_KEY="your_weather_api_key_here"
OPENAI_API_KEY="your_openai_api_key_here"
# config_local.py (настройки ролей)
ADMIN_IDS = [] # Обычные администраторы
SUPER_ADMIN_IDS = [123456789] # Супер-администраторы
DEVELOPER_CHAT_ID = 123456789
ENABLE_DEVELOPER_NOTIFICATIONS = True
ENABLE_AI_ERROR_PROCESSING = True
```
Обновите `config_local.py` с вашими настройками ролей и `config_template.py` с секретными ключами:
### 5. Запуск бота
```bash
python bot.py
@@ -165,12 +257,15 @@ python bot.py
- `/leaderboard` - Топ-10 участников
- `/info` - Информация о вас
#### Администрирование (только в личных чатах)
- `/admin_chats` - Показать список чатов, где вы администратор
#### Информация и сервисы
- `/weather [город]` - Погода в городе
- `/news` - Последние новости
- `/translate [текст] [язык]` - Перевод текста
#### Игры
#### Игры (только в личных чатах)
- `/play_game` - Запустить мини-игру
- Доступные игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой, 2048, Тетрис, Змейка
@@ -193,7 +288,7 @@ python bot.py
#### Система отчетов об ошибках (только админы)
- `/report_error <тип> <заголовок> [описание]` - Отправить отчет об ошибке
- `/admin_errors [статус]` - Показать список ошибок с фильтрацией по статусу
- `/analyze_error_ai <ID>` - Проанализировать конкретную ошибку с помощью ИИ
- `/analyze_error_ai <ID]` - Проанализировать конкретную ошибку с помощью ИИ
- `/process_all_errors_ai` - Обработать все новые ошибки с помощью ИИ
- `/add_error_to_todo <ID> [приоритет]` - Добавить ошибку в TODO список
- `/add_all_analyzed_to_todo` - Добавить все проанализированные ошибки в TODO список
@@ -255,14 +350,29 @@ telegram_bot/
├── messages.py # Текстовые сообщения и константы бота
├── requirements.txt # Зависимости Python (+ openai)
├── test_error_system.py # Тестовый скрипт для проверки системы ошибок
├── test_rate_limiter.py # 🛡️ Тесты rate limiter с поддержкой ранговой системы
├── TODO.md # Список задач разработки с интеграцией ошибок
├── .gitignore # Игнорируемые файлы для Git
├── Dockerfile # Конфигурация для Docker развертывания
├── docker-compose.yml # Оркестрация контейнеров
├── core/
│ ├── rate_limiter.py # 🛡️ Rate limiter с дифференцированными лимитами по рангу
│ ├── permissions.py # Система ролей и разрешений
│ ├── exceptions.py # Кастомные исключения
│ └── ...
├── utils/
│ ├── formatters.py # 🔧 ФОРМАТТЕРЫ СООБЩЕНИЙ И КЛАВИАТУР (исправлены и оптимизированы)
│ ├── __init__.py
│ ├── validators.py
│ └── helpers.py
├── test_utils/
│ └── test_formatters.py # Тесты форматтеров (исправлены)
├── test_performance/
│ └── test_critical_functions.py # Тесты производительности критических функций
├── .github/
│ ├── README.md # Краткое описание для GitHub
│ └── workflows/
│ └── deploy.yml # CI/CD pipeline для GitHub Actions
│ └── ci.yml # 🚀 CI/CD PIPELINE ДЛЯ АВТОМАТИЧЕСКОГО ТЕСТИРОВАНИЯ
└── README.md # Полная документация
```
@@ -320,16 +430,72 @@ python scheduler.py
## Тестирование системы
### Автоматическое тестирование системы отчетов об ошибках
Проект включает комплексную систему тестирования для обеспечения качества и надежности:
Проект включает встроенный тестовый скрипт для проверки функциональности системы отчетов об ошибках:
### 🚀 Автоматическое тестирование с CI/CD
**GitHub Actions workflow** обеспечивает непрерывную интеграцию:
```bash
# Автоматический запуск при каждом коммите
# Тестирование функциональности
# Проверка безопасности (bandit, safety)
# Тесты производительности критических функций
# Валидация базы данных и конфигурации
```
### 🧪 Тесты форматтеров (исправлены и оптимизированы)
```bash
cd telegram_bot
python -m pytest test_utils/test_formatters.py -v
```
**Что тестируется:**
- ✅ Корректность форматирования всех типов сообщений
- ✅ Правильность HTML экранирования специальных символов
- ✅ Создание всех видов клавиатур согласно спецификациям
- ✅ Работа метода медалей в таблице лидеров
- ✅ Производительность критических функций
### 🔍 Тесты целостности базы данных
```bash
cd telegram_bot
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_schema_integrity -v
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_table_constraints -v
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_relationships_integrity -v
```
**Что тестируется:**
- ✅ Наличие всех таблиц согласно DatabaseSchema
- ✅ Корректность структуры таблиц (колонки, типы данных)
- ✅ Внешние ключи и ограничения целостности
- ✅ Связи между таблицами (JOIN запросы)
- ✅ Ограничения PRIMARY KEY и UNIQUE
- ✅ Каскадные операции обновления данных
### 📊 Тесты производительности
```bash
cd telegram_bot
python test_performance/test_critical_functions.py
```
**Показатели производительности:**
- ✅ Форматирование пользовательской информации: < 1мс на операцию
- ✅ Таблица лидеров (1000 пользователей): < 10мс на операцию
- ✅ HTML экранирование: < 0.1мс на операцию
- ✅ Создание клавиатур: < 1мс на клавиатуру
- ✅ Усечение текста: < 0.01мс на операцию
### 🔧 Тесты системы отчетов об ошибках
```bash
python test_error_system.py
```
#### Что тестирует скрипт:
**Что тестирует:**
- ✅ Подключение к базе данных SQLite
- ✅ Создание и структура таблицы ошибок
- ✅ Добавление и получение ошибок из базы данных
@@ -340,7 +506,7 @@ python test_error_system.py
- ✅ Проверка конфигурации
#### Результаты тестирования:
Тестовый скрипт предоставляет подробный отчет о состоянии системы с градацией результатов:
Система предоставляет подробный отчет с градацией результатов:
- **SUCCESS** - тест пройден успешно
- **ERROR** - критическая ошибка, требующая внимания
- **WARNING** - некритическая проблема или рекомендация
@@ -461,10 +627,86 @@ DEVELOPER_CHAT_ID=your_chat_id
- Деплой на сервер при обновлении main ветки
- Автоматическая настройка конфигурации
## 📊 Система мониторинга ошибок
Бот оснащен полнофункциональной системой мониторинга с логированием, метриками и алертами.
### ✅ Возможности мониторинга:
🔍 **Структурированное логирование**
- JSON формат для легкого парсинга
- Разные уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- Автоматическая ротация логов
📊 **Метрики Prometheus**
- Время выполнения команд
- Количество ошибок по типам
- Активность пользователей
- Производительность API
🛡️ **Мониторинг ошибок**
- Автоматический захват всех исключений
- Интеграция с Sentry или GlitchTip
- Performance monitoring
🚨 **Система алертов**
- Алерты при высокой частоте ошибок
- Уведомления в Telegram
- Настраиваемые правила и пороги
### 📁 Файлы мониторинга:
- `core/monitoring.py` - ядро системы мониторинга
- `core/alerts.py` - менеджер алертов
- `prometheus_server.py` - сервер метрик
- `test_monitoring_integration.py` - интеграционные тесты
- `MONITORING.md` - подробная документация
- `README_MONITORING.md` - быстрый старт
- `GLITCHTIP_SETUP.md` - настройка GlitchTip
- `WEBHOOK_ALERTS.md` - webhook для алертов
### 🚀 Быстрый старт мониторинга:
1. **Установите зависимости:**
```bash
pip install prometheus_client sentry-sdk flask
```
2. **Настройте конфигурацию:**
```python
# config_local.py
ENABLE_SENTRY = True
SENTRY_DSN = "http://localhost:8000/api/1/project/your-project/dsn/"
PROMETHEUS_PORT = 8000
ENABLE_DEVELOPER_NOTIFICATIONS = True
DEVELOPER_CHAT_ID = 123456789
```
3. **Запустите GlitchTip:**
```bash
docker-compose up -d # из GLITCHTIP_SETUP.md
```
4. **Запустите бота:**
```bash
python new_bot.py
```
5. **Проверьте метрики:**
- Prometheus: http://localhost:8000/metrics
- GlitchTip: http://localhost:8000
- Логи: bot.log
### 🎯 Результат:
Система мониторинга готова к использованию! Все ошибки, метрики и алерты настроены и протестированы. 📈
---
## Лицензия
MIT License - см. файл LICENSE для подробностей.
---
*Последнее обновление: 16 октября 2025 (добавлена версия 1.4.0 с критическими исправлениями и система отчетов об ошибках)*
*Последнее обновление: 29 октября 2025 (версия 1.8.0 с улучшениями меню и разделением чатов)*