📘 Документация к базе данных terra_rbac_service#

🧩 Назначение#
База данных предназначена для управления административными правами пользователей в различных блоках системы (например: школы, события, наставничество) с учётом географии, типов сущностей и гибкой настройки доступа.
📂 Схема: terra_rbac_service#
📄 Таблица: users#
Описание: Содержит информацию о всех пользователях, которым могут назначаться административные роли.
| Поле | Тип | Описание |
|---|---|---|
uuid |
UUID | Уникальный идентификатор пользователя |
created_at |
TIMESTAMP | Дата и время создания пользователя |
📄 Таблица: admin_assignments#
Описание: Хранит назначения административных ролей конкретным пользователям в определённых блоках системы.
| Поле | Тип | Описание |
|---|---|---|
uuid |
UUID | Уникальный идентификатор назначения |
user_uuid |
UUID | Пользователь, которому назначена роль |
role |
TEXT | Название роли (например: SUPER_USER, ADMIN) |
block |
TEXT | Блок данных (например: SCHOOL, EVENT) |
can_delete_without_approval |
BOOLEAN | Может ли удалять без подтверждения |
can_share_permissions |
BOOLEAN | Может ли делегировать свои права |
assigned_by |
UUID | Кто назначил роль |
expired_by |
TIMESTAMP | Срок действия назначения |
can_create |
BOOLEAN | Может ли создавать новые сущности |
created_at |
TIMESTAMP | Когда назначен |
updated_at |
TIMESTAMP | Последнее обновление |
deleted_at |
TIMESTAMP | Мягкое удаление |
Ограничения:
Уникальность user_uuid, block, role при deleted_at IS NULL.
📄 Таблица: admin_scopes#
Описание: Определяет, в каком контексте (география, сущность) администратор имеет доступ и какие действия ему разрешены.
| Поле | Тип | Описание |
|---|---|---|
uuid |
UUID | Уникальный идентификатор области |
assignments_uuid |
UUID | Ссылка на назначение роли |
entity_uuid |
UUID | UUID сущности |
entity_id |
INT | ID сущности |
country_id |
INT | ID страны |
district_id |
INT | ID региона |
city_id |
INT | ID города |
admin_accesses |
JSONB | Список разрешённых действий |
created_at |
TIMESTAMP | Когда добавлен доступ |
updated_at |
TIMESTAMP | Последнее обновление |
deleted_at |
TIMESTAMP | Мягкое удаление |
Ограничения:
Уникальность сочетания assignments_uuid, country_id, district_id, city_id, entity_id, entity_uuid при deleted_at IS NULL.
entity_uuid и entity_id используются только в школах
📄 Таблица: deletion_requests#
Описание: Хранит запросы на удаление сущностей, требующие подтверждения.
| Поле | Тип | Описание |
|---|---|---|
uuid |
UUID | Уникальный идентификатор запроса |
user_uuid |
UUID | Кто инициировал |
block |
TEXT | Блок, к которому относится объект |
entity_uuid |
UUID | UUID удаляемой сущности |
entity_id |
INT | ID удаляемой сущности |
country_id |
INT | ID страны |
district_id |
INT | ID региона |
city_id |
INT | ID города |
status |
TEXT | Статус запроса |
created_at |
TIMESTAMP | Дата создания |
updated_at |
TIMESTAMP | Дата последнего обновления |
rejection_comment |
TEXT | Причина отказа |
approved_by |
UUID | Кто подтвердил или отклонил |
📄 Таблица: action_logs#
Описание: Логирование всех административных действий с указанием географии.
| Поле | Тип | Описание |
|---|---|---|
uuid |
UUID | Уникальный идентификатор лога |
action_type |
TEXT | Тип действия |
block |
TEXT | Блок, к которому относится действие |
entity_uuid |
UUID | UUID сущности |
entity_id |
INT | ID сущности |
user_uuid |
UUID | Кто выполнил |
result |
TEXT | Результат |
country_id |
INT | ID страны |
district_id |
INT | ID региона |
city_id |
INT | ID города |
created_at |
TIMESTAMP | Время |