Patch Notes dev-10 #12
Reference in New Issue
Block a user
Delete Branch "dev-10"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Patch Notes - Версия dev-10
📋 Обзор изменений
Версия dev-10 включает значительные улучшения системы управления банами, обработки постов и работы с медиагруппами. Добавлена полная история банов пользователей, улучшена система хранения и форматирования текстов постов, а также проведен рефакторинг обработчиков блокировок.
🆕 Новые функции
1. История банов пользователей (Blacklist History)
Добавлена система отслеживания истории банов/разбанов
blacklist_historyдля хранения полной истории блокировокНовый репозиторий
BlacklistHistoryRepositoryМиграционные скрипты
create_blacklist_history_table.py- создание таблицы историиmigrate_blacklist_to_history.py- миграция существующих данных из blacklist в blacklist_history2. Отслеживание автора блокировки
Добавлено поле
ban_authorв модельBlacklistUserМиграционный скрипт
add_ban_author_column_to_blacklist.py- добавление колонки ban_author в существующую таблицу blacklist3. Хранение сырых текстов постов
Изменена логика хранения и форматирования текстов постов
is_anonymousНовые методы в
PostRepositoryget_post_text_by_helper_id()- получение сырого текста по helper_message_idget_post_text_and_anonymity_by_message_id()- получение текста и флага анонимностиget_post_text_and_anonymity_by_helper_id()- получение текста и флага анонимности по helper_idМиграционные скрипты
add_is_anonymous_column.py- добавление колонки is_anonymousclean_post_text.py- очистка и нормализация текстов постов в базе данныхbackfill_post_status_legacy.py- обновление статусов старых постов🔄 Улучшения и рефакторинг
1. Рефакторинг процесса блокировки пользователей
Улучшена обработка блокировок в callback-обработчиках
Обновлены сервисы
AdminService- обновлена работа с ban_authorBanService- улучшена обработка блокировок с учетом историиAsyncBotDB.set_user_blacklist()- автоматическое создание записи в истории2. Улучшение обработки медиагрупп
Обновлена обработка статусов медиагрупп
update_status_for_media_group_by_helper_id()вPostRepositoryИнтеграционные тесты
3. Улучшение управления статусами сообщений
🗄️ Изменения в базе данных
Новые таблицы
blacklist_history- история банов/разбанов пользователейИзменения в существующих таблицах
blacklist- добавлено полеban_author(INTEGER, FOREIGN KEY)post_from_telegram_suggest- добавлено полеis_anonymous(INTEGER)🧪 Тестирование
Новые тесты
test_blacklist_history_repository.py- полное покрытие тестами нового репозитория истории бановtest_post_repository.py- расширены тесты для работы с сырыми текстамиtest_post_service.py- новые тесты для сервиса постовtest_post_repository_integration.py- интеграционные тесты для репозитория постовtest_auto_unban_integration.py- расширены интеграционные тесты авторазбанаОбновленные тесты
test_blacklist_repository.py- обновлены тесты с учетом ban_authortest_async_db.py- добавлены тесты для новых методов работы с историейtest_refactored_admin_handlers.py- обновлены тесты обработчиков админов🛠️ Миграционные скрипты
Добавлены следующие скрипты миграции:
create_blacklist_history_table.py- создание таблицы истории бановmigrate_blacklist_to_history.py- миграция данных из blacklist в blacklist_historyadd_ban_author_column_to_blacklist.py- добавление колонки ban_authoradd_is_anonymous_column.py- добавление колонки is_anonymousbackfill_post_status_legacy.py- обновление статусов старых постовclean_post_text.py- очистка и нормализация текстов постов📊 Статистика изменений
Основные измененные компоненты:
database/async_db.py- добавлены методы работы с историей бановdatabase/models.py- добавлена модельBlacklistHistoryRecorddatabase/repositories/blacklist_history_repository.py- новый репозиторий (119 строк)database/repositories/blacklist_repository.py- обновлен для поддержки ban_authordatabase/repositories/post_repository.py- добавлены методы работы с сырыми текстамиhelper_bot/handlers/callback/services.py- рефакторинг публикации постовhelper_bot/handlers/callback/callback_handlers.py- улучшена обработка блокировокhelper_bot/handlers/private/services.py- обновлена обработка постов🔧 Технические улучшения
Репозитории
BlacklistHistoryRepositoryдля работы с историей бановBlacklistRepositoryдля поддержки ban_authorPostRepositoryметодами для работы с сырыми текстамиСервисы
AsyncBotDBдля автоматического создания записей в историиPostPublishServiceдля работы с сырыми текстамиAdminServiceиBanServiceдля поддержки ban_authorУтилиты
helper_func.py🐛 Исправления ошибок
📝 Примечания для разработчиков
Миграция данных: Перед обновлением необходимо выполнить миграционные скрипты в следующем порядке:
create_blacklist_history_table.pyadd_ban_author_column_to_blacklist.pyadd_is_anonymous_column.pymigrate_blacklist_to_history.py(опционально, для миграции существующих данных)backfill_post_status_legacy.py(опционально)clean_post_text.py(опционально)Обратная совместимость: Все изменения обратно совместимы. Старые данные будут работать корректно.
Производительность: Добавлены индексы для оптимизации запросов к истории банов.
📅 Временная шкала разработки
✅ Готовность к релизу
Версия dev-10 готова к тестированию. Все основные функции реализованы, тесты написаны и проходят успешно. Рекомендуется провести дополнительное тестирование в тестовой среде перед развертыванием в продакшн.