Создать сервис на Django. Создать таблицы описанные ниже
Из админки должна быть возможность:
Просматривать базовую информацию об уведомления (таблица notifications)
Просматривать содержания уведомлений (таблица notification_content)
Просматривать, создавать и редактировать шаблоны для email-рассылок (таблица notification_templates). Нужно валидироватьtemplate_text (Jinja2) перед записью в БД.
Планировать разовые запуски уведомлений (Clocked из Celery Beat). Будет реализована в рамках задачи по планировщику.
Создавать расписания для рассылок уведомлений (Periodic tasks из Celery Beat). Будет реализована в рамках задачи по планировщику.
Схема данных
Таблица notifications хранит базовую информацию об уведомлениях, которые уже готовы и должны быть отправлены немедленно
CREATE TABLE notifications
(
id UUID PRIMARY KEY,
content_id UUID REFERENCES notification_contents(id), -- Ссылка на содержание уведомления
created_at TIMESTAMPTZ NOT NULL,
sent_at TIMESTAMPTZ NOT NULL
)
Таблица notification_contents хранит содержание (параметры) для уведомлений (возможно для одного уведомления, возможно для целой группы - рассылки)
CREATE TABLE notification_contents
(
id UUID PRIMARY_KEY,
event_type TEXT, -- Тип события ('user_registered', 'news', 'premiere', ...)
template_variables JSONB, -- Переменные для подстановки в шаблон
user_id UUID, -- ID пользователя, если уведомление - персонализированное
user_group_id UUID, -- ID группы пользователей (для массовой рассылки)
created_at TIMESTAMPTZ NOT NULL,
updated_at TIMESTAMPTZ NOT NULL
)
Таблица notification_templates хранит информацию о шаблонах для уведомлений
CREATE TABLE notification_templates
(
id UUID PRIMARY KEY,
event_type TEXT UNIQUE, -- Тип события (по нему будет осуществляться поиск)
template_text TEXT NOT NULL, -- HTML Jinja2 шаблон
channels ARRAY[TEXT], -- Список способов доставки - SMS, Email, WebSocket
created_at TIMESTAMPTZ NOT NULL,
updated_at TIMESTAMPTZ NOT NULL
)
Admin панель
Создать сервис на Django. Создать таблицы описанные ниже
Из админки должна быть возможность:
notifications
)notification_content
)notification_templates
). Нужно валидироватьtemplate_text
(Jinja2) перед записью в БД.Схема данных
Таблица
notifications
хранит базовую информацию об уведомлениях, которые уже готовы и должны быть отправлены немедленноТаблица
notification_contents
хранит содержание (параметры) для уведомлений (возможно для одного уведомления, возможно для целой группы - рассылки)Таблица
notification_templates
хранит информацию о шаблонах для уведомленийИндексы: