> ## 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/user/model).

## Понятия

| Понятие                               | Значение                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Пользователь                          | Кастомная телефон-центричная модель пользователя (AUTH\_USER\_MODEL), общая (глобальная) и не привязанная к компании, наследует AbstractUser; один глобальный пароль на человека. Композитная уникальность задана по тройке логин + телефон + почта, а не по каждому полю отдельно; из-за NULL в базе данных это допускает дубли телефонов и почт, реальная защита — только сервис проверки. |
| Менеджер пользователей                | Кастомный менеджер для создания пользователей, обычных клиентов и суперпользователей; при создании клиента назначается самый дешёвый тариф лояльности.                                                                                                                                                                                                                                       |
| Пользователь компании (членство)      | Членство пользователя в конкретной компании и его роли/права в рамках этой компании; источник значений для вычисляемых свойств роли пользователя.                                                                                                                                                                                                                                            |
| Группа компании                       | Расширение стандартной группы платформа для привязки роли к компании и её отображаемого названия.                                                                                                                                                                                                                                                                                            |
| Доверенность                          | Документ-доверенность, связанный один-к-одному с пользователем, с иерархией через родительскую доверенность.                                                                                                                                                                                                                                                                                 |
| Сигнал: создание/привязка клиента     | После сохранения пользователя в контексте компании создаёт или привязывает CRM-клиента по нормализованному телефону; пропускается для персонала и субарендаторов.                                                                                                                                                                                                                            |
| Сигнал: обновление кэша пользователей | После сохранения пользователя инвалидирует его кэш и пересобирает список активного персонала.                                                                                                                                                                                                                                                                                                |
| Сигнал: сброс кэша при смене групп    | При изменении групп пользователя инвалидирует кэш затронутых пользователей.                                                                                                                                                                                                                                                                                                                  |
| Админка пользователя                  | Настройка отображения пользователя в админке: список, порядок, наборы полей и отдельный менеджер для выборки.                                                                                                                                                                                                                                                                                |

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

### Пользователь

*Кастомная телефон-центричная модель пользователя (AUTH\_USER\_MODEL), общая (глобальная) и не привязанная к компании, наследует AbstractUser; один глобальный пароль на человека. Композитная уникальность задана по тройке логин + телефон + почта — не по каждому полю; из-за NULL в базе данных допускает дубли телефонов и почт, реальная защита — только сервис проверки пользователя.*

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

| Поле                     | Тип            | Описание                                                                      |
| ------------------------ | -------------- | ----------------------------------------------------------------------------- |
| Идентификатор            | число          | первичный ключ                                                                |
| Имя пользователя (логин) | текст (до 150) | необязательное, может быть пустым; проверяется валидатором имени пользователя |
| Телефон                  | текст          | основной идентификатор для входа; может быть пустым                           |
| Электронная почта        | текст          | пустая строка при сохранении приводится к пустому значению                    |
| Пароль (хэш)             | текст          | единый глобальный пароль пользователя; наследуется из базовой модели          |
| Имя                      | текст          | обязательное при создании                                                     |
| Фамилия                  | текст          | обязательное при создании                                                     |

**Профиль**

| Поле          | Тип         | Описание                                 |
| ------------- | ----------- | ---------------------------------------- |
| Дата рождения | дата        |                                          |
| Аватар        | изображение | при изменении генерируется миниатюра     |
| Доп. данные   | JSON        | произвольные дополнительные поля профиля |

**Глобальные роли**

| Поле                          | Тип  | Описание                                                                                    |
| ----------------------------- | ---- | ------------------------------------------------------------------------------------------- |
| Активен                       | флаг | стандартный флаг активности учётной записи                                                  |
| Персонал (глобально)          | флаг | глобальный доступ в админку; для доступа в рамках компании смотри роль персонала в членстве |
| Суперпользователь (глобально) | флаг | глобальные права; роль в компании — в членстве                                              |
| Субарендатор (глобально)      | флаг | глобальный признак; роль в компании — в членстве                                            |

**Связи**

| Поле                 | Тип                      | Описание                                                                                |
| -------------------- | ------------------------ | --------------------------------------------------------------------------------------- |
| Группа (роль)        | связь                    | связь на группу; помечено на перенос в членство — устаревающая глобальная привязка роли |
| Программа лояльности | связь                    | связь на лояльность; при создании клиента ставится самый дешёвый тариф                  |
| Группы               | связь (многие-ко-многим) | стандартные группы прав; изменение сбрасывает кэш пользователя                          |
| Права пользователя   | связь (многие-ко-многим) | стандартные индивидуальные права                                                        |

**Даты**

| Поле             | Тип        | Описание                                     |
| ---------------- | ---------- | -------------------------------------------- |
| Последний вход   | дата/время | обновление игнорируется при инвалидации кэша |
| Дата регистрации | дата/время | сортировка пользователей по убыванию         |

**Вычисляемые**

| Поле                              | Тип                 | Описание                                                                                                                                                                                         |
| --------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Полное имя                        | вычисляется         | имя плюс фамилия                                                                                                                                                                                 |
| Суперпользователь компании        | вычисляется (флаг)  | читает членство текущей компании с кэшированием; вне компании возвращает глобальный признак суперпользователя                                                                                    |
| Персонал компании                 | вычисляется (флаг)  | читает членство текущей компании с кэшированием; вне компании возвращает глобальный признак персонала                                                                                            |
| Субарендатор компании             | вычисляется (флаг)  | читает членство с кэшированием; вне компании возвращает глобальный признак субарендатора                                                                                                         |
| Группа в компании                 | вычисляется (связь) | группа из членства текущей компании с кэшированием; вне компании — глобальная группа                                                                                                             |
| Определение компании пользователя | вычисляется (метод) | используется при аутентификации; вне компании берёт членство с наибольшим идентификатором компании — при нескольких компаниях детерминированно, но может маршрутизировать в неожиданную компанию |
| Проверка списка прав              | вычисляется (метод) | возвращает истину, если есть любое из перечисленных прав                                                                                                                                         |

### Менеджер пользователей

*Кастомный менеджер для создания пользователей, обычных клиентов и суперпользователей. Создание клиента назначает самый дешёвый тариф лояльности; получение пользователя — обёртка над выборкой с ошибкой 404 при отсутствии.*

| Поле                      | Тип   | Описание                                                  |
| ------------------------- | ----- | --------------------------------------------------------- |
| Получить пользователя     | метод | выборка по переданным данным с ошибкой 404 при отсутствии |
| Создать пользователя      | метод | простое создание без лояльности                           |
| Создать клиента           | метод | создание с назначением дешёвого тарифа лояльности         |
| Создать суперпользователя | метод | активность, персонал и суперпользователь — истина         |

### Пользователь компании (членство)

*Членство пользователя в конкретной компании и его роли/права в рамках этой компании. Источник ролей для вычисляемых свойств персонала, суперпользователя, субарендатора и группы; уникальность задана по тройке компания + пользователь + группа. Принадлежность к компании наследуется из базовой модели с областью видимости компании.*

| Поле                       | Тип   | Описание                                           |
| -------------------------- | ----- | -------------------------------------------------- |
| Компания                   | связь | принадлежность к компании                          |
| Пользователь               | связь | связь на пользователя                              |
| Суперпользователь компании | флаг  | полные права в рамках компании                     |
| Персонал компании          | флаг  | сотрудник компании (доступ к CRM)                  |
| Субарендатор               | флаг  | признак субаренды в компании                       |
| Группа (роль)              | связь | связь на группу; роль пользователя внутри компании |
| Доп. данные                | JSON  | произвольные дополнительные поля членства          |

### Группа компании

*Расширение стандартной группы платформа для привязки роли к компании и её отображаемого названия. Связь один-к-одному с группой; принадлежность к компании наследуется из базовой модели с областью видимости компании.*

| Поле     | Тип   | Описание                      |
| -------- | ----- | ----------------------------- |
| Группа   | связь | связь один-к-одному на группу |
| Название | текст | отображаемое название роли    |

### Доверенность

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

| Поле                      | Тип   | Описание                                   |
| ------------------------- | ----- | ------------------------------------------ |
| Родительская доверенность | связь | ссылка на саму себя, с защитой от удаления |
| Пользователь              | связь | связь один-к-одному на пользователя        |
| Номер                     | текст | уникальный номер документа                 |
| Дата                      | дата  | дата доверенности                          |

### Сигнал: создание/привязка клиента

*Сигнал после сохранения пользователя: в контексте компании создаёт или привязывает CRM-клиента к пользователю по нормализованному телефону. Пропускается вне компании, для персонала и субарендаторов; нормализует телефон, убирая скобки, пробелы и дефисы.*

### Сигнал: обновление кэша пользователей

*Сигнал после сохранения пользователя: инвалидирует кэш пользователя и пересобирает список активного персонала. Игнорирует изменение только последнего входа.*

### Сигнал: сброс кэша при смене групп

*Сигнал при изменении групп пользователя: инвалидирует кэш затронутых пользователей при добавлении, удалении и очистке.*

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

*Настройка отображения пользователя в админке: список, порядок, наборы полей и отдельный менеджер для выборки. Использует формы админки для изменения и создания, а также смены пароля; последний вход и дата регистрации доступны только для чтения.*
