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: 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 | Узлы | Статус у нас |
|---|---|---|
| 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 - процессинговое ядро (у нас отсутствует)

Стек HUB: PHP · MySQL · Azure HSM · REST-API.
Поток: Client's Ledger ↔ HUB API ↔ Hub Core ↔ Plugin API ↔ Provider Plugin 1..N → provider-specific protocols → банки.
- HUB API методы: submit payment instruction, open account, get account funding details, currency exchange, get transactions/balance, clients, create card, get card statement/data/balance, public/custom/webservice.
- Currencies & Schemas · Instructions & Transactions (details, trace, links, авто/ручная сверка и обработка) · HUB Users (login/roles/permissions/2FA/audit).
- Nostro Accounts: subaccounts, credentials, mappings, rules, methods, schemes, priority, IBANs, balances, sweep, custom exports, webhooks/callbacks.
- ISO 20022 Support: import / export. · FX: quotes / trades / fx payments. · Cron Jobs: load transactions / load balances.
У нас - один прямой рельс (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 переводов.
Движки/слои, которых у нас нет или частично (ранжировано):
- 🔴 Payment-flows + payment-schemes routing engine - многостадийные потоки (
flow_id/current_stage_id/scheduled_flow_id) + схемы (routing_config/processing_rules/limits/supported_currencies/hub_schema_slug). У нас - один хардкод-рельс. Ядро мультирельсовой масштабируемости. - 🔴 Business-operations как богатый оркестратор - fee/markup/correction child-BO, scheduled + reservation,
idempotency_key,payee_verification/CoP,external_ref,failure_details. У нас - базовый. - 🔴 Мультиностро + live Hub sync (
/nostros/hub/accounts) -fx_provider_group,fx_trading_window,safeguarding_status,payee_verification_schemes. - 🟡 Webhooks/callbacks леджер с ретраями (
retry_count/last_retry_at/processed_at) - единый журнал событий по всем сущностям. - 🟡 Limits engine - limit-plans + custom per-customer лимиты.
- 🟡 Customer EAV
properties+ property groups - гибкие атрибуты (типизированные, сгруппированные) без миграций. - 🟡 Full messaging center - треды (
conversation_root/parent_id/is_reply), attachments, recipients, notification_type. У нас - базовые сообщения. - 🔴 Translations / i18n admin - 6 950 ключей по языкам/группам.
- 🟡
related_account_accesses- мультидоступ: один логин → несколько клиентов/подписантов (важно для B2B). - 🟡 Account-product-configuration - продуктовые шаблоны счетов.
- 🟡 Reminders · notes · file-assets · service-accounts (M2M-токены).
- 🟡 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/login → data.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.