Перейти к содержанию

01 system overview

Что такое OneWallet Auth Center и три Flutter-приложения.

Что такое OneWallet Auth Center

Auth Center — Serverpod-сервис, выпускающий JWT-токены и управляющий жизненным циклом пользователей (регистрация, KYC, архивация). Сервис оркестрирует верификацию личности через kyc-service и является тонким HTTP-фасадом к Payment Manager для всех финансовых операций. PII-данные (имя, телефон, паспорт) хранятся зашифрованными в PostgreSQL.

Приложения

Приложение Папка Аккаунт-тип Назначение
OneWallet (кошелёк) onewallet_base_flutter/ consumer / wallet Пополнение, P2P-переводы, QR-оплата, история, KYC
Closeloop closeloop_app_flutter/ consumer Замкнутый контур: корпоративные / campus / event платежи. Упрощённый онбординг, без KYC. [PLAN]
Merchant POS merchant_app_flutter/ merchant / agent Создание инвойсов, приём оплаты по QR, NFC-терминал, запрос settlement. [PLAN]
Shared UI onewallet_shared_ui/ Общие виджеты и тема для всех трёх приложений

Все три приложения используют один и тот же onewallet_base_client (Serverpod-generated) и общаются с Auth Center через него.

Роль Auth Center в системе

flowchart LR
    loop[one_loop_app] --> AC[Auth Center\nServerpod :8080]
    merchant[one_merchant_app] --> AC
    AC -->|HMAC| PM[Payment Manager]
    AC -->|HTTP| KYC[kyc-service]
    AC -->|S3| Garage[Garage S3]
    AC -->|Redis XADD| Notif[notifications-service]
    nginx -->|auth_request| AC

Auth Center — единственная точка входа для Flutter-приложений. nginx валидирует JWT через auth_request → Auth Center перед проксированием запросов к PM. Auth Center никогда не обращается к TigerBeetle напрямую — только через PM.

Что делает Auth Center

  • JWT — выпускает и валидирует токены; JWKS-endpoint доступен для nginx и других сервисов
  • KYC оркестрация — принимает документы от пользователя, передаёт в kyc-service, обновляет статус аккаунта
  • PM facade — проксирует запросы баланса, истории, создания intents в Payment Manager через HMAC-подписанные вызовы
  • PII шифрование — имя, телефон, паспортные данные хранятся зашифрованными; расшифровка только по явному запросу с аудитом

Жизненный цикл пользователя

Auth Center управляет жизненным циклом каждого пользователя через четыре основные стадии:

  1. Регистрация (registration_in_progresskyc_pending)
  2. Пользователь вводит email и подтверждает OTP (6-значный код)
  3. Задаёт пароль и 6-значный PIN (требование NatBank)
  4. Аккаунт переходит в статус kyc_pending, готов к верификации личности

  5. KYC-верификация (in_reviewpending_operator_reviewfully_verified)

  6. Пользователь загружает фото документа и селфи
  7. kyc-service выполняет OCR и сравнение лиц (faceMatchScore)
  8. При автоматическом одобрению (score ≥ 0.85) → auto_approved
  9. Оператор финализирует верификацию; статус становится fully_verified
  10. Создаётся TigerBeetle-аккаунт (через Payment Manager)

  11. Активный кошелёк (active)

  12. Пользователь может выполнять P2P-переводы, пополнения, QR-платежи
  13. Account Tier = STANDARD (полные лимиты)
  14. PII-данные зашифрованы в PostgreSQL

  15. Архивирование (при необходимости)

  16. Пользователь запрашивает удаление или аккаунт неактивен долго
  17. Статус → archived, операции блокируются
  18. PII может быть удалена по требованию регулятора (GDPR)

Подробно: User Journeys и KYC Flow.

Ключевые инварианты

Инвариант Правило Проверка
PII Только через PiiProfileWriter с шифрованием onewallet_base_server/lib/src/services/pii_service.dart
PM вызовы Только через PspHmacClient с HMAC-подписью onewallet_base_server/lib/src/services/pm_client.dart
TigerBeetle Только через Payment Manager (никогда напрямую) nginx proxy → PM → TB
pm.* схема Только чтение через views в public.* context onewallet_base_server/lib/src/models/
Account Type Guard requireAccountType(session, [...]) в каждом endpoint onewallet_base_server/lib/src/endpoints/
Idempotency Все финансовые операции идемпотентны через idempotencyKey PM spec

Эти инварианты гарантируют безопасность и целостность системы. Никогда не обходи эти правила.

Где читать дальше

Тема Документ
Все пользовательские сценарии User Journeys
KYC процесс подробно KYC Flow
Уровни аккаунтов Account Types
Платёжные сценарии Payment Scenarios
Технические детали dev/README.md