This commit is contained in:
2025-10-09 01:16:56 +03:00
32 changed files with 905 additions and 382 deletions

View File

@@ -1,6 +1,6 @@
# Changelog
## [0.9.29] - 2025-10-08
## [0.9.32] - 2025-10-08
### 🎯 Search Quality Upgrade: ColBERT + Native MUVERA + FAISS
@@ -68,6 +68,69 @@ SEARCH_MODEL_TYPE=biencoder
- pylate issue: https://github.com/lightonai/pylate/issues/142
- Model: `answerdotai/answerai-colbert-small-v1`
## [0.9.32] - 2025-10-05
### ✨ Features
- **Редактирование мигрированных шаутов**: Добавлена мутация `create_draft_from_shout` для создания черновика из существующего опубликованного шаута
- Создаёт черновик со всеми данными из шаута (title, body, lead, topics, authors, media, etc.)
- Проверяет авторство перед созданием черновика
- Переиспользует существующий черновик если он уже создан для этого шаута
- Копирует все связи: авторов и темы (включая main topic)
### 🔧 Fixed
- **NotificationEntity enum**: Исправлена ошибка `NotificationEntity.FOLLOWER``NotificationEntity.AUTHOR`
- В enum не было значения `FOLLOWER`, используется `AUTHOR` для уведомлений о подписчиках
### Technical Details
- `core/schema/mutation.graphql`: добавлена мутация `create_draft_from_shout(shout_id: Int!): CommonResult!`
- `core/resolvers/draft.py`: добавлен resolver `create_draft_from_shout` с валидацией авторства
- `core/resolvers/notifier.py`: исправлено использование `NotificationEntity.AUTHOR` вместо несуществующего `FOLLOWER`
## [0.9.31] - 2025-10-04
### ✅ Fixed: Notifications TODOs
- **Уведомления о followers**: Добавлена обработка уведомлений о подписчиках в `notifications_seen_thread`
- Теперь при клике на группу "followers" все уведомления о подписках помечаются как прочитанные
- Исправлена обработка thread ID `"followers"` отдельно от shout/reaction threads
- **Уведомления о новых публикациях**: Добавлена обработка уведомлений о новых shouts в `notifications_seen_thread`
- При открытии публикации уведомления о ней тоже помечаются как прочитанные
- Исправлена логика парсинга thread ID для поддержки разных форматов
- **Code Quality**: Использованы enum константы (`NotificationAction`, `NotificationEntity`) вместо строк
- **Убраны устаревшие TODO**: Удален TODO про `notification_id` как offset (текущая логика с timestamp работает корректно)
### Technical Details
- `core/resolvers/notifier.py`: расширена функция `notifications_seen_thread` для поддержки всех типов уведомлений
- Добавлена обработка `thread == "followers"` для уведомлений о подписках
- Добавлена обработка `NotificationEntity.SHOUT` для уведомлений о новых публикациях
- Улучшена обработка ошибок с `logger.warning()` вместо исключений
## [0.9.30] - 2025-10-02
### 🔧 Fixed
- **Ревалидация кеша featured материалов**: Критическое исправление инвалидации кеша при изменении featured статуса
- Добавлены ключи кеша для featured материалов в `invalidate_shout_related_cache`
- Исправлена функция `set_featured`: добавлена инвалидация кеша лент
- Исправлена функция `set_unfeatured`: добавлена инвалидация кеша лент
- Теперь материалы корректно появляются/исчезают с главной страницы при фичеринге/расфичеринге
- Улучшена производительность через асинхронную инвалидацию кеша
### ✅ Code Quality
- **Python Standards Compliance**: Код соответствует стандартам 003-python-standards.mdc
- Пройдены проверки Ruff (linting & formatting)
- Пройдены проверки MyPy (type checking)
- Все функции имеют типы и докстринги
- Тесты проходят успешно
## [0.9.29] - 2025-10-01
### 🔧 Fixed
- **Фичерение публикаций**: Исправлена логика автоматического фичерения/расфичерения
- Теперь учитываются все положительные реакции (LIKE, ACCEPT, PROOF), а не только LIKE
- Исправлен подсчет реакций в `check_to_unfeature`: используется POSITIVE + NEGATIVE вместо только RATING_REACTIONS
- Добавлена явная проверка `reply_to.is_(None)` для исключения комментариев
- **Ревалидация кеша**: Добавлена ревалидация кеша публикаций, авторов и тем при изменении `featured_at`
- Улучшено логирование для отладки процесса фичерения
## [0.9.28] - 2025-09-28
### 🍪 CRITICAL Cross-Origin Auth