Перейти к основному содержимому

Entity: PermissionDefinition + полный SEED-каталог permissions

Дом полей справочника прав доступа контекста identity и канонический каталог permissions контекстов PIN: каталог permissions проектируется в контексте identity. Платформа насчитывает 21 bounded context; собственные права (RBAC-enforcement) в каталоге определяют 19 из них — остальные контексты прав в каталоге не заводят (управляются платформенными/справочными правами). Все документы (раздел «Актор» API-методов, use-cases) ссылаются на коды отсюда и не переопределяют их.

Metadata

ПолеЗначение
Контекстidentity
Статусdraft
Owning teamPIN Platform Core

Назначение

PermissionDefinition — таблица определения прав доступа (ид, название, код), которую владельцы системы заполняют через SEED. Permission — атомарное право на действие/фичу в формате <context>.<entity>.<action>. Компании собирают из каталога свои роли (role.md); изменение каталога — только релизом (SEED-миграция), не runtime-API.

Суффиксы action:

СуффиксСмысл
view / manageчтение / полное управление сущностями в границах scope назначения
view-own / manage-selfrecord-level: только записи, где актор — владелец (OwnerUserId/UserId)
view-teamrecord-level: записи своей группы/подчинённых (руководитель агентства)
view-allкросс-tenant видимость (только платформенные роли ПИН — ADR-0052)

Классификация

ПолеЗначение
Контекстidentity
KindEntity (anemic reference data, SEED)
Source of truthidentity (SEED-миграции)
Таблицаidentity.permission_definitions
Tenant isolationне tenanted — платформенный справочник (ADR-0052 п.3)

Поля

ПолеТипОбязательностьОграничения (PK/FK/index/constraint)ИсточникОписание
IdGuidДаPKSEED (фиксированные детерминированные Guid, производные от Code)Идентификатор права.
CodestringДаvarchar(128), unique ux_permission_definitions_code, pattern ^[a-z][a-z-]*\.[a-z][a-z-]*\.[a-z][a-z-]*$SEEDКод <context>.<entity>.<action>. Стабильный контракт: не переименовывается, только deprecate + новый код.
NamestringДаvarchar(256)SEEDНазвание по-русски (UI настройки ролей).
DescriptionstringДаvarchar(512)SEEDЧто именно разрешает.
ContextstringДаvarchar(32), index ix_permission_definitions_context; значение ∈ контексты PIN (в каталоге представлены 19)SEEDКонтекст-владелец enforcement-а.
MinScopeTypeResourceScopeTypeДаenum (хранится как text)SEEDМинимально допустимый scope назначения: Platform — только платформенные роли (например *.view-all); Organization/Project — назначаемо компаниям.
IsAssignableByCompaniesboolДаdefault trueSEEDfalse — право нельзя включить в роль компании (только системные роли/администратор платформы).
IsDeprecatedboolДаdefault falseSEEDПраво выведено из употребления; в новые роли не добавляется, существующие связи работают до миграции.
CreatedAt / UpdatedAtDateTimeOffsetДаSEEDШтампы миграций.

Value objects

Не используются. JSONB-модели не используются.

Связи

СвязьТипКлючПравило загрузкиDelete behavior
RolePermissionreference (обратная)role_permissions.permission_idGetByIds при сборке permission-set ролиrestrict (право с привязками не удаляется, только deprecate)

Инварианты

ИнвариантУсловиеГде проверяетсяОшибка
INV-P1 SeedOnlyЗаписи создаются/меняются только SEED-миграцией (runtime-API отсутствует)архитектурно: нет command-handlers на запись
INV-P2 CodeStableCode иммутабелен; переименование = deprecate старого + новый код + миграция ролейправило релиза
INV-P3 CodeFormatCode соответствует pattern и его <context>-сегмент = ContextSEED-валидация в мигратореошибка миграции
INV-P4 CompanyAssignableВ роли компаний (RoleDefinition.CompanyId != null) добавляются только IsAssignableByCompanies = true и не IsDeprecatedRoleDefinition.GrantPermissionIDENTITY_PERMISSION_NOT_ASSIGNABLE
Диаграмма состояний

stateDiagram неприменим — у справочника нет жизненного цикла, кроме флага IsDeprecated.

События

Доменные/интеграционные события не поднимаются: изменение каталога происходит SEED-миграцией при релизе; consumers получают обновления прав через UserAccessChangedKafkaEvent (role.md).

SEED-каталог permissions (полный, 139 позиций)

Колонка «Роли по умолчанию» — системные роли платформы, в которые право входит SEED-ом: guest, investor, agent, agency-owner (наследует всё от agent — в таблице указывается только дельта, пометка «+agent»), developer-manager (сокр. developer), pin-manager, care-operator (сокр. care), admin (администратор платформы, ADR-0053; для неё каталог — справочный). Права с view-all/moderate/*.manage платформенного уровня имеют MinScopeType = Platform.

identity (14)

CodeНазваниеОписаниеРоли по умолчанию
identity.users.view-selfПросмотр своей учёткиgetCurrentInvestor и аналоги: свои ФИО/контакты/флаги безопасности.investor, agent, developer, pin-manager, care
identity.users.viewПросмотр пользователей компанииСписок/карточки пользователей в scope организации.agency-owner, developer, pin-manager, care
identity.users.manageУправление пользователями компанииПриглашение, изменение, назначение внутренних ролей в scope; увольнение агента — прекращение членства в агентстве (ADR-0072).agency-owner, developer (только своя компания), admin
identity.users.blockБлокировка пользователейПеревод Active → Blocked в scope организации.agency-owner, admin
identity.users.view-allПросмотр любых пользователейКросс-tenant поиск/карточки (поддержка, арбитраж).pin-manager, care, admin
identity.companies.viewПросмотр своей компанииКарточка/реквизиты/настройки workspace своей компании.agent, agency-owner, developer, pin-manager, care
identity.companies.manageУправление компаниейИзменение описания, slug, workspace-настроек (реплика-поля Talent — read-only).agency-owner, developer, admin
identity.companies.view-allПросмотр всех компанийСписок/карточки всех компаний платформы.pin-manager, care, admin
identity.roles.viewПросмотр ролей компанииСписок ролей и их permissions в scope.agent, agency-owner, developer, care
identity.roles.manageУправление ролями компанииСоздание/изменение/архив ролей CompanyId != null.agency-owner, developer, admin
identity.role-assignments.viewПросмотр назначений ролейКто какие роли имеет в scope организации.agency-owner, developer, care, admin
identity.role-assignments.manageНазначение/отзыв ролейRoleAssignment Grant/Revoke в покрываемом scope (INV-R8).agency-owner, developer, admin
identity.security.manage-selfУправление своей безопасностьюПароль, пин-код, 2FA, смена email/телефона.investor, agent, agency-owner, pin-manager, care
identity.agent-membership.switch-active-selfСмена активного агентстваМультиагентский агент выбирает активное членство среди своих агентств (ADR-0070); только своё членство.agent, agency-owner

profile (9)

CodeНазваниеОписаниеРоли по умолчанию
profile.personal.view-selfПросмотр своего профиляФИО, дата рождения, паспортные данные (расшифровка своих).investor, agent, agency-owner
profile.personal.manage-selfУправление своим профилемРедактирование персональных данных (запрещено при ContactsManagedBy = TalentSync).investor, agent, agency-owner
profile.contacts.manage-selfУправление контактами профиляДополнительные контакты профиля (email/phone по отдельности).investor, agent, agency-owner
profile.documents.view-selfПросмотр своих документовСписок/скачивание своих загруженных документов.investor
profile.documents.manage-selfУправление своими документамиЗагрузка/удаление паспортов (РФ/РБ/КЗ/СНГ/другие), ИНН, кастомных документов.investor
profile.requisites.manage-selfУправление шаблонами реквизитовНесколько наборов данных (муж/жена/дети) для переиспользования в брони/сделке.investor
profile.verification.submitПодача заявки на верификациюKYC/AML-заявка инвестора.investor
profile.verification.reviewРассмотрение верификацийПросмотр и решение по заявкам верификации/квалификации.pin-manager, care, admin
profile.personal.view-anyПросмотр чужого профиляТолько для поддержки/арбитража, с аудитом каждого доступа; значения документов маскируются.care, admin

chessboard (8)

CodeНазваниеОписаниеРоли по умолчанию
chessboard.projects.viewПросмотр проектовПроекты/здания/литеры своей компании, включая скрытые из каталога.developer, pin-manager, care
chessboard.projects.manageУправление проектамиСоздание/изменение проектов, деклараций, статусов строительства (scope: организация/группа/проект).developer, admin
chessboard.buildings.manageУправление зданиямиЗдания/литеры/корпуса, этажность, сроки сдачи.developer, admin
chessboard.units.viewПросмотр шахматкиПолная шахматка со статусами и служебными полями.developer, pin-manager, care
chessboard.units.manageУправление объектамиКвартиры/лоты: площади, цены, атрибуты.developer, admin
chessboard.units.change-statusСмена статуса объектаРучной перевод Свободен/Резерв/Бронь/Продан/Скрыт (авто-переходы делает crm событиями).developer, pin-manager, admin
chessboard.layouts.manageУправление планировкамиLayout/LayoutGroup — основа правил вознаграждений.developer, admin
chessboard.dictionaries.manageСправочники шахматкиБанки, отельеры (Id, Название, Лого).pin-manager, admin

catalog (5)

CodeНазваниеОписаниеРоли по умолчанию
catalog.listings.view-publicПросмотр публичного каталогаЛента/поиск/фильтры/карточка (гейт доступа: токен или реф-cookie).guest, investor, agent, agency-owner, developer, pin-manager, care
catalog.listings.view-fullПолная карточка объектаРасширенные метрики, история, служебные поля поверх публичной проекции.investor, agent, agency-owner, developer, pin-manager
catalog.overrides.manageОверрайды витриныПравки лотов/корпусов поверх данных источника.pin-manager, admin
catalog.promotion.manageПакеты продвиженияНастройка приоритета показа проектов/объектов (монетизация — реализация отложена, решение №10).pin-manager, admin
catalog.ranking.manageРанжирование каталогаПравила сортировки/бустинга ленты.admin

invest-analytics (5)

CodeНазваниеОписаниеРоли по умолчанию
invest-analytics.series.viewПросмотр инвест-серийПомесячные серии, калькулятор, ROI, юр/физ + УСН/ОСНО.investor, agent, agency-owner, developer, pin-manager
invest-analytics.price-history.viewИстория ценГрафик роста цены объекта (ClickHouse).investor, agent, agency-owner, developer, pin-manager
invest-analytics.model-config.manageЭконом-модель платформыmodel_config: глобальные дефолты роста/аренды/налогов.pin-manager, admin
invest-analytics.property-object-type-config.manageМодель по типам объектов недвижимостиlot_type_config + помесячные оверрайды + investor-preview.pin-manager, admin
invest-analytics.reports.exportЭкспорт расчётаPDF/Excel-отчёт доходности («Скачать расчёт»).investor, agent, agency-owner, pin-manager

rewards (19)

CodeНазваниеОписаниеРоли по умолчанию
rewards.rules.viewПросмотр правил вознагражденийПравила комиссий застройщика по типам/Layout/площади.agent, agency-owner, developer, pin-manager
rewards.rules.manageУправление правилами вознагражденийНастройка % от базовой/конечной цены и условий (застройщик).developer, admin
rewards.commission-policy.viewПросмотр комиссионной политикиРаспределение комиссии внутри агентства.agent (своя часть), agency-owner
rewards.commission-policy.manageУправление комиссионной политикойМатрица распределения, платёжные поручения (агентство).agency-owner, admin
rewards.accruals.view-ownСвои начисленияКомиссии агента: подтверждено / ожидает подтверждения.agent
rewards.accruals.view-teamНачисления командыНачисления всех агентов агентства с фильтром по агенту.agency-owner, pin-manager
rewards.payouts.manageУправление выплатамиРеестр и история выплат, формирование платёжных поручений (подтверждение начислений — rewards.accruals.confirm, утверждение выплаты — rewards.payouts.approve).agency-owner, pin-manager, admin
rewards.platform-terms.viewПросмотр условий платформыФинансовые условия площадки: комиссия ПИН, база расчёта, удержания (только чтение).agency-owner, developer, pin-manager
rewards.platform-terms.manageУправление условиями платформыНастройка комиссии ПИН и платформенных финансовых условий вознаграждения.pin-manager, admin
rewards.referral-rates.manageСтавки реферальной программыНастройка ставок реферальных/партнёрских вознаграждений платформы.pin-manager, admin
rewards.receipts.manageЧеки к выплатамЗагрузка/привязка/проверка чеков самозанятости (НПД) к начислениям и выплатам.agency-owner, pin-manager, admin
rewards.accruals.confirmПодтверждение начисленийПеревод начисления Ожидает → Подтверждено в scope.agency-owner, pin-manager, admin
rewards.accruals.adjustКорректировка начисленийПрямое изменение суммы/статуса начисления (back-office коррекция).pin-manager, admin
rewards.accruals.manageУправление начислениямиРучное создание/пересчёт/аннулирование начислений.pin-manager, admin
rewards.payouts.approveУтверждение выплатФинальное утверждение выплаты перед перечислением (money-out gate).agency-owner, pin-manager, admin
rewards.commission.view-allВсе комиссии платформыКросс-tenant просмотр комиссий всех агентов/агентств (финансовый надзор).pin-manager, admin
rewards.referral.view-ownСвои реферальные вознагражденияНачисления по своим рефералам/партнёрским ссылкам.investor, agent, agency-owner
rewards.commission.adjust-requestЗапрос корректировки комиссииИнициирование заявки на пересмотр своей комиссии (например, при co-broking, ADR-0069).agent, agency-owner
rewards.commission.adjust-approveУтверждение корректировки комиссииРешение по заявке на корректировку комиссии.agency-owner, pin-manager, admin
Канонические коды

Канонические коды политики распределения комиссии — rewards.commission-policy.view / rewards.commission-policy.manage. Встречающиеся в API-документах коды rewards.commission-policy.* — прежнее написание тех же прав; читать как rewards.commission-policy.* (единый код каталога).

wallet (5)

CodeНазваниеОписаниеРоли по умолчанию
wallet.balance.view-ownСвой балансТекущий баланс собственного кошелька (доступно/в ожидании/выведено).investor, agent, agency-owner
wallet.transactions.view-ownСвои транзакцииИстория операций собственного кошелька (начисления, списания, выплаты).investor, agent, agency-owner
wallet.team.viewКошельки командыБалансы и операции кошельков агентов своего агентства (руководитель).agency-owner, pin-manager
wallet.accounts.view-allВсе кошельки платформыКросс-tenant просмотр кошельков и балансов (финансовый надзор).pin-manager, admin
wallet.adjustments.manageКорректировки кошелькаРучные проводки/корректировки баланса (кредит/дебет) с аудитом.pin-manager, admin

referral (4)

CodeНазваниеОписаниеРоли по умолчанию
referral.links.manage-selfУправление своими реф-ссылкамиСоздание/изменение/удаление ссылок по каналам.investor, agent, agency-owner, pin-manager
referral.links.view-selfПросмотр своих реф-ссылокgetMyReferralLinks, getMyReferrer.investor, agent, agency-owner, pin-manager
referral.registrations.view-selfЖурнал своих регистрацийgetLinkRegistrations/getAllRegistrations по своим ссылкам.investor, agent, agency-owner, pin-manager
referral.registrations.view-allПолный журнал рефераловAdmin-журнал ссылок/регистраций всех пользователей.pin-manager, admin

crm (25)

CodeНазваниеОписаниеРоли по умолчанию
crm.leads.viewПросмотр лидовКарточки пути клиента; record-level: агент — свои, руководитель агентства — команды, инвестор — свои, Менеджер ПИН/забота — сквозно (platform-scope).agent, agency-owner, investor, pin-manager, care
crm.leads.participateУчастие в своём лидеИнвесторская сторона лида: объекты-намерения (booking-intents: добавить/подтвердить/снять), хотелки клиента; record-level PrimaryInvestorUserId = actor, кросс-tenant участник (ADR-0052).investor
crm.leads.manageУправление лидамиСоздание/продление/закрытие лида, хотелки клиента, предложение объекта-намерения агентом.agent, pin-manager
crm.fixation-requests.createСоздание заявки на фиксациюЗапрос застройщику закрепить клиента за агентом.agent
crm.fixation-requests.view-ownСвои заявки на фиксациюRecord-level: владелец-агент.agent
crm.fixation-requests.view-teamФиксации командыФиксации агентов группы/агентства («агент и его руководитель/группа, но не все»; видимость сужается FixationVisibility workspace-настройкой).agency-owner, pin-manager
crm.fixation-requests.reviewРассмотрение фиксацийОдобрение/отклонение, пометка уникальный/не уникальный (застройщик; дубли по ФИО/телефону FTS).developer
crm.deals.view-ownСвои сделкиСделки, где актор — участник (Investor/Agent/SellManager).investor, agent, developer
crm.deals.view-teamСделки командыВСЕ сделки менеджеров компании с фильтрами по агенту/статусу/дате.agency-owner, developer
crm.deals.view-allВсе сделки платформыСквозная видимость для сопровождения (US-MGR-01..06).pin-manager, care, admin
crm.deals.createСоздание сделкиИз лида или после одобрения фиксации (решение №7: создаёт агент или менеджер ПИН).agent, pin-manager
crm.deals.manageВедение сделкиИзменение полей, документов, перемещение по этапам своей сделки.agent, developer, pin-manager
crm.deals.manage-statusРучное управление статусамиПринудительная смена статуса/этапа любой сделки (арбитраж).pin-manager, care (супервизор), admin
crm.deals.members.manageУчастники сделкиДобавление/удаление/смена роли участника.agent, developer, pin-manager
crm.steps.viewПросмотр этапов воронкиКанбан-доска, группы этапов.agent, agency-owner, developer, pin-manager
crm.steps.manageНастройка этаповНастраиваемые этапы застройщика с привязкой к системным группам (SEED-группы меняем только мы).developer, admin
crm.bookings.createЗаявка на бронированиеКнопка «Забронировать» (ФИО+телефон), резерв 1 час.guest (через lazy-регистрацию), investor, agent
crm.bookings.view-ownСвои брониСтатус/таймер/оплата своих бронирований (US-INV-21).investor, agent
crm.bookings.manageУправление бронямиПодтверждение/продление/отмена брони по программе.developer, pin-manager
crm.booking-programs.manageПрограммы бронированияПлатность/сумма/длительность брони застройщика (решение №7: таймеры — параметры программы).developer, admin
crm.purchase-programs.manageПрограммы покупки100%/рассрочки (InstallmentPreset)/ипотека; серверный расчёт графиков.developer, pin-manager, admin
crm.documents.viewДокументы сделкиПросмотр/скачивание в сделках, доступных актору.investor, agent, developer, pin-manager
crm.documents.manageУправление документами сделкиЗагрузка/замена/удаление документов сделки.agent, developer, pin-manager
crm.statistics.view-companyСтатистика компанииДашборд ЛК застройщика/агентства: активные/закрытые сделки, суммы, комиссия.agency-owner, developer, pin-manager
crm.statistics.view-agentСтатистика по агентуТочечная статистика конкретного агента.agency-owner, pin-manager

calendar (6)

CodeНазваниеОписаниеРоли по умолчанию
calendar.events.viewПросмотр своего календаряСписок/карточка собственных событий календаря (агент/консультант ПИН), включая признак конфликтов.agent, pin-manager
calendar.events.manageУправление своим календарёмСоздание/изменение/перенос/статусы собственных событий (Origin = Manual); события записей и дедлайны броней защищены инвариантами календаря.agent, pin-manager
calendar.slots.manageУправление слотами доступностиBatch-публикация, просмотр и архивация своих слотов самозаписи.agent, pin-manager
calendar.appointments.viewПросмотр записей на свои слотыСписок/карточка записей инвесторов на слоты актора.agent, pin-manager
calendar.appointments.decideРешения по записямПодтверждение/отклонение/отмена записи и фиксация исхода встречи (Completed/NoShow) по своим слотам.agent, pin-manager
calendar.team.viewКалендарь командыRead-only события и записи всех владельцев календарей в scope компании: руководитель агентства — своё агентство; в scope компании ПИН — календари консультантов ПИН.agency-owner, pin-manager

investor-owner (3)

CodeНазваниеОписаниеРоли по умолчанию
investor-owner.portfolio.view-selfСвой портфельКупленные объекты, цены покупки/продажи, доход.investor
investor-owner.portfolio.manage-selfУправление своим портфелемОтметки о продаже, цели, заметки по объекту.investor
investor-owner.portfolio.view-anyПросмотр чужого портфеляПоддержка/арбитраж, с аудитом доступа.care, admin

news (7)

CodeНазваниеОписаниеРоли по умолчанию
news.posts.viewЧтение лентыПубличная лента постов/новостей.guest, investor, agent, agency-owner, developer, pin-manager, care
news.posts.create-personalПубликация от себяПост в общую ленту от пользователя.investor, agent, agency-owner, developer
news.posts.create-companyПубликация от компанииПост с привязкой к компании: акции, маркетинг.agency-owner, developer, pin-manager
news.posts.create-projectПубликация от проектаПост с привязкой к проекту: ход строительства (scope: организация/группа/проект).developer, pin-manager
news.posts.manage-ownУправление своими постамиРедактирование/снятие своих публикаций (история — snapshot-ами).investor, agent, agency-owner, developer, pin-manager
news.posts.moderateМодерация лентыСнятие/правка любых постов, жалобы.pin-manager, care, admin
news.categories.manageКатегории новостейКаталог категорий по типам авторов; доступность категорий компании — workspace-настройка.admin

favorites (2)

CodeНазваниеОписаниеРоли по умолчанию
favorites.items.manage-selfСвоё избранноеДобавление/удаление объектов (user или гостевая сессия; слияние при входе — решение №4).guest, investor, agent, agency-owner, developer
favorites.notes.manage-selfЗаметки избранногоЗаметка ≤ 4000 символов на объекте избранного.investor, agent, agency-owner, developer

selections (3)

CodeНазваниеОписаниеРоли по умолчанию
selections.collections.manage-selfСвои подборкиСоздание вручную/из избранного, элементы, иммутабельные копии для постов.investor, agent, agency-owner, pin-manager
selections.collections.shareПубличные ссылки подборокГенерация/отзыв публичной ссылки («Поделиться подборкой»).investor, agent, agency-owner, pin-manager
selections.collections.view-sharedПросмотр по публичной ссылкеЧтение подборки анонимом по ссылке.guest, investor, agent, agency-owner, developer

user-activity (5)

CodeНазваниеОписаниеРоли по умолчанию
user-activity.sessions.view-selfСвои сессииСписок активных сессий/устройств.investor, agent, agency-owner, developer
user-activity.sessions.revoke-selfЗавершение своих сессийОтзыв своей сессии/всех, кроме текущей.investor, agent, agency-owner, developer
user-activity.views.view-selfСвоя история просмотровПросмотры с длительностью.investor, agent, agency-owner
user-activity.actions.view-leadАктивность клиента в лидеПросмотры/фильтры/избранное клиента в карточке лида агента.agent, agency-owner, pin-manager
user-activity.actions.view-anyТрекинг любого пользователяРасследования поддержки/арбитраж, с аудитом.care, admin

dev-stats (2)

CodeНазваниеОписаниеРоли по умолчанию
dev-stats.metrics.view-ownСтатистика просмотров своей недвижимостиClickHouse-метрики внимания к проектам/зданиям/планировкам/группам планировок/объектам своего застройщика: количество просмотров, уникальные зрители, длительность, повторные просмотры, разбивка по типу зрителя (ADR-0057; tenant-scope застройщика обязателен в каждом запросе).developer
dev-stats.metrics.view-anyСтатистика просмотров любого застройщикаКросс-tenant доступ платформы к view-метрикам всех застройщиков (поддержка/аналитика ПИН — ADR-0057 п.6).pin-manager, admin

messenger (6)

CodeНазваниеОписаниеРоли по умолчанию
messenger.chats.participateУчастие в чатахЧтение/отправка в чатах, где актор — участник (собственный мини-мессенджер PIN на SignalR, ADR-0055).investor, agent, agency-owner, developer, pin-manager, care
messenger.chats.createСоздание чатовПрямые/групповые чаты вне сделок (чаты сделок создаёт оркестратор crm).agent, agency-owner, developer, pin-manager
messenger.contacts.manage-selfСвои контактыСписок контактов.investor, agent, agency-owner, developer, pin-manager
messenger.blacklist.manage-selfЧёрный списокБлокировка собеседников.investor, agent, agency-owner, developer
messenger.chats.moderateМодерация чатовПросмотр/вмешательство в любые чаты (история правок, IP/UA) при расследовании.care (супервизор), admin
messenger.deal-chats.join-anyВход в любой чат сделкиАвто-участие Менеджера ПИН в чатах сделок (US-MGR).pin-manager

notifications (3)

CodeНазваниеОписаниеРоли по умолчанию
notifications.settings.manage-selfСвои настройки уведомленийКаналы/подписки/отписки.investor, agent, agency-owner, developer, pin-manager, care
notifications.templates.manageШаблоны уведомленийCRUD NotificationTemplate по каналам.admin
notifications.dispatch-log.viewЖурнал отправокDispatchLog для расследований доставки.care, admin

support (8)

CodeНазваниеОписаниеРоли по умолчанию
support.tickets.createСоздание тикетаОбращение в службу заботы.investor, agent, agency-owner, developer
support.tickets.view-ownСвои тикетыСтатусы и переписка своих обращений.investor, agent, agency-owner, developer
support.tickets.handleОбработка тикетовВзятие в работу, ответы, смена статусов (уровень оператор).care
support.tickets.superviseСупервизия очередиПереназначение, эскалации, SLA-отчёты (уровень супервизор).care (супервизор), admin
support.arbitrage.manageАрбитражArbitrageCase: расследования по аудиту, ручные вмешательства в crm/identity.care (супервизор), pin-manager, admin
support.knowledge-base.viewБаза знанийЧтение статей/шаблонных ответов.care, pin-manager
support.knowledge-base.manageУправление базой знанийCRUD статей и шаблонных ответов.care (супервизор), admin
support.workspaces.impersonate-viewПросмотр чужого ЛКRead-only вид ЛК застройщика/агентства для помощи («видеть ЛК застройщика и помогать»); каждый вход аудируется.care, admin

Итого: 14+9+8+5+5+19+5+4+25+6+3+7+2+3+5+2+6+3+8 = 139 permissions (19 контекстов).

Права с MinScopeType = Platform

Назначаются только платформенным ролям ПИН/администратору платформы: все *.view-all, *.view-any, identity.companies.view-all, crm.deals.manage-status, catalog.overrides.manage, catalog.promotion.manage, catalog.ranking.manage, invest-analytics.model-config.manage, invest-analytics.property-object-type-config.manage, chessboard.dictionaries.manage, news.posts.moderate, news.categories.manage, messenger.chats.moderate, messenger.deal-chats.join-any, notifications.templates.manage, notifications.dispatch-log.view, rewards.platform-terms.manage, rewards.referral-rates.manage, rewards.accruals.adjust, rewards.accruals.manage, wallet.adjustments.manage, support.* кроме create/view-own, referral.registrations.view-all. У них IsAssignableByCompanies = false.

Как каталог применяется при назначении роли

Три поля каталога совместно ограничивают, где право может действовать (enforcement — на write-path RoleAssignment и RoleDefinition.GrantPermission, дом — role.md):

  • MinScopeType задаёт минимальный scope назначения роли с этим правом: RoleAssignment.Scope не может быть уже требуемого (право MinScopeType = Platform → роль назначима только в scope Platform; Organization/Project — назначима компаниям). Роль наследует floor как максимум MinScopeType своих прав.
  • IsAssignableByCompanies = false дополнительно запрещает включать право в роль компании (RoleDefinition.CompanyId != null, INV-P4) — так все платформенные права (view-all/view-any/moderate, admin-фичи витрины/эконом-модели) остаются только у системных ролей ПИН и администратора платформы (INV-R3 role.md); попытка компании собрать такое право в свою роль → IDENTITY_PERMISSION_NOT_ASSIGNABLE.
  • IsDeprecated = true исключает право из новых ролей (существующие связи живут до миграции, INV-P4).
Состав permissions в событиях не передаётся

Состав permissions роли в событиях доступа не передаётся: потребитель резолвит RoleCode/RoleId → permissions интроспекцией каталога ролей identity; неизвестный на стороне enforcement код — deny by default.

Индексы, хранение, безопасность

АспектЗначение
ИндексыPK (Id); ux_permission_definitions_code unique btree; ix_permission_definitions_context btree
Партиционирование / retentionnone — ~140 строк reference data; кэшируется in-memory на всех инстансах identity
Concurrencyне требуется (иммутабельно вне SEED)
Permissions / PIIчтение каталога — любой аутентифицированный (нужно UI настройки ролей: identity.roles.view); запись — только миграция; PII нет
Auditистория — миграциями в VCS; UpdatedAt штампуется миграцией

Совместимость

  • Добавление permission — additive (новый SEED-инсерт).
  • Удаление/переименование — breaking: IsDeprecated = true, новый код, миграция RolePermission, sunset через 2 релиза.
  • Неизвестный код на стороне enforcement-контекста трактуется как «право отсутствует» (deny by default).

Обратные ссылки

Автоссылки: где используется этот документ.

Связанные документы

  • role.md — как permissions собираются в роли и назначаются в scope.
  • Владельцы enforcement: docs/06-services/<context>/ каждого из 19 контекстов ссылаются на свои строки каталога в разделах «Актор» api-method-документов.
  • ADR-0052, ADR-0053, ADR-0057 (контекст dev-stats).