Архитектура Admin Backoffice API
Назначение
Документ фиксирует, как Admin Panel работает с backend сервисами для CRUD операций, KYC, кошельков, игр, бонусов, промокодов, провайдеров, справочников и настроек платформы.
Admin API не является одним монолитным сервисом. Каждый endpoint принадлежит сервису-владельцу данных, а Gateway только маршрутизирует запросы, нормализует tenant/brand context, проверяет JWT на границе и прокидывает correlation headers.
Базовая матрица backoffice permissions и high-impact action policy описаны в Матрице Admin Permissions.
Владение Данными
| Область | Owning service | Почему |
|---|---|---|
| Учетная запись, email, phone, sessions, password history | Identity | Credentials и security events не уходят в Profile. |
| Профиль, ФИО, KYC, документы, change history | Profile/KYC | PII и compliance decisions. |
| CDD/EDD, AML screening, suspicious activity cases | Compliance/AML | Compliance decisions и AML audit не принадлежат Accounting или Profile/KYC. |
| Кошельки, ledger, депозиты, выводы, payment providers | Accounting | Деньги и double-entry ledger. |
| Игровые провайдеры, категории, игры, restrictions, aliases | Catalog | Source of truth каталога и Elasticsearch projections. |
| Игровые сессии, раунды, provider callbacks | Execution Gateway | Gameplay runtime и idempotency callbacks. |
| Бонусы, бонусные валюты, магазин, user incentivees | Incentive Store | Incentive economy и store economy. |
| Промокоды, активации, referral attribution | Promo/Partner | Growth domain и anti-abuse. |
| Общие справочники (страны, регионы, города, валюты, языки) | Handbook | Реплика Talent Handbook (ADR-0063); ведение данных — в источнике, admin-операции в PIN — только archive/restore записей. |
| Tenant/brand settings, лимиты, rule sets, auto incentive rules | Platform Configuration | Tenant-specific business policies. |
Admin Route Принцип
- Public user route и admin route не смешиваются.
- Admin route начинается с
/api/admin. - Route содержит бизнес-ресурс owning service, например
/api/admin/catalog/games,/api/admin/profile/users. - Любая mutation проверяет permission в owning service, даже если Gateway уже проверил JWT.
- Для KYC, выплат, provider credentials, high-value incentive grants и platform settings требуется step-up MFA.
User Workspace
Страница игрока в Admin Panel агрегирует данные из нескольких сервисов:
- Profile/KYC: карточка игрока, ФИО, KYC, документы, история профиля.
- Identity: sessions, security change history, restrictions.
- Accounting: кошельки, балансы, ledger/game/payment transactions.
- Incentive Store: user incentivees и incentive currency.
- Promo/Partner: активации промокодов и referral context.
- Execution Gateway: игровые сессии и раунды.
- Compliance/AML: CDD profile, AML cases, screening decisions.
- User Safety: operational safety limits, self-exclusion, interventions.
Frontend выполняет несколько независимых TanStack Query запросов. Ошибка одного блока не должна ломать всю страницу.
Lookup Стандарт
Все admin lookup методы используют ResultEntry.
- Lookup list:
GET /api/admin/<resource>/lookup, request содержитTermиPagingQuery. - Lookup by id:
GET /api/admin/<resource>/{id}/lookup, response содержитEntry. - Lookup list возвращает
Entries: PagingResult<ResultEntry>.
Подробно: Lookup методы и ResultEntry.
Audit
Audit обязателен для:
- изменения PII, KYC, credentials, restrictions;
- approve/reject KYC и документов;
- approve/reject withdrawals;
- изменения payment/game providers и credentials references;
- изменения доступности игр, стран, валют и лимитов;
- изменения incentive definitions, promo codes, auto incentive rules;
- изменения tenant/brand settings.
Audit record содержит actor, tenant/brand scope, permission, before/after snapshot, reason/comment, correlation id и source IP/device summary.
Transaction И Consistency
- Команда меняет только данные owning service.
- Cross-service side effects идут через events/outbox или явный internal API, если решение требуется синхронно.
- Деньги меняются только через Accounting ledger.
- Search/lookup projections rebuildable и не являются source of truth.
- Конкурентные admin edits используют optimistic concurrency
Version/RowVersion.