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

Архитектура 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 historyIdentityCredentials и security events не уходят в Profile.
Профиль, ФИО, KYC, документы, change historyProfile/KYCPII и compliance decisions.
CDD/EDD, AML screening, suspicious activity casesCompliance/AMLCompliance decisions и AML audit не принадлежат Accounting или Profile/KYC.
Кошельки, ledger, депозиты, выводы, payment providersAccountingДеньги и double-entry ledger.
Игровые провайдеры, категории, игры, restrictions, aliasesCatalogSource of truth каталога и Elasticsearch projections.
Игровые сессии, раунды, provider callbacksExecution GatewayGameplay runtime и idempotency callbacks.
Бонусы, бонусные валюты, магазин, user incentiveesIncentive StoreIncentive economy и store economy.
Промокоды, активации, referral attributionPromo/PartnerGrowth domain и anti-abuse.
Общие справочники (страны, регионы, города, валюты, языки)HandbookРеплика Talent Handbook (ADR-0063); ведение данных — в источнике, admin-операции в PIN — только archive/restore записей.
Tenant/brand settings, лимиты, rule sets, auto incentive rulesPlatform ConfigurationTenant-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.