Понятия
Модели и поля
Уведомление
Одно событие-уведомление компании, адресованное объекту системы и разосланное по каналам. Рассылка получателям запускается при создании записи. Идентификация
Связи
Содержимое
Адресация
Маршрутизация
Захват
Служебные
Уведомление пользователя
Персональное состояние уведомления для конкретного получателя (прочтение/архив). Уникальность по паре компания + пользователь + уведомление. Идентификация
Связи
Состояние
Служебные
Список уведомлений (API)
Постраничный список уведомлений компании с курсорной пагинацией, поиском по тексту и фильтрами прочтения/архива. Поиск по тексту уведомления; сортировка по убыванию времени обновления.Базовый запрос уведомлений
Общий queryset, который ограничивает выборку текущей компанией и скрывает одноразовые уведомления, уже забранные другим пользователем. Исключает одноразовые уведомления с заполненным получателем-захватчиком, не равным текущему пользователю.Курсорная пагинация уведомлений
Настройка курсорной постраничности со сортировкой по убыванию времени обновления.Действия пользователя над уведомлениями
Набор действий: счётчик непрочитанных, пометка прочтения и архивация. Счётчик непрочитанных = все видимые уведомления минус строки состояния пользователя.Формат уведомления
Формат выдачи уведомления в списке. Поле автора отдаётся как идентификатор пользователя; создано/одноразовый захват/кем забрано/когда забрано доступны только для чтения.Базовый ввод по списку ID
Общая часть запросов чтения/архивации: список идентификаторов уведомлений.Пометить прочитанным
Атомарно создаёт строки состояния «прочитано»; для одноразовых уведомлений реализует захват по принципу «первый выиграл» и рассылает удаление у остальных. Признак «прочитать все» помечает все уведомления; проигравшие гонку за одноразовое уведомление пропускаются.Архивировать уведомления
Переводит строки состояния пользователя в архив; при выборе «архивировать все» досоздаёт недостающие состояния и архивирует всё. Признак «архивировать все» архивирует все уведомления пользователя.Фильтр уведомлений пользователя
Фильтрация списка по состоянию пользователя: прочитано, в архиве, тип объекта. Признаки «в архиве» и «прочитано» вычисляются через наличие строк персонального состояния.Статусы и справочники
Тип уведомления
Уровень важности уведомления (влияет на визуальное оформление).- Информация
- Предупреждение
- Тревога