Разработайте микросервис, который будет формировать дайджесты контента для пользователей на основе их подписок. Дайджест представляет собой выборку постов из различных источников, на которые подписан пользователь. Вы можете выбрать любую технологию и форматы обмена данными.
Протестировать развернутый проект можно по этой ссылке
git clone git@github.com:ead3471/digest.git
cd digest
nano .env
docker-compose up
docker-compose exec api sh
alembic upgrade head
http://127.0.0.1:8080/docs
-
Получение запроса на формирование дайджеста: Микросервис должен уметь принимать запросы от основного приложения на формирование дайджеста для пользователя, идентифицируемого по уникальному ID.
-
Определение подписок пользователя: После получения запроса, микросервис должен определить источники, на которые подписан пользователь, используя информацию о подписках пользователя.
-
Сбор постов из подписок: Зная подписки пользователя, микросервис должен собирать посты из этих источников. Подумайте о нём как о "сканере" подписок пользователя в поисках нового контента.
-
Фильтрация постов: Из собранных постов отфильтруйте те, которые не соответствуют интересам пользователя или недостаточно популярны. Микросервис должен использовать определенные критерии для фильтрации.
-
Создание дайджеста: После фильтрации, оставшиеся посты упаковываются в дайджест. Дайджест - это совокупность постов, отобранных для пользователя.
-
Отправка дайджеста: Сформированный дайджест возвращается в главное приложение, которое предоставит его пользователю.
- Модель User: Хранит данные о пользователе, включая ID и имя.
- Модель Subscription: Содержит информацию о подписках пользователя, включая ID подписки, название источника и ID пользователя.
- Модель Post: Включает информацию о постах из подписок пользователя, включая ID поста, ID подписки, содержание поста и популярность.
- Модель Digest: Содержит информацию о сформированном дайджесте, включая ID дайджеста, список постов и ID пользователя.
- Использование Docker для создания контейнеризованного микросервиса.
- Использование SQLAlchemy для взаимодействия с базой данных.
- Использование RabbitMQ для асинхронной обработки запросов на формирование дайджеста.
- Написание автоматических тестов для проверки функциональности микросервиса.
- Работоспособность микросервиса.
- Качество кода (организованность, чистота, следование стандартам).
- Соответствие функциональным требованиям.
- Реализация дополнительных требований (если выбраны).