10 - Реконструкция по Iorys (архитектура и гэп-карта)

Составлено 17.09.2026. Источники: iorys.com (продуктовые схемы Platform architecture, Business functions, Back-end modules) + живой разбор их demo backend по API (api-demo-ledger.s-pay.io, read-only) + сверка с кодом Capital. Интерактивная карта статусов (🟢/🟡/🔴): артефакт https://claude.ai/code/artifact/9ae362a1-b57d-4a82-8229-70e6943171c4.

Capital - собственная копия платформы Iorys. Этот документ фиксирует эталонную архитектуру Iorys и что нам осталось реализовать, чтобы дойти до неё.


🏗 1. Платформенная архитектура Iorys (Ledger)

Iorys Ledger - Platform architecture

Стек Iorys: Python · Oracle platform (RDBMS) · Vue JS · REST-API · Plug-in for HUB · Azure HSM. Наш стек (Capital): FastAPI (Python) · PostgreSQL · Jinja2 (server-rendered) · REST · без HUB · без HSM.

Слои (сверху вниз): - 🗄 БД: Oracle RDBMS - Tables / Views / Constraints / Stored Procedures / Triggers. Packages + Views питают Application server (business logic / PL/SQL), помечено Session protected. Связь через OCI. → У нас: Postgres + схема + миграции Alembic; бизнес-логика в app-tier (не в хранимках). - ⚙️ App-tier (back+front): Python site-package libs, cx_Oracle, Cron/syslog, Core WSGI app (Sessions / Logins / Auth / Rights), API mod_wsgi. REST-выходы: Payment HUB · Payment Card Provider · Sanctions Screening · PSD2 API. - 🖥 Front: Onboarding App · VUE.JS · 2FA App (по Rest API). - 🧱 Граница: IP Filter / HTTPS. - 🛡 Firewall перед всем; за ним - Clients и Employees.

Что берём в свою инфраструктуру (по просьбе CEO): - 🔴 HSM для ключей/PAN (у Iorys - Azure HSM). У нас нет - в план. - 🟡 Шифрование чувствительных полей БД (сейчас транзитное; поля - доводить). - 🔴 Выделенный Cron / syslog слой (у Iorys - загрузка транзакций/балансов). - 🟢 Firewall + IP Filter / HTTPS - у нас Cloudflare Tunnel + ufw (origin скрыт). - 🟡 Полный WAF-профиль + off-site бэкапы + retention/архивирование.


📊 2. Ledger - Business functions (функциональное дерево)

Iorys Ledger - Business functions

Группа Iorys Узлы Статус у нас
Nostro management Charts of Accounts, Interest Rates, Types & Groups, FX Spread → P&L, Balance Sheet 🟡 CoA/P&L/BS есть; Interest Rates, FX Spread, мультиностро+sweep - 🔴
Financial Accounting Balance Sheet, P&L, мультивалютный учёт, EOD 🟢 (profitability по агентам - 🟡)
Rates & Fees / FX Tariffs, FX-курсы, Multi-Currency, Cards, Dealing Desk, Spot/FWD 🟡 тарифы/курсы/мультивалюта есть; Dealing Desk, Spot/FWD - 🔴
Products Account Details, Balances, Payments & Transactions, Multi-Currency, Unique IBANs, Deposits, 3rd Party Wallets, Loans, AIS/PIS 🟡 счета/платежи/мультивалюта есть; Unique IBANs/Deposits - 🟡; 3rd Party Wallets, Loans, AIS/PIS (PSD2) - 🔴

Middle & Front-Office: Sanction Screening (List/Transaction/Name&Company) 🟢 · Internet Banking (кабинет) 🟡 · 2FA App 🟢 · Client On-boarding 🟢 · Nostro Connectivity HUB (Banks/PSPs/FX Providers) 🔴.

CRM: Companies (UBO/Users/2FA) 🟢 · Individuals 🟢 · Documents 🟢 · Text Alerts 🔴. Compliance/KYC: KYC Profile 🟢 · AML многоуровневый 🟢 · Payment Screening 🟢 · единая on-boarding очередь 🟡 · SAR 🟢. External: FX Rates 🟢 · PEP & Sanction List 🟢 · Video Ident 🟡 · Data Exchange (регистры/CreditInfo) 🔴 · Commissions for agents (multi-layer) 🔴.

Back-end modules (текст Iorys): CRM · Tariffs · Nostro management · Accounting & Reporting · Access Rights · 2FA Staff · Loans and Trade Finance 🔴 · Archiving 🟡 · Data Exchange Integrations 🔴 · PSD2 Open API 🔴 · Encryption 🟡 · AIS/PIS 🔴 · Commissions for agents 🔴.


🔀 3. HUB - процессинговое ядро (у нас отсутствует)

Iorys HUB - Business functions

Стек HUB: PHP · MySQL · Azure HSM · REST-API. Поток: Client's Ledger ↔ HUB API ↔ Hub Core ↔ Plugin API ↔ Provider Plugin 1..N → provider-specific protocols → банки.

У нас - один прямой рельс (Papaya), HUB-слоя нет. Реконструкция HUB - отдельный сервис capital-hub.


🧮 4. Движки backend (снято с живого API Iorys)

API Iorys: Laravel + Sanctum, spatie/laravel-permission (101 право), envelope {status, status_code, data, meta}. OpenAPI/Swagger не выставлен. Объёмы demo: 97 клиентов, 60 счетов, 443 платежа, 27 722 FX-курса, 291 webhook, 6 950 переводов.

Движки/слои, которых у нас нет или частично (ранжировано):

  1. 🔴 Payment-flows + payment-schemes routing engine - многостадийные потоки (flow_id/current_stage_id/scheduled_flow_id) + схемы (routing_config/processing_rules/limits/supported_currencies/hub_schema_slug). У нас - один хардкод-рельс. Ядро мультирельсовой масштабируемости.
  2. 🔴 Business-operations как богатый оркестратор - fee/markup/correction child-BO, scheduled + reservation, idempotency_key, payee_verification/CoP, external_ref, failure_details. У нас - базовый.
  3. 🔴 Мультиностро + live Hub sync (/nostros/hub/accounts) - fx_provider_group, fx_trading_window, safeguarding_status, payee_verification_schemes.
  4. 🟡 Webhooks/callbacks леджер с ретраями (retry_count/last_retry_at/processed_at) - единый журнал событий по всем сущностям.
  5. 🟡 Limits engine - limit-plans + custom per-customer лимиты.
  6. 🟡 Customer EAV properties + property groups - гибкие атрибуты (типизированные, сгруппированные) без миграций.
  7. 🟡 Full messaging center - треды (conversation_root/parent_id/is_reply), attachments, recipients, notification_type. У нас - базовые сообщения.
  8. 🔴 Translations / i18n admin - 6 950 ключей по языкам/группам.
  9. 🟡 related_account_accesses - мультидоступ: один логин → несколько клиентов/подписантов (важно для B2B).
  10. 🟡 Account-product-configuration - продуктовые шаблоны счетов.
  11. 🟡 Reminders · notes · file-assets · service-accounts (M2M-токены).
  12. 🟡 external-api.customers - исходящий синк клиентов во внешние системы.

Недостающие поля на общих сущностях: - Account: account_product_configuration_id, currency_mode, for_customer_account_id, is_externally_managed, payment_signature_combination_display. - Payment / Business-operation: markup_* (FX-наценка child-BO), is_correction/correction_reason, scheduled_at/scheduled_flow_id/scheduled_reservation_bo_id, payee_verification/cop, external_ref, failure_details, hidden_from_portal, initiator, fee_business_operation_id/is_fee_child. (реверсы is_reversed/original_payment_id/reversal_reason у нас уже есть - реализованы 17.09.) - Customer: properties[] (EAV), related_account_accesses[], limit_plan+has_custom_limits, has_custom_tariffs, addresses[] (type/is_primary/alt_phone/website). - Nostro: fx_provider_group, fx_trading_window, safeguarding_status, payee_verification_schemes, externally_managed_fees, fee_account, reuse_account, supports_fx. - Beneficiary: correspondent_bank_*, beneficiary_type, ledger_client, own_account, notification_email. - AML check: полиморфные checkable_type/checkable_id, rule_results, required_approval_level. - Tariff rule: tiers (тиры), min/max_transaction (отдельно от amount), fee_currency. - Webhook: retry_count/last_retry_at/processed_at/error_message.

Коррекции путей API (для 03 - Интеграции / старых заметок): реальные пути - /tariffs/plans и /tariffs/rules (не /tariffs), /limit-plans (не /limits), /rbac/roles (не /roles), /relation-types, /chart-of-accounts, /webhooks, /notes, /file-assets. Auth: POST /auth/local/logindata.token.


🗂 5. Карта правок по репозиториям (что кому передать)

Репозиторий Что реализовать Приоритет
capital-hub (зарезервирован) HUB-сервис: HUB API + Hub Core + Plugin API, provider-plugins 1..N, smart routing, ISO 20022 import/export, webhooks/callbacks, cron-загрузки, мультиностро (subaccounts/mappings/rules/schemes/sweep). 🔴 P1 крупное
capital (головной/инфра) Инфра по Iorys: HSM, шифрование полей БД, cron/syslog, off-site бэкапы + retention, полный WAF; PSD2/Open Banking (AIS/PIS); payment-flows/schemes routing engine; webhooks-леджер с ретраями. 🔴 P1 инфра
capital-ledger (backoffice) Nostro management (interest rates, FX spread, types&groups), Dealing Desk / Spot-FWD, Loans & Trade Finance, Deposits-продукт, Unique IBANs выдача, Commissions for agents (multi-layer), profitability-срезы, Data Exchange, business-ops оркестратор (fee/markup/correction/scheduled child-BO), limits engine, tariff tiers, four-eyes на реверс. 🟡 P2
capital-portal (cabinet) Internet Banking: FX в кабинете, полноценные Messages (треды/attachments), Text Alerts (SMS/push), 3rd Party Wallets, related_account_accesses (мультидоступ). 🟡 P2
capital-kyc Video Ident, единая on-boarding очередь, расширение источников PEP/санкций. 🟡 P3
capital-shared Модели: loans, deposits, interest_rates, nostro-pool/mappings, agent-commissions, provider-plugins, customer EAV properties, account-product-config, недостающие поля выше. Одна заморозка на поток. 🟡 по мере фич

✅ Что у нас УЖЕ есть (для контекста)

Клиенты (компании + физлица), счета, карты (issue/reveal/limit/funding), платежи (approve/reject/reverse с fault-driven комиссией), FX-курсы, тарифы (планы+правила), accounting (balance sheet, chart of accounts, P&L), reports + EOD, AML многоуровневое одобрение (four-eyes), SAR, sanctions + KYT, reference (branches/tags/referral), audit, RBAC, 2FA, beneficiaries (+correspondent banking), business-operations (базовый), онбординг (email-first + 9 KYC-блоков), бренд Stefa Pay. Прод: bo.algorys.cc / app.algorys.cc / kyc.algorys.cc.