Описание технической архитектуры программного обеспечения «БанкСклад»
Версия документа: 0.1
Дата подготовки: 2026-05-28
Дата утверждения: 2026-05-28
Правообладатель: ИП Рыбин Анатолий Сергеевич
ИНН: 344597418038
ОГРНИП: 322344300063718
Программное обеспечение: «БанкСклад»
Версия ПО: 2.0
1. Общая архитектура
«БанкСклад» является клиент-серверным веб-приложением, интегрированным с сервисом «МойСклад», банковскими API и почтовыми каналами получения выписок.
Пользовательский интерфейс может открываться внутри «МоегоСклада» по context key и напрямую по адресу https://bank.datasklad.com/app с авторизацией по логину и паролю. Серверная часть обрабатывает авторизацию, настройки интеграций, банковские события, импорт и экспорт платежей, связь с API «МоегоСклада» и фоновые задачи.
2. Основные компоненты
2.1. Пользовательский интерфейс
Пользовательский интерфейс предоставляет функции:
- просмотр и настройка банковских интеграций;
- запуск авторизации в банке;
- настройка почтовой выписки;
- запуск ручного импорта;
- экспорт платежей;
- настройка Telegram-уведомлений;
- настройка исключений.
Интерфейс открывается пользователем из аккаунта «МоегоСклада» или напрямую по адресу экземпляра ПО. Прямой вход используется в том числе для экспертной проверки, когда проверяющему предоставляется отдельная учетная запись в ПО «БанкСклад».
2.2. Backend/API
Серверная часть реализует:
- обработку пользовательских запросов;
- авторизацию пользователя при открытии приложения из «МоегоСклада» по context key;
- авторизацию пользователя по логину и паролю при прямом открытии экземпляра ПО;
- получение и хранение настроек интеграций;
- импорт банковских операций;
- экспорт платежей в банки;
- взаимодействие с API «МоегоСклада»;
- обработку ошибок;
- фоновые задачи и обработку событий.
Основной стек серверной части:
- Python;
- FastAPI;
- SQLAlchemy;
- Alembic;
- PostgreSQL;
- Docker.
2.3. DataSklad Vendor
DataSklad Vendor используется как авторизационный центр, административная консоль и распределительный мост между «МоимСкладом», Vendor API «МоегоСклада» и решениями DataSklad.
Компонент отвечает за:
- обработку установки решения;
- прием vendor-запросов от «МоегоСклада»;
- связь аккаунта «МоегоСклада» с конкретным решением;
- учет тарифов, пробного периода, срока использования и статуса доступа;
- авторизацию открытия приложения через context key и поддержку прямого входа в проверочный интерфейс;
- административный контроль состояния решений.
2.4. База данных
База данных используется для хранения:
- сведений об установках;
- состояний аккаунтов;
- настроек интеграций;
- тарифов и лимитов;
- технических статусов обработки;
- служебных данных, необходимых для работы ПО.
ПО не предназначено для постоянного хранения банковских платежей как самостоятельного финансового архива. Платежи обрабатываются и передаются в «МойСклад».
2.5. Фоновые обработчики
Фоновые обработчики используются для:
- обработки банковских событий;
- опроса банков при отсутствии push-уведомлений;
- обработки почтовых выписок;
- повторной обработки временно неуспешных операций;
- отправки пользовательских уведомлений.
3. Внешние интеграции
3.1. «МойСклад»
ПО взаимодействует с:
- каталогом решений «МоегоСклада»;
- Vendor API «МоегоСклада»;
- API «МоегоСклада» для работы с платежами, контрагентами, организациями, договорами и документами;
- пользовательским интерфейсом «МоегоСклада», из которого открывается приложение и кнопки решений.
3.2. Банки
ПО поддерживает два типа банковских интеграций:
- прямые интеграции через API банков;
- почтовые интеграции через регулярные выписки.
Для прямых интеграций пользователь проходит авторизацию в банке. Для почтовых интеграций пользователь настраивает регулярную отправку выписки на уникальный адрес электронной почты.
3.3. Telegram
Telegram используется для пользовательских уведомлений о платежах. Пользователь самостоятельно указывает токен своего бота и получателя уведомлений.
4. Потоки данных
4.1. Установка приложения
- Пользователь устанавливает «БанкСклад» в аккаунт «МоегоСклада».
- «МойСклад» отправляет vendor-запрос в DataSklad Vendor.
- DataSklad Vendor создает или обновляет состояние аккаунта.
- Пользователь открывает приложение в «МоемСкладе».
- ПО авторизует пользователя и показывает доступный интерфейс.
4.2. Импорт платежа через прямую интеграцию
- Пользователь создает интеграцию и проходит авторизацию в банке.
- Банк передает сведения о совершенной операции или ПО получает их при опросе банка.
- ПО проверяет контрагента и расчетный счет в «МоемСкладе».
- ПО проверяет наличие платежа.
- ПО создает или обновляет платеж.
- ПО привязывает платеж к документам при наличии совпадений.
- При необходимости отправляется Telegram-уведомление.
4.3. Импорт платежа через почтовую выписку
- Пользователь настраивает регулярную выписку в банке.
- Банк отправляет выписку на уникальный адрес интеграции.
- ПО принимает и обрабатывает письмо.
- Из выписки извлекаются операции.
- Для каждой операции выполняются проверки и создание платежей в «МоемСкладе».
4.4. Экспорт платежа
- Пользователь выбирает платежи в «МоемСкладе».
- Пользователь запускает действие «Экспорт платежей в банк».
- ПО проверяет реквизиты и обязательные данные.
- ПО передает платежи в банк.
- В банке создаются черновики платежей.
- Пользователь подписывает и отправляет платежи в личном кабинете банка.
5. Размещение и инфраструктура
ПО размещается в Яндекс Облаке. Для разработки и эксплуатации используются отдельные контуры окружений. API поставляется в Docker-контейнерах и публикуется через инфраструктуру DataSklad.
Секреты и параметры окружения не хранятся в публичных репозиториях и документации. Для production-окружения используются защищенные параметры окружения и/или секретное хранилище.
6. Технические средства хранения исходного текста и объектного кода
Исходный текст ПО хранится в Git-репозиториях, доступ к которым ограничен правообладателем. Объектный код и поставляемые контейнерные образы хранятся в закрытых инфраструктурных хранилищах, используемых для выпуска ПО.
Технические средства хранения исходного текста, объектного кода, контейнерных образов и сборки размещаются на серверах Яндекс Облака на территории Российской Федерации. Доступ к репозиториям, окружениям сборки и объектному коду ограничен правообладателем и предоставляется только уполномоченным лицам.
Не рекомендуется публиковать исходный код ПО в открытом доступе или размещать его в публичном архиве. При необходимости экспертной проверки доступ к исходному тексту может предоставляться отдельно в контролируемом порядке.
7. Безопасность данных
ПО обрабатывает банковские операции для передачи в «МойСклад». В инфраструктуре ПО не предусматривается хранение платежей как самостоятельного архива: данные используются для обработки и передачи в учетную систему пользователя.
При подготовке демо-контура для экспертизы должны использоваться контрольные данные, не содержащие:
- банковские токены, не предназначенные для экспертной проверки;
- реальные пароли пользователей и сотрудников;
- персональные данные клиентов;
- платежи клиентов;
- production-секреты.
8. Зависимости и сторонние компоненты
Основные технологические зависимости ПО:
- Python;
- FastAPI;
- SQLAlchemy;
- Alembic;
- PostgreSQL;
- Docker;
- Nuxt;
- Vue;
- PrimeVue;
- API «МоегоСклада»;
- Vendor API «МоегоСклада»;
- API банков;
- Telegram Bot API.
Подробный перечень сторонних компонентов, версий, лицензий и назначения приведен в документе 12_third_party_components.md.