🧱 Обзор сервисов и репозиториев Capital

Как устроена платформа на уровне сервисов и кода. Инфраструктура прод-окружения - в Архитектура Capital v1.0.md; единый пульт (домены/доступы/метрики) - в Обзор платформы - единый пульт.md.

Стек

FastAPI + async SQLAlchemy 2.0 + Jinja2 (server-rendered, без SPA) + Postgres 16. Общий пакет capital_shared (канонические ORM-модели + бизнес-ядро) импортируется всеми сервисами. Схема БД - через Alembic (на stage/prod), create_all только в dev/тестах (ephemeral SQLite).

Три сервиса + общий пакет

Сервис Репозиторий Папка в головном Порт (внутр.) Домен Аудитория
backoffice (Ledger) capital-ledger backoffice/ 8000 bo.algorys.cc операторы банка
cabinet (Portal) capital-portal cabinet/ 8101 app.algorys.cc клиенты банка
capital-kyc (SumSub-мост) capital-kyc отдельный деплой 8099 kyc.algorys.cc вебхуки SumSub
capital_shared (пакет) capital-shared shared/ - - код обоих приложений

Все порты слушают только 127.0.0.1; публичный вход - через named Cloudflare Tunnel (никакие порты в интернет не открыты, origin-IP скрыт). Postgres общий у backoffice и cabinet; capital-kyc держит store идемпотентности вебхуков в volume kyc_data.

🗄 backoffice (Ledger) - операторский back-office

Полное управление банком: клиенты, счета, платежи (4-eyes-одобрение, реверсы), FX-ставки, AML/Risk/Sanctions, тарифы и выручка, лимиты, карты (NS Cards), план счетов и баланс, SAR, справочники, отчёты (EOD/Journal), обмен документами, messaging, аудит. RBAC-роли операторов - см. 04 - RBAC и роли.md.

Роут активации клиента /companies/{id}/activate - ручное открытие кабинета после успешного KYC (см. процесс онбординга).

🧑‍💼 cabinet (Portal) - клиентский кабинет

Изолирован по компании (client_id/company_id проверяется на каждом запросе). Функционал: счета и балансы, платежи и бенефициары (IBAN-валидация), FX-конвертация, инвойсы (клиент выставляет счета своим плательщикам), карты (свои, reveal с 3DS), обмен документами, messaging с оператором, выписка (печатный PDF). Вход - email+пароль (identity на CabinetUser), опционально 2FA (TOTP). Один логин может владеть несколькими компаниями (через Membership).

Self-service онбординг: /onboarding (заявка) → /onboarding/verify (email + запуск KYC). Подробности - в processes/01 - Онбординг клиента.md.

🪪 capital-kyc - мост к SumSub

Отдельный сервис. Создаёт applicant'ов (KYC-director и KYB-company уровни), выдаёт verification_url / websdkLink, принимает вебхук POST /webhooks/sumsub (HMAC-проверка, идемпотентность) и форвардит вердикт (GREEN/RED/PENDING/ON_HOLD) в Ledger. Уровни SumSub: kyc-director-msb-ca-v1 (физлицо-директор), kyb-msb-ca-v1 (компания). Детали - в 03 - Интеграции.md.

🧩 capital_shared - общий пакет

Канонические ORM-модели (models.py) + бизнес-ядро, которое переиспользуют оба приложения:

Модуль Назначение
models.py все ORM-модели (33 таблицы) - единый источник схемы
wallet.py ledger-ядро: проводки, идемпотентность, FOR UPDATE-локи
fx.py FX-ставки и конвертация между кошельками
fees.py расчёт комиссии/себестоимости, эффективный тариф
openingfee.py сбор комиссии за открытие счёта (реальный debit)
accounting.py производный баланс (Balance Sheet) из client-ledger
risk.py risk-scoring клиента + нормализация имён/скрининг санкций
kyt.py мониторинг транзакций (KYT)
rails.py Papaya rail (SEPA-ностро)
cards.py NS Cards issuer
security.py SecurityHeadersMiddleware (CSP/HSTS/…)
ibanutil.py валидация IBAN (ISO 13616 mod-97 + длины стран)
email.py отправка писем через SMTP (Resend)
limits.py лимиты платежей клиента
documents.py обмен документами (запрос/загрузка/ревью)

Головной репозиторий capital

Точка сборки и деплоя: docker-compose.yml, migrations/ (Alembic, владелец схемы - образ backoffice), .github/workflows/ (CI: тесты + сканеры), deploy/ (Cloudflare-tunnel + pgBackRest-kit). Компонентные репозитории вливаются через git subtree pull, деплой - только отсюда. Правила параллельной работы - в processes/03 - Параллельная разработка.md.

Прочие репозитории

Репозиторий Роль
capital-hub зарезервирован; Hub не строим (роль процессинга закрывает Papaya)
capital-kb эта база знаний
capital-support инциденты, хотфиксы, диагностика