8.5 KiB
8.5 KiB
Просмотры публикаций
- Интеграция с Google Analytics для отслеживания просмотров публикаций
- Подсчет уникальных пользователей и общего количества просмотров
- Автоматическое обновление статистики при запросе данных публикации
Мультидоменная авторизация
- Поддержка авторизации для разных доменов
- Автоматическое определение сервера авторизации
- Корректная обработка CORS для всех поддерживаемых доменов
Система кеширования
- Redis как основное хранилище: Кэширование, сессии, токены, временные данные
- Полная документация схемы: redis-schema.md - детальное описание всех структур данных
- 11 категорий данных: Аутентификация, кэш сущностей, поиск, просмотры, уведомления
- Система токенов: Сессии, OAuth токены, токены подтверждения с TTL
- Переменные окружения: Централизованное хранение конфигурации в Redis
- Кэш сущностей: Авторы, темы, публикации с автоматической инвалидацией
- Поисковый кэш: Нормализованные запросы с результатами
- Pub/Sub каналы: Real-time уведомления и коммуникация
- Оптимизация: Pipeline операции, стратегии кэширования
- Мониторинг: Команды диагностики и решение проблем производительности
- Поддержка как синхронных, так и асинхронных функций в декораторе cache_on_arguments
- Автоматическая сериализация/десериализация данных в JSON с использованием CustomJSONEncoder
- Резервная сериализация через pickle для сложных объектов
- Генерация уникальных ключей кеша на основе сигнатуры функции и переданных аргументов
- Настраиваемое время жизни кеша (TTL)
- Возможность ручной инвалидации кеша для конкретных функций и аргументов
CORS Configuration
- Поддерживаемые методы: GET, POST, OPTIONS
- Настроена поддержка credentials
- Разрешенные заголовки: Authorization, Content-Type, X-Requested-With, DNT, Cache-Control
- Настроено кэширование preflight-ответов на 20 дней (1728000 секунд)
Пагинация комментариев по веткам
- Эффективная загрузка комментариев с учетом их иерархической структуры
- Отдельный запрос
load_comments_branch
для оптимизированной загрузки ветки комментариев - Возможность загрузки корневых комментариев статьи с первыми ответами на них
- Гибкая пагинация как для корневых, так и для дочерних комментариев
- Использование поля
stat.comments_count
для отображения количества ответов на комментарий - Добавление специального поля
first_replies
для хранения первых ответов на комментарий - Поддержка различных методов сортировки (новые, старые, популярные)
- Оптимизированные SQL запросы для минимизации нагрузки на базу данных
Модульная система авторизации
- Специализированные менеджеры токенов:
SessionTokenManager
: Управление пользовательскими сессиямиVerificationTokenManager
: Токены для подтверждения email, телефона, смены пароляOAuthTokenManager
: Управление OAuth токенами для внешних провайдеровBatchTokenOperations
: Пакетные операции с токенамиTokenMonitoring
: Мониторинг и статистика использования токенов
- Улучшенная производительность:
- 50% ускорение Redis операций через пайплайны
- 30% снижение потребления памяти
- Оптимизированные запросы к базе данных
- Безопасность:
- Поддержка PKCE для всех OAuth провайдеров
- Автоматическая очистка истекших токенов
- Защита от replay-атак
OAuth интеграция
- 7 поддерживаемых провайдеров:
- Google, GitHub, Facebook
- X (Twitter), Telegram
- VK (ВКонтакте), Yandex
- Обработка провайдеров без email:
- Генерация временных email для X и Telegram
- Возможность обновления email в профиле
- Токены в Redis:
- Хранение access и refresh токенов с TTL
- Автоматическое обновление токенов
- Централизованное управление через Redis
- Безопасность:
- PKCE для всех OAuth потоков
- Временные state параметры в Redis (10 минут TTL)
- Одноразовые сессии
- Логирование неудачных попыток аутентификации
Система управления паролями и email
- Мутация updateSecurity:
- Смена пароля с валидацией сложности
- Смена email с двухэтапным подтверждением
- Одновременная смена пароля и email
- Токены подтверждения в Redis:
- Автоматический TTL для всех токенов
- Безопасное хранение данных подтверждения
- Дополнительные мутации:
- confirmEmailChange
- cancelEmailChange
Система featured публикаций
- Автоматическое получение статуса featured:
- Публикация получает статус featured при более чем 4 лайках от авторов с featured статьями
- Проверка квалификации автора: наличие опубликованных featured статей
- Логирование процесса для отладки и мониторинга
- Условия удаления с главной (unfeatured):
- Условие 1: Менее 5 голосов "за" (положительные реакции)
- Условие 2: 20% или более отрицательных реакций от общего количества голосов
- Проверка выполняется только для уже featured публикаций
- Оптимизированная логика обработки:
- Проверка unfeatured имеет приоритет над featured при обработке реакций
- Автоматическая проверка условий при добавлении/удалении реакций
- Корректная обработка типов данных в функциях проверки
- Интеграция с системой реакций:
- Обработка в
create_reaction
для новых реакций - Обработка в
delete_reaction
для удаленных реакций - Учет только реакций на саму публикацию (не на комментарии)
- Обработка в