Карта сервисов OneWallet
Актуально: PM v2 с TigerBeetle (ветка move-to-tigerbeetle).
blnkfinance удалён — заменён на Payment Manager (Node.js) + TigerBeetle.
Диаграммы: Архитектура · Полный flow
Синхронные вызовы
| От |
К |
Протокол |
Что |
| Flutter App |
nginx |
HTTPS + JWT |
Все запросы пользователя |
| nginx |
Auth Center |
HTTP (internal) |
/api/* — auth, KYC, профиль |
| nginx |
Payment Manager |
HTTP + HMAC |
/api/pm/* — баланс, история (после JWT check) |
| Auth Center |
Payment Manager |
HTTP + HMAC |
POST /intents — создание платежа (X-User-Id обязателен) |
| Mini-App Backend |
Payment Manager |
HTTP + HMAC |
POST /intents — только из внутренней сети |
| Admin Panel |
Auth Center |
HTTPS + JWT |
Управление пользователями, KYC |
| Payment Manager |
TigerBeetle |
TB SDK (TCP) |
Все финансовые операции (pending/post/void) |
| Payment Manager |
IPPS PPXC |
HTTPS |
/wallet-transfer/query + /wallet-transfer/confirm (Phase 1 — direct HTTP) |
INTERNAL_P2P (operationType=P2P_TRANSFER) выполняется синхронно внутри PM — TigerBeetle PENDING + POST_PENDING в одном HTTP-запросе. Адаптер не нужен.
Асинхронные вызовы (Redis pub/sub + Streams)
| Канал / Stream |
Продюсер |
Потребитель |
Назначение |
intent.{id} (pub/sub) |
OutboxWorker (PM) |
Auth Center (Serverpod) |
Финальный статус SETTLED/FAILED → Flutter |
stream.ipps.jobs |
Payment Manager |
IPPS Adapter |
Задания Fund-Out — Phase 2B |
stream.ipps.results |
IPPS Adapter |
Payment Manager |
Результаты IPPS — Phase 2B |
stream.qp.jobs |
Payment Manager |
QP Adapter |
Задания Fund-In (СБП) — Phase 2B |
stream.qp.results |
QP Adapter |
Payment Manager |
Результаты QP — Phase 2B |
stream.webhook.ipps |
Webhook Gateway |
Payment Manager |
Входящие IPPS refund — Phase 2B |
stream.notifications.jobs |
PM / Auth Center / KYC |
Notifications Service |
Push FCM/APNs |
Матрица доступа к TigerBeetle
| Сервис |
Доступ |
Что может |
| Payment Manager |
✅ единственный клиент |
Все операции: createAccounts, createTransfers (pending/post/void), lookupAccounts |
| Auth Center (Serverpod) |
❌ нет |
Баланс только через nginx → PM (GET /api/pm/accounts/balance) |
| PSP Adapters |
❌ нет |
Только через Redis Streams → PM |
| Admin Panel |
❌ нет |
Только через API Auth Center / PM |
| Reconciliation Service |
✅ READ (Phase 2C) |
Только lookupAccounts / lookupTransfers для сверки |
Матрица доступа к PostgreSQL
| Схема |
Кто пишет |
Кто читает |
public.* |
Serverpod (через serverpod generate) |
Serverpod, PM read-only (search_path=pm,public) |
pm.* |
Payment Manager (через drizzle-kit) |
PM, Admin Panel read-only |
Инвариант: Serverpod не пишет в pm.*. PM не пишет в public.*.
Внешние зависимости
| Сервис |
Внешний провайдер |
Назначение |
| IPPS PPXC Adapter |
IPPS PPXC API (BOT network) |
PromptPay Tag 29 (P2P), Tag 30 (Bill Payment) |
| QP API Adapter |
QP Processing API |
СБП Top Up — Phase 2B |
| kyc-service |
Google Gemini API |
OCR паспорта |
| kyc-service |
CompreFace |
Face matching |
| Auth Center |
SendGrid SMTP |
Email OTP |
| Auth Center |
FCM / APNs |
Push уведомления |
| Auth Center |
Garage S3 |
KYC документы (encrypted) |