# Система загрузки публикаций ## Особенности реализации ### Базовый запрос - Автоматически подгружает основного автора - Добавляет основную тему публикации - Поддерживает гибкую систему фильтрации - Оптимизирует запросы на основе запрошенных полей ### Статистика - Подсчёт лайков/дислайков - Количество комментариев - Дата последней реакции - Статистика подгружается только при запросе поля `stat` ### Оптимизация производительности - Ленивая загрузка связанных данных - Кэширование результатов на 5 минут - Пакетная загрузка авторов и тем - Использование подзапросов для сложных выборок ## Типы лент ### Случайные топовые посты (load_shouts_random_top) **Преимущества:** - Разнообразный контент - Быстрая выборка из кэша топовых постов - Настраиваемый размер пула для выборки **Ограничения:** - Обновление раз в 5 минут - Максимальный размер пула: 100 постов - Учитываются только лайки/дислайки (без комментариев) ### Неоцененные посты (load_shouts_unrated) **Преимущества:** - Помогает найти новый контент - Равномерное распределение оценок - Случайный порядок выдачи **Ограничения:** - Только посты с менее чем 3 реакциями - Не учитываются комментарии - Без сортировки по рейтингу ### Закладки (load_shouts_bookmarked) **Преимущества:** - Персонализированная выборка - Быстрый доступ к сохраненному - Поддержка всех фильтров **Ограничения:** - Требует авторизации - Ограничение на количество закладок - Кэширование отключено ## Важные моменты ### Пагинация - Стандартный размер страницы: 10 - Максимальный размер: 100 - Поддержка курсор-пагинации ### Кэширование - TTL: 5 минут - Инвалидация при изменении поста - Отдельный кэш для каждого типа сортировки ### Сортировка - По рейтингу (лайки минус дислайки) - По количеству комментариев - По дате последней реакции - По дате публикации (по умолчанию) ### Безопасность - Проверка прав доступа - Фильтрация удаленного контента - Защита от SQL-инъекций - Валидация входных данных