Перейти к основному содержимому

Описание технической архитектуры программного обеспечения «БанкСклад»

Версия документа: 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. Установка приложения

  1. Пользователь устанавливает «БанкСклад» в аккаунт «МоегоСклада».
  2. «МойСклад» отправляет vendor-запрос в DataSklad Vendor.
  3. DataSklad Vendor создает или обновляет состояние аккаунта.
  4. Пользователь открывает приложение в «МоемСкладе».
  5. ПО авторизует пользователя и показывает доступный интерфейс.

4.2. Импорт платежа через прямую интеграцию

  1. Пользователь создает интеграцию и проходит авторизацию в банке.
  2. Банк передает сведения о совершенной операции или ПО получает их при опросе банка.
  3. ПО проверяет контрагента и расчетный счет в «МоемСкладе».
  4. ПО проверяет наличие платежа.
  5. ПО создает или обновляет платеж.
  6. ПО привязывает платеж к документам при наличии совпадений.
  7. При необходимости отправляется Telegram-уведомление.

4.3. Импорт платежа через почтовую выписку

  1. Пользователь настраивает регулярную выписку в банке.
  2. Банк отправляет выписку на уникальный адрес интеграции.
  3. ПО принимает и обрабатывает письмо.
  4. Из выписки извлекаются операции.
  5. Для каждой операции выполняются проверки и создание платежей в «МоемСкладе».

4.4. Экспорт платежа

  1. Пользователь выбирает платежи в «МоемСкладе».
  2. Пользователь запускает действие «Экспорт платежей в банк».
  3. ПО проверяет реквизиты и обязательные данные.
  4. ПО передает платежи в банк.
  5. В банке создаются черновики платежей.
  6. Пользователь подписывает и отправляет платежи в личном кабинете банка.

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.