#500 Система фильтрации уведомлений
Компания предоставляет сервис массовой рассылки уведомлений для других бизнесов. Product owner поставил задачу создать систему фильтрации уведомлений с учетом предпочтений пользователей.
Определения
Уведомление содержит:
idуведомления;- Тип уведомления:
EMAIL,SMS,PUSH; idполучателя;- Текст сообщения.
Получатель может иметь настройки предпочтений:
- разрешенные каналы уведомлений;
- заблокированные отправители.
История отправленных уведомлений содержит список уведомлений, которые уже были отправлены пользователю.
Важно
Настройки пользователей и история уведомлений предоставляются другими компонентами системы. В рамках задачи нужно спроектировать контракты для получения этих данных. Реализацию хранения делать не нужно.
Задача
Необходимо написать систему фильтрации уведомлений, которая:
- на вход получает список уведомлений для фильтрации и
idотправителя; - исключает уведомления, которые не соответствуют предпочтениям получателя;
- исключает уведомления от заблокированных отправителей;
- предотвращает повторную отправку уведомления;
- возвращает отфильтрованный список уведомлений, готовых к отправке.
Если уведомление с таким же id уже было отправлено конкретному пользователю за последние 24 часа,
оно не должно быть отправлено снова.
Отправка уведомлений не входит в задачу. Другая команда будет заниматься отправкой отфильтрованного списка.
Разбор вопроса
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору