Endpoint для отправки уведомления планировщиком (celery beat)
POST /notifications/send
{
"notification_content_id": "uuid" // ID на содержание уведомления
}
Логика:
Создать в БД запись о новом уведомлении (таблица notifications), получить id
Отправить сообщение в RabbitMQ в очередь notifications.general
Формат сообщения:
{
"notification_id": "85a38bf6-a3f5-4380-bb73-2239ac115823" // ID уведомления
}
Endpoint для отправки уведомлений другими сервисами
POST /notifications
{
// должен быть указан либо user_id, либо role_id
"user_id": "85a38bf6-a3f5-4380-bb73-2239ac115823", // ID пользователя
"user_group_id": "uuid", // ID группы пользователей
"event_type": "user.registered", // Тип события
"template_variable": {
// Переменные для шаблона
"registration_time": "2024-08-06T23:11:47Z",
"confirmation_link": "https://auth.practix.com/confirm/?..."
},
"planned_at": "2024-08-10T10:00:00Z" // если не указано, то уведомление нужно отправить сразу
}
Логика:
Создать в БД запись с содержании уведомления (в таблицу notification_contents)
Создать в БД запись о новом уведомлении (таблица notifications), получить id
Если planned_at не указан, то сразу отправить сообщение в RabbitMQ в очередь notifications.general
Если planned_at указан, то запланировать выполнение celery задачи (создать запись в таблице scheduled_task)
Реализовать API на FastAPI.
Endpoint'ы
Endpoint для отправки уведомления планировщиком (celery beat)
POST /notifications/send
Логика:
notifications
), получить idnotifications.general
Формат сообщения:
Endpoint для отправки уведомлений другими сервисами
POST /notifications
Логика:
notification_contents
)notifications
), получить idnotifications.general
planned_at
указан, то запланировать выполнение celery задачи (создать запись в таблице scheduled_task)