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

Payment Manager — Полная UML-схема процессов

Статусы реализации: - ✅ М1–М5 — реализовано - 🔧 Phase 1 — текущий спринт (Internal P2P sync + Rule Engine CEL Core P0) - 🔵 Phase 2 — следующий (IPPS / QP адаптеры) - 🟣 Phase 3–4 — будущее (разделение сервисов, WebSocket)


1. Машина состояний Intent

Intent State Machine


2. Зоны ответственности

Responsibility Zones


3. Sequence: Phase 1 — Internal P2P Sync (🔧)

Phase 1 Internal P2P


4. Sequence: Phase 2 — External PSP Async (🔵)

Phase 2 External PSP


5. Консистентность данных — где и когда меняется состояние

Data Consistency Timeline


6. Мутации данных по сервисам

Момент Метод DB (PostgreSQL) blnkfinance Redis/Valkey
t=0 createIntent INSERT intents{CREATED} ✅ GET idempotency ✅
t~8ms validate() UPDATE intents{VALIDATED, limitRuleId 🔧}
t~18ms validate() → CEL RuleEngine SELECT fee_rules (CEL eval) 🔧 GET _metaCache (TTL 10s) 🔧
t~25ms authorize() UPDATE intents{AUTHORIZED, blnkInflightTx} ✅ POST /transactions (Hold + fee_rule_id/version в meta) 🔧 SET idempotency ✅
t~80ms settleSync() BEGIN TX SELECT FOR UPDATE (lock) 🔧
t~110ms settleSync() blnk 1 PUT inflight commit 🔧
t~140ms settleSync() blnk 2 POST settlement (Leg A+B) 🔧
t~143ms settleSync() COMMIT UPDATE intents{SETTLED} 🔧
t~143ms settleSync() COMMIT INSERT tx_events{OUTGOING} 🔧
t~143ms settleSync() COMMIT INSERT tx_events{INCOMING} 🔧
post-commit cache bust DEL balance cache x2 🔧
recovery InternalRecoveryCall UPDATE intents{SETTLED} если crash 🔧 409 → no-op 🔧
Phase 2 dispatch() UPDATE intents{IN_PROGRESS} ✅ XADD stream.*.jobs 🔵
Phase 2 ResultsConsumer UPDATE intents{COMPLETED/FAILED} 🔵 XREADGROUP 🔵
Phase 2 OutboxWorker settle UPDATE intents{SETTLED} ✅ commit + settlement 🔵
Phase 2 OutboxWorker void UPDATE intents{ROLLED_BACK} ✅ void inflight 🔵
Phase 2 OutboxWorker INSERT tx_events 🔵

7. blnk Дерево транзакций — наследование meta_data

blnk Transaction Tree


8. Recovery — пути восстановления

Recovery Paths


9. Деплой по фазам

Deploy Phases


10. Flutter — что и когда вызывает

Flutter Calls