> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Глоссарий: Чтение, архивация и список

> Справочник моделей, полей и справочников уведомлений: доставка, персональное состояние, чтение и архивация.

Справочник всех сущностей и полей, задействованных в списке уведомлений, их чтении и архивации. Это словарь-компаньон к странице логики [Чтение, архивация и список](/ru/logic/notifications/read-archive).

## Понятия

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

## Модели и поля

### Уведомление

Одно событие-уведомление компании, адресованное объекту системы и разосланное по каналам.

*Рассылка получателям запускается при создании записи.*

**Идентификация**

| Поле          | Тип   | Описание       |
| ------------- | ----- | -------------- |
| Идентификатор | число | первичный ключ |

**Связи**

| Поле           | Тип   | Описание                                                       |
| -------------- | ----- | -------------------------------------------------------------- |
| Компания       | связь | Компания-владелец уведомления (общая/глобальная модель).       |
| Автор/источник | связь | Пользователь, породивший уведомление; при удалении обнуляется. |

**Содержимое**

| Поле        | Тип          | Описание                                                                         |
| ----------- | ------------ | -------------------------------------------------------------------------------- |
| Текст       | текст        | Основное содержимое сообщения.                                                   |
| Тип         | перечисление | Уровень важности (информация/предупреждение/тревога), по умолчанию «Информация». |
| Доп. данные | JSON         | Произвольные полезные данные (например, задача по лиду).                         |

**Адресация**

| Поле               | Тип            | Описание                                                                    |
| ------------------ | -------------- | --------------------------------------------------------------------------- |
| Тип объекта        | текст          | Строковый код связанной сущности (заявка, задача по лиду, документ и т.д.). |
| ID объекта         | число          | Идентификатор связанной сущности; используется для построения ссылок.       |
| Целевые получатели | список (числа) | Явный список получателей; если задан, доставка сужается только до них.      |

**Маршрутизация**

| Поле            | Тип                   | Описание                                                       |
| --------------- | --------------------- | -------------------------------------------------------------- |
| Тема            | перечисление          | Тема уведомления для фильтрации доступа, по умолчанию базовая. |
| Каналы доставки | список (перечисление) | Разрешённые каналы (телеграм/пуш/веб); по умолчанию все три.   |

**Захват**

| Поле               | Тип        | Описание                                                                  |
| ------------------ | ---------- | ------------------------------------------------------------------------- |
| Одноразовый захват | флаг       | Уведомление, которое «прочитывает» только один пользователь.              |
| Кем захвачено      | связь      | Пользователь, забравший одноразовое уведомление; при удалении обнуляется. |
| Время захвата      | дата/время | Момент, когда уведомление было захвачено.                                 |

**Служебные**

| Поле      | Тип        | Описание                                          |
| --------- | ---------- | ------------------------------------------------- |
| Создано   | дата/время | Из базовой модели.                                |
| Обновлено | дата/время | Из базовой модели; ключевое для окна группировки. |

### Уведомление пользователя

Персональное состояние уведомления для конкретного получателя (прочтение/архив).

*Уникальность по паре компания + пользователь + уведомление.*

**Идентификация**

| Поле          | Тип   | Описание       |
| ------------- | ----- | -------------- |
| Идентификатор | число | первичный ключ |

**Связи**

| Поле        | Тип   | Описание                                                                |
| ----------- | ----- | ----------------------------------------------------------------------- |
| Компания    | связь | Компания-владелец записи.                                               |
| Уведомление | связь | Родительское уведомление.                                               |
| Получатель  | связь | Пользователь, для которого хранится состояние; при удалении обнуляется. |

**Состояние**

| Поле     | Тип  | Описание                                                  |
| -------- | ---- | --------------------------------------------------------- |
| В архиве | флаг | Признак того, что пользователь заархивировал уведомление. |

**Служебные**

| Поле      | Тип        | Описание                                             |
| --------- | ---------- | ---------------------------------------------------- |
| Создано   | дата/время | Из базовой модели; трактуется как отметка прочтения. |
| Обновлено | дата/время | Из базовой модели.                                   |

### Список уведомлений (API)

Постраничный список уведомлений компании с курсорной пагинацией, поиском по тексту и фильтрами прочтения/архива.

*Поиск по тексту уведомления; сортировка по убыванию времени обновления.*

### Базовый запрос уведомлений

Общий queryset, который ограничивает выборку текущей компанией и скрывает одноразовые уведомления, уже забранные другим пользователем.

*Исключает одноразовые уведомления с заполненным получателем-захватчиком, не равным текущему пользователю.*

### Курсорная пагинация уведомлений

Настройка курсорной постраничности со сортировкой по убыванию времени обновления.

### Действия пользователя над уведомлениями

Набор действий: счётчик непрочитанных, пометка прочтения и архивация.

*Счётчик непрочитанных = все видимые уведомления минус строки состояния пользователя.*

### Формат уведомления

Формат выдачи уведомления в списке.

*Поле автора отдаётся как идентификатор пользователя; создано/одноразовый захват/кем забрано/когда забрано доступны только для чтения.*

| Поле              | Тип        | Описание                              |
| ----------------- | ---------- | ------------------------------------- |
| Идентификатор     | число      |                                       |
| Текст             | текст      |                                       |
| Автор/адресат     | число      | источник — идентификатор пользователя |
| Тип объекта       | текст      |                                       |
| ID объекта        | число      |                                       |
| Создано           | дата/время |                                       |
| Доп. данные       | JSON       |                                       |
| Читается единожды | флаг       |                                       |
| Кто забрал        | связь      |                                       |
| Когда забрано     | дата/время |                                       |

### Базовый ввод по списку ID

Общая часть запросов чтения/архивации: список идентификаторов уведомлений.

| Поле           | Тип    | Описание                          |
| -------------- | ------ | --------------------------------- |
| ID уведомлений | список | перечень уведомлений для операции |

### Пометить прочитанным

Атомарно создаёт строки состояния «прочитано»; для одноразовых уведомлений реализует захват по принципу «первый выиграл» и рассылает удаление у остальных.

*Признак «прочитать все» помечает все уведомления; проигравшие гонку за одноразовое уведомление пропускаются.*

| Поле           | Тип    | Описание                                |
| -------------- | ------ | --------------------------------------- |
| ID уведомлений | список | какие уведомления пометить прочитанными |
| Прочитать все  | флаг   | пометить все непрочитанные              |

### Архивировать уведомления

Переводит строки состояния пользователя в архив; при выборе «архивировать все» досоздаёт недостающие состояния и архивирует всё.

*Признак «архивировать все» архивирует все уведомления пользователя.*

| Поле             | Тип    | Описание                       |
| ---------------- | ------ | ------------------------------ |
| ID уведомлений   | список | какие уведомления архивировать |
| Архивировать все | флаг   | архивировать все уведомления   |

### Фильтр уведомлений пользователя

Фильтрация списка по состоянию пользователя: прочитано, в архиве, тип объекта.

*Признаки «в архиве» и «прочитано» вычисляются через наличие строк персонального состояния.*

| Поле        | Тип    | Описание                                      |
| ----------- | ------ | --------------------------------------------- |
| Тип объекта | список | фильтр по одному или нескольким типам объекта |
| В архиве    | флаг   | есть/нет строка состояния с признаком архива  |
| Прочитано   | флаг   | есть/нет строка состояния без признака архива |

## Статусы и справочники

### Тип уведомления

Уровень важности уведомления (влияет на визуальное оформление).

* Информация
* Предупреждение
* Тревога
