# Ролевая модель (RBAC) — Grace CRM Assistant

**Версия:** 1\.0 **Дата:** 4 мая 2026

**Статус:** Этап 0 -- согласование файл 04\_[rbac.md](http://rbac.md)

---

## 1\. Принципы ролевой модели

-  **Минимальные права:** каждая роль получает только те права, которые необходимы для выполнения её функции

-  **Изоляция данных:** менеджер видит только свои проекты и клиентов

-  **Конфиденциальность премий:** данные о расчёте премии (Кк) видны только самому менеджеру и его непосредственному руководителю (РОП)

-  **Наследование:** роли не наследуются, каждая назначается явно

-  **Аудит:** все действия фиксируются в audit log с timestamp и user_id

---

## 2\. Роли системы

### 2\.1 Контур Sales AI

| Роль                       | ID          | Назначение                                            |
|----------------------------|-------------|-------------------------------------------------------|
| Менеджер по продажам       | `manager`   | Работа со своими проектами, рекомендации, уведомления |
| Руководитель отдела продаж | `rop`       | Мониторинг команды, эскалации, аналитика по отделу    |
| Заместитель ГД             | `deputy_gd` | Стратегическая аналитика, агрегированные данные       |
| Администратор системы      | `admin`     | Управление системой, конфиг, синхронизация            |

### 2\.2 Контур Knowledge AI

| Роль                         | ID                  | Назначение                                   |
|------------------------------|---------------------|----------------------------------------------|
| Ответственный за базу знаний | `knowledge_manager` | Загрузка документов, управление базой знаний |
| Читатель базы знаний         | `knowledge_reader`  | Поиск и просмотр документов                  |

### 2\.3 Системные роли

| Роль                 | ID       | Назначение                               |
|----------------------|----------|------------------------------------------|
| Системный интегратор | `system` | Межсистемное взаимодействие (API-to-API) |

---

## 3\. Матрица прав доступа

### 3\.1 Данные CRM

| Объект                          | manager | rop | deputy_gd | admin |
|---------------------------------|---------|-----|-----------|-------|
| Свои проекты (просмотр)         | ✅       | ✅   | ✅         | ✅     |
| Все проекты команды (просмотр)  | ❌       | ✅   | ✅         | ✅     |
| Все проекты компании (просмотр) | ❌       | ❌   | ✅         | ✅     |
| Свои клиенты (просмотр)         | ✅       | ✅   | ✅         | ✅     |
| Все клиенты (просмотр)          | ❌       | ✅   | ✅         | ✅     |
| Комментарии по своим проектам   | ✅       | ✅   | ✅         | ✅     |
| Комментарии по всем проектам    | ❌       | ✅   | ✅         | ✅     |

### 3\.2 Рекомендации

| Действие                                | manager | rop | deputy_gd | admin |
|-----------------------------------------|---------|-----|-----------|-------|
| Получать рекомендации по своим проектам | ✅       | ✅   | ❌         | ✅     |
| Просматривать рекомендации по команде   | ❌       | ✅   | ❌         | ✅     |
| Подтверждать выполнение рекомендации    | ✅       | ✅   | ❌         | ✅     |
| Запрашивать рекомендацию вручную        | ✅       | ✅   | ❌         | ✅     |

### 3\.3 Аналитика

| Объект                            | manager | rop | deputy_gd | admin |
|-----------------------------------|---------|-----|-----------|-------|
| Своя воронка продаж               | ✅       | ✅   | ✅         | ✅     |
| Воронка по команде                | ❌       | ✅   | ✅         | ✅     |
| Агрегированная аналитика компании | ❌       | ❌   | ✅         | ✅     |
| Свой коэффициент качества (Кк)    | ✅       | ✅   | ❌         | ✅     |
| Кк по команде                     | ❌       | ✅   | ❌         | ✅     |
| Кк агрегированно по отделу        | ❌       | ❌   | ✅         | ✅     |
| Свой прогноз премии               | ✅       | ✅   | ❌         | ✅     |
| Прогноз премии по команде         | ❌       | ✅   | ❌         | ✅     |
| Прогноз премии по всему отделу    | ❌       | ❌   | ❌         | ✅     |

<note type="quote">

**Примечание:** Зам. ГД видит только агрегированные данные по отделу, без персональных показателей менеджеров.

</note>

### 3\.4 База знаний

| Действие                  | manager | rop | deputy_gd | knowledge_manager | admin |
|---------------------------|---------|-----|-----------|-------------------|-------|
| Поиск по базе знаний      | ✅       | ✅   | ✅         | ✅                 | ✅     |
| Просмотр документов       | ✅       | ✅   | ✅         | ✅                 | ✅     |
| Загрузка документов       | ❌       | ❌   | ❌         | ✅                 | ✅     |
| Редактирование документов | ❌       | ❌   | ❌         | ✅                 | ✅     |
| Удаление документов       | ❌       | ❌   | ❌         | ✅                 | ✅     |
| Запуск Lint Agent (аудит) | ❌       | ❌   | ❌         | ✅                 | ✅     |

### 3\.5 Управление системой

| Действие                                | manager | rop | deputy_gd | knowledge_manager | admin |
|-----------------------------------------|---------|-----|-----------|-------------------|-------|
| Запуск синхронизации                    | ❌       | ❌   | ❌         | ❌                 | ✅     |
| Просмотр статуса синхронизации          | ❌       | ❌   | ❌         | ❌                 | ✅     |
| Изменение правил проверки Quality Agent | ❌       | ❌   | ❌         | ❌                 | ✅     |
| Изменение SLA-параметров                | ❌       | ❌   | ❌         | ❌                 | ✅     |
| Просмотр audit log                      | ❌       | ❌   | ❌         | ❌                 | ✅     |
| Управление пользователями и ролями      | ❌       | ❌   | ❌         | ❌                 | ✅     |

### 3\.6 Уведомления

| Действие                                                 | manager | rop | deputy_gd | admin |
|----------------------------------------------------------|---------|-----|-----------|-------|
| Получать уведомления о своих проектах                    | ✅       | ✅   | ❌         | ✅     |
| Получать сводку по команде                               | ❌       | ✅   | ✅         | ✅     |
| Получать эскалации                                       | ❌       | ✅   | ✅         | ✅     |
| Настраивать предпочтительный канал (Mattermost/Telegram) | ✅       | ✅   | ✅         | ✅     |

---

## 4\. Изоляция данных: правила фильтрации

### Менеджер (role: manager)

```
projects WHERE manager_id = {current_user_id}
accounts WHERE manager_id = {current_user_id}
  OR assistant_user_id = {current_user_id}
recommendations WHERE manager_id = {current_user_id}
kk_score WHERE manager_id = {current_user_id}
bonus_forecast WHERE manager_id = {current_user_id}
```

### РОП (role: rop)

```
projects WHERE manager_id IN (
  SELECT id FROM users WHERE department_id = {rop_department_id}
)
-- или конфигурируемый список подчинённых менеджеров
```

### Зам. ГД (role: deputy_gd)

```
-- Только агрегированные данные, без персональных показателей
SELECT COUNT(*), SUM(amount), AVG(probability_percent)
FROM projects
-- без разбивки по конкретным менеджерам в разделе премий
```

---

## 5\. Назначение ролей

### 5\.1 Текущее назначение (I-TECH)

| Пользователь                 | Роль в Grace CRM                 | Роль в AI-системе   |
|------------------------------|----------------------------------|---------------------|
| Менеджеры отдела продаж      | Продажи                          | `manager`           |
| Руководитель отдела продаж   | РОП                              | `rop`               |
| Заместитель ГД по развитию   | Зам. ГД                          | `deputy_gd`         |
| Дмитрий Калдарбеков          | Руководитель отдела цифровизации | `admin`             |
| Ответственный за базу знаний | --                               | `knowledge_manager` |

### 5\.2 Правила назначения

-  Роль назначается администратором системы

-  Один пользователь может иметь несколько ролей (например, `rop` + `knowledge_reader`)

-  Назначение ролей фиксируется в audit log

-  Роли синхронизируются с учётными записями Grace CRM (при наличии SSO/LDAP)

---

## 6\. Аутентификация

### 6\.1 Режимы

| Режим               | Применение                             |
|---------------------|----------------------------------------|
| SSO через Grace CRM | Основной режим для сотрудников I-TECH  |
| JWT Bearer Token    | Межсистемные интеграции (1С, BI, ERP)  |
| API Key             | Системные интеграторы (`role: system`) |

### 6\.2 Параметры JWT

| Параметр      | Значение                                     |
|---------------|----------------------------------------------|
| Алгоритм      | RS256                                        |
| Срок действия | 8 часов (рабочая смена)                      |
| Refresh token | 30 дней                                      |
| Payload       | `user_id`, `roles[]`, `department_id`, `exp` |

---

## 7\. Audit Log

Все действия пользователей фиксируются со следующими полями:

| Поле            | Описание                                                |
|-----------------|---------------------------------------------------------|
| `timestamp`     | Дата и время события                                    |
| `user_id`       | ID пользователя                                         |
| `user_role`     | Роль на момент действия                                 |
| `action`        | Тип действия (READ / WRITE / DELETE / SYNC / LOGIN)     |
| `resource_type` | Тип объекта (project / recommendation / document / ...) |
| `resource_id`   | ID объекта                                              |
| `ip_address`    | IP-адрес запроса                                        |
| `result`        | success / forbidden / error                             |

**Обязательно логируются:**

-  Просмотр данных о премиях и Кк

-  Загрузка и удаление документов из базы знаний

-  Запуск синхронизации

-  Изменение конфигурации

-  Назначение и изменение ролей

-  Все неудачные попытки авторизации

**Хранение:** audit log хранится 12 месяцев, доступен только `admin`.