ADR-0053: Администраторы — отдельная admin-система за пределами основной Identity
Статус
Accepted
Дата
2026-07-13
Контекст
ТЗ.md:68 — «пользователей-администраторов я бы предпочёл вынести за пределы текущей Identity-системы и дать
им отдельное API, back-end, front-end». Матрица АдминГл описывает управление пользователями/ролями/
сессиями (вероятно, неполно).
Решение
- Администраторы платформы не живут в
identity(Pin.Investors.Identity): отдельная admin-система (отдельные учётки, API, фронтpin-admin), собственная аутентификация. - Admin-операции над доменами (пользователи, роли, каталог, рефералы) реализуются admin-API
соответствующих контекстов (
identity/api/admin/…,catalog/api/admin/…,referraladmin — уже существует), доступ к которым имеет только admin-система (m2m-авторизация + аудит). - В текущем ТЗ прорабатываются: границы, admin-API контекстов, каталог admin-permissions; сама admin-identity (хранение админов, MFA, сессии) — отдельным документом при реализации admin-системы.
Последствия
- Основная Identity не содержит «суперпользователей» — снижена поверхность атаки.
- Каждый контекст явно описывает свой
api/admin/*(по api-method-template) с аудитом. - Известные функции из
АдминГл(просмотр/создание/блокировка/архивное vs полное удаление, назначение ролей, ручная верификация, сброс пароля, управление сессиями, кастомные роли) распределяются: identity admin-API + profile admin-API; фиксируются в соответствующих ТЗ.
Обратные ссылки
Автоссылки: где используется этот документ.
- Домен (CQRS) (3): Entity / Aggregate: ArbitrageCaseEntity (+ ArbitrageNoteEntity), Entity / Aggregate: Post, Entity / Aggregate: PromotionPackage
- API (7): Admin: модерация постов и комментариев (m2m), GET /api/v1/admin/handbook/sync-state — Состояние синхронизации справочников с Talent, Handbook API — реестр операций областей public / internal / admin, POST /api/support/arbitrage-cases/{id}/escalate — Эскалация дела администратору, POST /api/support/tickets/{id}/escalate — Эскалация администратору, POST /api/v1/admin/handbook/{type}/{id}/{archive,restore} — Архив и восстановление справочной записи, POST /api/v1/posts — Создать черновик поста
- Use Cases (5): UC-NWS-003. Вложенные переключаемые комментарии, UC-NWS-007. Категории по типам авторов (eligibility публикации), UC-SUP-003. Арбитраж конфликта через аудит, UC-SUP-005. Эскалация администратору, US-реестр контекста handbook (US-HND)
- События (1): Event Contract: pin.support.arbitrage-resolved (ArbitrageResolvedKafkaEvent)
- Консюмеры (1): Consumer: Talent Identity Sync (pin-identity-talent-sync)
- Фоновые задачи (1): Background Job: talent-initial-import (первичная загрузка / bootstrap из Talent Identity)
- Дашборды (1): Панель Наблюдаемости: support-overview (эксплуатация)
- adr (2): ADR-0060: Продвижение — отдельный bounded context promotion (полиморфный таргет); catalog и news — консюмеры буста, ADR-0061: Независимый агент, отвязка от агентства и приглашения по номеру телефона
- index.md (3): News Service (Pin.News), Notifications Service, Support Service
Связанные документы
docs/06-services/identity/,docs/07-frontends/README.md(pin-admin), матрицаТехЗадание/АдминГл.html.