Improve topic sorting: add popular sorting by publications and authors count

This commit is contained in:
2025-06-02 02:56:11 +03:00
parent baca19a4d5
commit 3327976586
113 changed files with 7238 additions and 3739 deletions

View File

@@ -1,15 +1,40 @@
# Changelog
## [Unreleased]
## [0.5.0]
### Добавлено
- **НОВОЕ**: Поддержка дополнительных OAuth провайдеров:
- поддержка vk, telegram, yandex, x
- Обработка провайдеров без email (X, Telegram) - генерация временных email адресов
- Полная документация в `docs/oauth-setup.md` с инструкциями настройки
- Маршруты: `/oauth/x`, `/oauth/telegram`, `/oauth/vk`, `/oauth/yandex`
- Поддержка PKCE для всех провайдеров для дополнительной безопасности
- Статистика пользователя (shouts, followers, authors, comments) в ответе метода `getSession`
- Интеграция с функцией `get_with_stat` для единого подхода к получению статистики
- **НОВОЕ**: Полная система управления паролями и email через мутацию `updateSecurity`:
- Смена пароля с валидацией сложности и проверкой текущего пароля
- Смена email с двухэтапным подтверждением через токен
- Одновременная смена пароля и email в одной транзакции
- Дополнительные мутации `confirmEmailChange` и `cancelEmailChange`
- **Redis-based токены**: Все токены смены email хранятся в Redis с автоматическим TTL
- **Без миграции БД**: Система не требует изменений схемы базы данных
- Полная документация в `docs/security.md`
- Комплексные тесты в `test_update_security.py`
- **НОВОЕ**: OAuth токены перенесены в Redis:
- Модуль `auth/oauth_tokens.py` для управления OAuth токенами через Redis
- Поддержка access и refresh токенов с автоматическим TTL
- Убраны поля `provider_access_token` и `provider_refresh_token` из модели Author
- Централизованное управление токенами всех OAuth провайдеров (Google, Facebook, GitHub)
- **Внутренняя система истечения Redis**: Использует SET + EXPIRE для точного контроля TTL
- Дополнительные методы: `extend_token_ttl()`, `get_token_info()` для гибкого управления
- Мониторинг оставшегося времени жизни токенов через TTL команды
- Автоматическая очистка истекших токенов
- Улучшенная безопасность и производительность
### Исправлено
- **КРИТИЧНО**: Ошибка в функции `unfollow` с некорректным состоянием UI:
- **Проблема**: При попытке отписки от несуществующей подписки сервер возвращал ошибку "following was not found" с пустым списком подписок `[]`, что приводило к тому, что клиент не обновлял UI состояние из-за условия `if (result && !result.error)`
- **Решение**:
- **Решение**:
- Функция `unfollow` теперь всегда возвращает актуальный список подписок из кэша/БД, даже если подписка не найдена
- Добавлена инвалидация кэша подписок после операций follow/unfollow: `author:follows-{entity_type}s:{follower_id}`
- Улучшено логирование для отладки операций подписок
@@ -51,6 +76,10 @@
- Обновлен `docs/follower.md` с подробным описанием исправлений в follow/unfollow
- Добавлены примеры кода и диаграммы потока данных
- Документированы все кейсы ошибок и их обработка
- **НОВОЕ**: Мутация `getSession` теперь возвращает email пользователя:
- Используется `access=True` при сериализации данных автора для владельца аккаунта
- Обеспечен доступ к защищенным полям для самого пользователя
- Улучшена безопасность возврата персональных данных
#### [0.4.23] - 2025-05-25
@@ -493,4 +522,4 @@
- `gittask`, `inbox` and `auth` logics removed
- `settings` moved to base and now smaller
- new outside auth schema
- removed `gittask`, `auth`, `inbox`, `migration`
- removed `gittask`, `auth`, `inbox`, `migration`