Merge pull request #3 from konard/issue-2-c5f55f61d774

system_deposit_v1: detailed IT interaction schemes for deposit operations
This commit is contained in:
Dmitry 2026-03-20 00:35:16 +03:00 committed by GitHub
commit 578dbcd4d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,431 @@
# Схема взаимодействия ИТ-систем банка: операции с вкладами ФЛ
## Используемые системы
| Аббревиатура | Полное название | Роль |
|---|---|---|
| **АБС main** | Автоматизированная банковская система (главная книга) | Ведение счетов вклада 423, бухгалтерский учёт, договоры вклада |
| **АБС card** | Карточный бэк-офис | Ведение карточных счетов 40817, авторизационные лимиты |
| **Процессинг** | Lekton Classic (https://lekton.io/classic/) | Авторизация карточных операций, маршрутизация транзакций ATM/POS |
| **Anyway** | Anyway (https://finstream.ru/reshenija-dlja-bankov/anyway.html) | Front-end процессинг ATM: управление сценариями, интерфейс банкоматов |
| **ДБО ФЛ** | Интернет/мобильный банк (BSS, https://bssys.com/) | Клиентский канал для дистанционного обслуживания физлиц |
| **РМ НСПК** | Рабочее место НСПК | Обмен клиринговыми реестрами с НСПК (MasterCard/Visa/МИР) |
| **HSM/Auth** | Сервер авторизации / HSM | Криптографическая защита PIN, генерация сессионных ключей |
| **Notify** | Сервис уведомлений (SMS/Push) | Информирование клиента о транзакциях |
| **AML/Scoring** | Система ПОД/ФТ и скоринга | Проверка клиента при открытии вклада |
---
## Процесс 1. Открытие вклада через ДБО ФЛ
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ДБО as ДБО ФЛ (BSS)
participant АБС_М as АБС main
participant АМЛ as AML/Scoring
participant Notify as Сервис уведомлений
Клиент->>ДБО: Выбор продукта «Открыть вклад»,\nввод суммы и срока
ДБО->>АБС_М: Запрос условий (тарифы, ставки,\nдоступные продукты)
АБС_М-->>ДБО: Список продуктов: наименование,\nставка, мин/макс сумма, срок, условия пролонгации
ДБО->>АМЛ: Проверка клиента (ФИО, ИНН/паспорт,\nсумма, признак ПОД/ФТ)
АМЛ-->>ДБО: Результат проверки: ОК / блокировка / запрос документов
ДБО->>АБС_М: Команда открыть вклад:\n clientId, productCode, amount, currency,\n termDays, autoRenew, interestAccount (40817 или 423)
АБС_М->>АБС_М: Создание договора вклада,\nоткрытие счёта 423хх,\nпроводка дебет источника / кредит 423хх
АБС_М-->>ДБО: depositId, accountNo (423хх),\nrate, maturityDate, status=OPEN
ДБО->>Notify: Событие: вклад открыт,\ndepositId, сумма, ставка, дата окончания
Notify-->>Клиент: SMS/Push: «Вклад открыт. Счёт 423хх,\nсумма X руб., ставка Y%, срок до DD.MM.YYYY»
ДБО-->>Клиент: Экран подтверждения:\nномер счёта, ставка, срок, условия
```
### Вариант 1А — источник средств: текущий счёт / карта внутри банка
*(описан выше — списание с карточного счёта 40817 или текущего счёта клиента в АБС main)*
### Вариант 1Б — источник средств: перевод из стороннего банка через СБП
```mermaid
sequenceDiagram
actor Клиент
participant ДБО as ДБО ФЛ (BSS)
participant АБС_М as АБС main
participant СБП as Шлюз СБП
Клиент->>ДБО: Выбор источника пополнения «Другой банк (СБП)»
ДБО->>СБП: Запрос на входящий C2C/C2B перевод:\nphone, amount, depositAccount (423хх), paymentPurpose
СБП-->>ДБО: paymentId, статус «В обработке»
Note over СБП,АБС_М: Деньги от стороннего банка поступают\nна корсчёт, зачисляются на транзитный счёт
СБП->>АБС_М: Коллбэк: зачисление средств,\nsbpTxId, amount, depositAccount
АБС_М->>АБС_М: Проводка транзитный счёт → 423хх
АБС_М-->>ДБО: Уведомление: баланс вклада пополнен
```
### Таблица информационных потоков — Процесс 1
| № | Направление | Данные | Цель |
|---|---|---|---|
| 1.1 | Клиент → ДБО | Параметры вклада: тип продукта, сумма, срок, счёт списания | Инициирование заявки |
| 1.2 | ДБО → АБС main | Запрос условий: clientId, productCode | Получение актуальных тарифов |
| 1.3 | АБС main → ДБО | Список продуктов: name, rate, minAmount, maxAmount, termDays, autoRenew | Отображение предложений клиенту |
| 1.4 | ДБО → AML | clientId, docSeries/docNo, INN, amount, operationType=DEPOSIT_OPEN | Проверка ПОД/ФТ |
| 1.5 | AML → ДБО | verdict: OK/BLOCK/REQUEST_DOCS, riskScore | Разрешение или блокировка операции |
| 1.6 | ДБО → АБС main | clientId, productCode, amount, currency, termDays, sourceAccount, interestAccount, autoRenew | Команда открытия вклада |
| 1.7 | АБС main → АБС main | Внутренние проводки: Дт sourceAccount — Кт 423хх | Бухгалтерское отражение |
| 1.8 | АБС main → ДБО | depositId, accountNo(423хх), rate, maturityDate, status=OPEN | Подтверждение открытия |
| 1.9 | ДБО → Notify | depositId, clientPhone, amount, rate, maturityDate | Триггер уведомления |
| 1.10 | Notify → Клиент | SMS/Push: реквизиты вклада | Информирование клиента |
---
## Процесс 2. Открытие вклада через банкомат
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ATM as Банкомат
participant Anyway as Anyway (ATM front-end)
participant Proc as Процессинг (Lekton)
participant HSM as HSM/Auth
participant АБС_К as АБС card
participant АБС_М as АБС main
participant Notify as Сервис уведомлений
Клиент->>ATM: Вставка карты + ввод PIN
ATM->>Anyway: PIN-блок (зашифрован), cardNo (track2), terminalId
Anyway->>Proc: ISO 8583 Authorization Request:\npan, track2, pinBlock, terminalId, txnType=BALANCE
Proc->>HSM: Запрос верификации PIN:\npinBlock, PVK, cardNo
HSM-->>Proc: Результат проверки PIN: ОК / FAIL
Proc->>АБС_К: Проверка статуса карты: active/blocked,\nдоступный баланс, cardHolderId
АБС_К-->>Proc: cardStatus, availableBalance, accountNo(40817)
Proc-->>Anyway: Авторизация ОК, доступные операции
Anyway-->>ATM: Меню: список доступных операций
Клиент->>ATM: Выбор «Открыть вклад», ввод суммы и срока
ATM->>Anyway: txnType=DEPOSIT_OPEN, cardNo, amount, termCode
Anyway->>Proc: Запрос на открытие вклада:\npan, amount, termCode, merchantId
Proc->>АБС_К: Проверка и резервирование суммы\nна карточном счёте 40817
АБС_К-->>Proc: reserveId, availableAfter
Proc->>АБС_М: Команда открытия вклада:\nclientId (по cardHolderId), productCode, amount,\ncurrency, termDays, sourceAccount(40817)
АБС_М->>АБС_М: Открытие счёта 423хх, договор вклада,\nпроводка Дт 40817 — Кт 423хх
АБС_М-->>Proc: depositId, accountNo(423хх), rate, maturityDate
Proc-->>Anyway: Операция выполнена: depositId, accountNo, rate
Anyway-->>ATM: Экран успеха: счёт вклада, ставка, срок
ATM-->>Клиент: Чек: depositId, accountNo(423хх),\nсумма, ставка, дата окончания
Proc->>Notify: Событие: вклад открыт через ATM,\ndepositId, amount, maturityDate
Notify-->>Клиент: SMS: «Открыт вклад, счёт 423хх, сумма X руб
```
### Таблица информационных потоков — Процесс 2
| № | Направление | Данные | Цель |
|---|---|---|---|
| 2.1 | ATM → Anyway | track2, pinBlock (зашифр. DES/3DES), terminalId, txnType=AUTH | Передача данных карты и PIN для авторизации |
| 2.2 | Anyway → Процессинг | ISO 8583: pan, track2, pinBlock, stan, terminalId, txnType | Маршрутизация авторизационного запроса |
| 2.3 | Процессинг → HSM | pinBlock, PVK (PIN Verification Key), cardNo | Верификация PIN без раскрытия значения |
| 2.4 | HSM → Процессинг | verifyResult: OK/FAIL | Результат криптопроверки |
| 2.5 | Процессинг → АБС card | cardNo, requestType=STATUS_BALANCE | Проверка карты и баланса |
| 2.6 | АБС card → Процессинг | cardStatus, availableBalance, accountNo(40817), cardHolderId | Данные для решения об авторизации |
| 2.7 | ATM → Anyway | txnType=DEPOSIT_OPEN, amount, termCode, cardNo | Параметры открытия вклада от клиента |
| 2.8 | Процессинг → АБС card | cardNo, amount, action=RESERVE | Блокировка средств под операцию |
| 2.9 | Процессинг → АБС main | clientId, productCode, amount, currency, termDays, sourceAccount(40817) | Создание договора вклада |
| 2.10 | АБС main → Процессинг | depositId, accountNo(423хх), rate, maturityDate, status=OPEN | Подтверждение открытия |
| 2.11 | Процессинг → Notify | clientPhone, depositId, amount, rate, maturityDate | Отправка уведомления |
| 2.12 | ATM → Клиент | Чековая лента: depositId, accountNo, сумма, ставка, дата окончания | Документальное подтверждение для клиента |
---
## Процесс 3. Пополнение вклада через банкомат картой своего банка
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ATM as Банкомат
participant Anyway as Anyway (ATM front-end)
participant Proc as Процессинг (Lekton)
participant HSM as HSM/Auth
participant АБС_К as АБС card
participant АБС_М as АБС main
participant Notify as Сервис уведомлений
Клиент->>ATM: Карта + PIN
ATM->>Anyway: track2, pinBlock, terminalId
Anyway->>Proc: ISO 8583 Auth Request
Proc->>HSM: Верификация PIN
HSM-->>Proc: OK
Proc->>АБС_К: Проверка карты и баланса
АБС_К-->>Proc: cardStatus=ACTIVE, availableBalance, accountNo(40817)
Proc-->>Anyway: Авторизация ОК
Клиент->>ATM: «Пополнить вклад», ввод номера счёта\nвклада 423хх и суммы
ATM->>Anyway: txnType=DEPOSIT_TOPUP, srcCard, depositAccountNo(423хх), amount
Anyway->>Proc: Запрос пополнения:\npan, depositAccountNo, amount, terminalId
Proc->>АБС_К: Проверка достаточности средств\nна карточном счёте 40817
АБС_К-->>Proc: sufficiencyResult: OK, newAvailableBalance
Proc->>АБС_М: Команда пополнения вклада:\ntxnType=DEPOSIT_TOPUP, depositAccountNo(423хх),\namount, srcAccount(40817), authCode
АБС_М->>АБС_М: Проводка: Дт 40817 — Кт 423хх,\nувеличение тела вклада
АБС_М-->>Proc: txnId, depositBalance (новый), status=SUCCESS
Proc->>АБС_К: Списание суммы с карточного счёта\n(финальное урегулирование)
Proc-->>Anyway: txnId, newDepositBalance, status=SUCCESS
Anyway-->>ATM: Экран успеха
ATM-->>Клиент: Чек: списано X руб. с карты, зачислено на 423хх,\nновый остаток вклада
Proc->>Notify: Событие DEPOSIT_TOPUP, amount, depositBalance
Notify-->>Клиент: SMS/Push об операции
```
### Таблица информационных потоков — Процесс 3
| № | Направление | Данные | Цель |
|---|---|---|---|
| 3.1 | ATM → Anyway | track2, pinBlock, terminalId | Авторизация держателя карты |
| 3.2 | Процессинг → HSM | pinBlock, PVK | Верификация PIN |
| 3.3 | Процессинг → АБС card | cardNo, requestType=BALANCE | Проверка баланса источника |
| 3.4 | ATM → Anyway | txnType=DEPOSIT_TOPUP, srcCardNo, depositAccountNo(423хх), amount | Параметры пополнения |
| 3.5 | Процессинг → АБС card | cardNo, amount, action=CHECK_SUFFICIENCY | Проверка достаточности средств |
| 3.6 | Процессинг → АБС main | txnType=DEPOSIT_TOPUP, depositAccountNo(423хх), amount, srcAccount(40817), authCode, txnRef | Команда зачисления на вклад |
| 3.7 | АБС main → Процессинг | txnId, newDepositBalance, valueDate, status=SUCCESS | Подтверждение зачисления |
| 3.8 | Процессинг → АБС card | authCode, amount, action=DEBIT_FINAL | Окончательное списание с карты |
| 3.9 | ATM → Клиент | Чек: сумма списания с карты, новый остаток вклада, txnId | Подтверждение операции |
---
## Процесс 4. Пополнение вклада через банкомат картой чужого банка
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ATM as Банкомат
participant Anyway as Anyway (ATM front-end)
participant Proc as Процессинг (Lekton)
participant HSM as HSM/Auth
participant НСПК as РМ НСПК / Платёжная система\n(МИР/Visa/MC)
participant БанкЭ as Банк-эмитент (чужой)
participant АБС_М as АБС main
participant Notify as Сервис уведомлений
Клиент->>ATM: Карта чужого банка + PIN
ATM->>Anyway: track2, pinBlock, terminalId, BIN чужого банка
Anyway->>Proc: ISO 8583 Auth Request:\npan, track2, pinBlock, terminalId, txnType=CASH_IN
Note over Proc: BIN анализ: карта стороннего банка —\nзапрос уходит во внешнюю сеть
Proc->>HSM: Генерация сеансового ключа для\nшифрования PIN в межбанковском запросе
HSM-->>Proc: sessionKey (ZPK)
Proc->>НСПК: ISO 8583 Authorization Request (межбанк):\npan, pinBlock (перешифрован ZPK), amount,\nterminalId, acqBankId, txnType=PURCHASE/CASH
НСПК->>БанкЭ: Авторизационный запрос:\npan, amount, txnType
БанкЭ-->>НСПК: Авторизационный ответ:\nauthCode или rejectCode (недостаток средств, блок и т.д.)
НСПК-->>Proc: authCode, responseCode
Proc-->>Anyway: Авторизация ОК / отказ
Anyway-->>ATM: Разрешение операции или сообщение об ошибке
alt Авторизация прошла успешно
Клиент->>ATM: «Пополнить вклад», depositAccountNo(423хх), amount
ATM->>Anyway: txnType=DEPOSIT_TOPUP_INTERBANK, depositAccountNo, amount, authCode
Anyway->>Proc: Команда пополнения: depositAccountNo(423хх), amount, authCode, srcBankBIN
Proc->>АБС_М: Зачисление на вклад:\ndepositAccountNo(423хх), amount, authCode,\nsrcType=INTERBANK_CARD, interimAccount
АБС_М->>АБС_М: Проводка: Дт межбанковский транзитный счёт — Кт 423хх
АБС_М-->>Proc: txnId, newDepositBalance, status=SUCCESS
Proc-->>Anyway: SUCCESS
Anyway-->>ATM: Экран успеха
ATM-->>Клиент: Чек: списано с карты стороннего банка X руб.,\nзачислено на вклад 423хх, баланс вклада
Proc->>НСПК: Financial Advice (финансовое подтверждение):\nauthCode, amount, stan
Note over НСПК,БанкЭ: Клиринговый реестр формируется\nдля расчётов между банками
Notify->>Клиент: SMS/Push: «Вклад пополнен на X руб
end
```
### Вариант 4А — международная карта (Visa/MasterCard)
Аналогично, но вместо НСПК используется международная сеть. После санкций 2022 года для клиентов с картами Visa/MC иностранных банков — операция недоступна в большинстве российских банков. Актуально для карт МИР или UnionPay.
### Вариант 4Б — карта МИР стороннего банка
*(отображён на основной схеме — наиболее актуальный вариант)*
### Таблица информационных потоков — Процесс 4
| № | Направление | Данные | Цель |
|---|---|---|---|
| 4.1 | ATM → Anyway | track2, pinBlock, terminalId, BIN эмитента | Идентификация карты стороннего банка |
| 4.2 | Процессинг → HSM | pinBlock, ZPK | Перешифрование PIN для межбанковской передачи |
| 4.3 | Процессинг → НСПК | ISO 8583: pan, pinBlock(ZPK), amount, terminalId, acqBankId, txnType | Запрос авторизации в банке-эмитенте |
| 4.4 | НСПК → Банк-эмитент | pan, amount, txnType, acqBankId | Маршрутизация авторизации |
| 4.5 | Банк-эмитент → НСПК | authCode / rejectCode, availableBalance | Решение по авторизации |
| 4.6 | НСПК → Процессинг | authCode, responseCode | Результат межбанковской авторизации |
| 4.7 | Процессинг → АБС main | depositAccountNo(423хх), amount, authCode, srcType=INTERBANK_CARD, interimTransitAccount | Зачисление средств на вклад |
| 4.8 | АБС main → Процессинг | txnId, newDepositBalance, status=SUCCESS | Подтверждение зачисления |
| 4.9 | Процессинг → НСПК | Financial Advice: authCode, stan, amount | Финансовое подтверждение (клиринг) |
| 4.10 | НСПК → РМ НСПК (реестры) | Клиринговый реестр: список транзакций за день, суммы, банки | Межбанковские расчёты |
| 4.11 | ATM → Клиент | Чек: сумма, счёт вклада 423хх, баланс, txnId | Документальное подтверждение |
---
## Процесс 5. Закрытие вклада через ДБО с зачислением на карту
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ДБО as ДБО ФЛ (BSS)
participant АБС_М as АБС main
participant АБС_К as АБС card
participant Proc as Процессинг (Lekton)
participant Notify as Сервис уведомлений
Клиент->>ДБО: «Закрыть вклад», выбор вклада,\nуказание карты для зачисления
ДБО->>АБС_М: Запрос данных вклада:\ndepositId → depositBalance, accruedInterest,\nmaturityDate, penaltyConditions
АБС_М-->>ДБО: depositBalance, accruedInterest,\nearlyClosurePenalty (если досрочно),\nnetAmount (к выплате), status
ДБО-->>Клиент: Предварительный расчёт:\nосновной долг, начисленные проценты,\nштраф за досрочное закрытие, итого к выдаче
Клиент->>ДБО: Подтверждение закрытия (ПЭП / SMS-OTP)
ДБО->>АБС_М: Команда закрытия вклада:\ndepositId, targetAccount(40817), confirmCode
АБС_М->>АБС_М: Расчёт итоговых процентов (в т.ч. доначисление\nза последний период), применение штрафа\nза досрочное закрытие (если применимо)
АБС_М->>АБС_М: Проводки:\nДт 423хх (основной долг) — Кт 40817\nДт Счёт начисл. процентов — Кт 40817\nДт 40817 (штраф, если есть) — Кт Доходы банка\nЗакрытие счёта 423хх
АБС_М->>АБС_К: Запрос на зачисление суммы на карточный счёт:\ntargetAccount(40817), netAmount, txnRef
АБС_К-->>АБС_М: Подтверждение зачисления: txnId, newCardBalance
АБС_М-->>ДБО: depositStatus=CLOSED, netAmount,\ntxnId, newCardBalance
ДБО->>Notify: Событие: вклад закрыт, netAmount, cardAccount
Notify-->>Клиент: SMS/Push: «Вклад закрыт. Зачислено X руб. на карту *1234»
ДБО-->>Клиент: Экран: вклад закрыт, сумма зачисления,\nновый баланс карты
```
### Вариант 5А — закрытие в срок (maturityDate = сегодня)
Штраф за досрочное закрытие не применяется. Проценты начислены в полном объёме.
### Вариант 5Б — досрочное закрытие
Применяется пересчёт процентов по ставке «до востребования» или по условиям договора. Разница вычитается (штраф).
### Вариант 5В — закрытие с выводом через СБП на счёт в другом банке
```mermaid
sequenceDiagram
participant АБС_М as АБС main
participant ДБО as ДБО ФЛ (BSS)
participant СБП as Шлюз СБП
АБС_М-->>ДБО: netAmount подтверждён
ДБО->>СБП: P2P-запрос: phone (получатель),\nextBankId, netAmount, purpose=«Закрытие вклада»
СБП-->>ДБО: transferId, status=IN_PROGRESS
СБП-->>ДБО: Коллбэк: status=SUCCESS, sbpTxId
ДБО-->>АБС_М: Вклад закрыт, средства выведены через СБП
```
### Таблица информационных потоков — Процесс 5
| № | Направление | Данные | Цель |
|---|---|---|---|
| 5.1 | Клиент → ДБО | depositId, targetCardAccount(40817), confirmType | Инициирование закрытия |
| 5.2 | ДБО → АБС main | depositId, requestType=CLOSE_PREVIEW | Предварительный расчёт суммы к выплате |
| 5.3 | АБС main → ДБО | depositBalance, accruedInterest, earlyClosurePenalty, netAmount | Данные для согласования с клиентом |
| 5.4 | Клиент → ДБО | OTP-код подтверждения (SMS/Push) | Верификация намерения клиента |
| 5.5 | ДБО → АБС main | depositId, action=CLOSE, targetAccount(40817), confirmCode | Команда закрытия |
| 5.6 | АБС main → АБС main | Внутренние проводки: закрытие 423хх, начисление % | Бухгалтерское урегулирование |
| 5.7 | АБС main → АБС card | targetAccount(40817), netAmount, txnRef=depositClosure | Зачисление средств на карту |
| 5.8 | АБС card → АБС main | txnId, newCardBalance | Подтверждение зачисления |
| 5.9 | АБС main → ДБО | depositStatus=CLOSED, netAmount, txnId, newCardBalance | Итоговый статус операции |
| 5.10 | ДБО → Notify | clientPhone, netAmount, cardLastDigits, closureDate | Триггер уведомления |
| 5.11 | Notify → Клиент | SMS/Push: сумма зачисления, карта, дата | Информирование |
---
## Процесс 6. Частичное снятие со вклада через банкомат с зачислением на карту
### Схема взаимодействия
```mermaid
sequenceDiagram
actor Клиент
participant ATM as Банкомат
participant Anyway as Anyway (ATM front-end)
participant Proc as Процессинг (Lekton)
participant HSM as HSM/Auth
participant АБС_К as АБС card
participant АБС_М as АБС main
participant Notify as Сервис уведомлений
Клиент->>ATM: Карта + PIN
ATM->>Anyway: track2, pinBlock, terminalId
Anyway->>Proc: ISO 8583 Auth Request
Proc->>HSM: Верификация PIN
HSM-->>Proc: OK
Proc->>АБС_К: Проверка статуса карты
АБС_К-->>Proc: cardStatus=ACTIVE, accountNo(40817)
Proc-->>Anyway: Авторизация ОК
Anyway-->>ATM: Главное меню
Клиент->>ATM: «Операции с вкладом» → «Частичное снятие»,\nввод номера вклада 423хх и суммы снятия
ATM->>Anyway: txnType=DEPOSIT_PARTIAL_WITHDRAW,\ndepositAccountNo(423хх), withdrawAmount, targetCard(40817)
Anyway->>Proc: Запрос частичного снятия:\ndepositAccountNo, withdrawAmount, targetCardAccount
Proc->>АБС_М: Проверка условий частичного снятия:\ndepositAccountNo(423хх), withdrawAmount
АБС_М-->>Proc: isPartialAllowed: true/false,\nminRemainBalance (неснижаемый остаток),\ncurrentBalance, maxWithdrawAmount
alt Снятие разрешено условиями вклада
Proc->>АБС_М: Команда частичного снятия:\ndepositAccountNo(423хх), withdrawAmount,\ntargetAccount(40817), authCode
АБС_М->>АБС_М: Проверка: остаток после снятия ≥ minRemainBalance\nПересчёт процентов (если условия меняются)\nПроводка: Дт 423хх — Кт 40817
АБС_М->>АБС_К: Зачисление на карточный счёт:\ntargetAccount(40817), withdrawAmount, txnRef
АБС_К-->>АБС_М: Подтверждение: txnId, newCardBalance
АБС_М-->>Proc: txnId, newDepositBalance, newCardBalance, status=SUCCESS
Proc-->>Anyway: SUCCESS
Anyway-->>ATM: Экран успеха
ATM-->>Клиент: Чек: снято X руб. с вклада 423хх,\nзачислено на карту *1234,\nостаток вклада после операции
Proc->>Notify: DEPOSIT_PARTIAL_WITHDRAW: withdrawAmount,\nnewDepositBalance, cardLastDigits
Notify-->>Клиент: SMS/Push: «Снято X руб. со вклада. Новый остаток Y руб
else Снятие запрещено (неснижаемый остаток, нет частичного снятия)
Proc-->>Anyway: ERROR: WITHDRAWAL_NOT_ALLOWED, reason
Anyway-->>ATM: Экран отказа с причиной
ATM-->>Клиент: «Операция недоступна. [Причина]»
end
```
### Вариант 6А — вклад с возможностью частичного снятия
*(описан выше — стандартный вклад типа «Накопительный» с неснижаемым остатком)*
### Вариант 6Б — выдача наличными через банкомат (если вклад позволяет наличные выплаты)
```mermaid
sequenceDiagram
participant ATM as Банкомат
participant Anyway as Anyway (ATM front-end)
participant Proc as Процессинг (Lekton)
participant АБС_М as АБС main
ATM->>Anyway: txnType=DEPOSIT_CASH_WITHDRAW,\ndepositAccountNo(423хх), amount
Anyway->>Proc: Запрос наличной выдачи с вклада
Proc->>АБС_М: Списание с 423хх, проводка на счёт кассы ATM
АБС_М-->>Proc: txnId, newDepositBalance
Proc-->>Anyway: Команда диспенсеру выдать купюры
Anyway-->>ATM: Выдача наличных
Note over ATM: Диспенсер выдаёт купюры клиенту
```
### Таблица информационных потоков — Процесс 6
| № | Направление | Данные | Цель |
|---|---|---|---|
| 6.1 | ATM → Anyway | track2, pinBlock, terminalId | Авторизация держателя карты |
| 6.2 | Процессинг → HSM | pinBlock, PVK | Верификация PIN |
| 6.3 | Процессинг → АБС card | cardNo, requestType=STATUS | Проверка статуса карты |
| 6.4 | ATM → Anyway | txnType=DEPOSIT_PARTIAL_WITHDRAW, depositAccountNo(423хх), withdrawAmount, targetCardAccount(40817) | Параметры частичного снятия |
| 6.5 | Процессинг → АБС main | depositAccountNo(423хх), requestType=CHECK_PARTIAL_WITHDRAW, withdrawAmount | Проверка допустимости операции |
| 6.6 | АБС main → Процессинг | isPartialAllowed, minRemainBalance, currentBalance, maxWithdrawAmount | Условия частичного снятия по договору |
| 6.7 | Процессинг → АБС main | txnType=DEPOSIT_PARTIAL_WITHDRAW, depositAccountNo(423хх), withdrawAmount, targetAccount(40817), authCode | Команда списания с вклада |
| 6.8 | АБС main → АБС card | targetAccount(40817), withdrawAmount, txnRef | Зачисление на карту |
| 6.9 | АБС card → АБС main | txnId, newCardBalance | Подтверждение зачисления |
| 6.10 | АБС main → Процессинг | txnId, newDepositBalance, newCardBalance, status=SUCCESS | Итоговый статус операции |
| 6.11 | ATM → Клиент | Чек: снятая сумма, остаток вклада, новый баланс карты | Документальное подтверждение |
| 6.12 | Процессинг → Notify | withdrawAmount, newDepositBalance, cardLastDigits | Триггер уведомления |
---
## Сводная таблица систем и их роли в процессах
| Система | П1 (откр. ДБО) | П2 (откр. ATM) | П3 (попол. ATM своя карта) | П4 (попол. ATM чужая карта) | П5 (закр. ДБО) | П6 (снят. ATM) |
|---|:---:|:---:|:---:|:---:|:---:|:---:|
| **ДБО ФЛ (BSS)** | ✅ | — | — | — | ✅ | — |
| **АБС main** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| **АБС card** | ✅ | ✅ | ✅ | — | ✅ | ✅ |
| **Процессинг (Lekton)** | — | ✅ | ✅ | ✅ | — | ✅ |
| **Anyway** | — | ✅ | ✅ | ✅ | — | ✅ |
| **HSM/Auth** | — | ✅ | ✅ | ✅ | — | ✅ |
| **РМ НСПК** | — | — | — | ✅ | — | — |
| **Сервис уведомлений** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| **AML/Scoring** | ✅ | — | — | — | — | — |
| **Шлюз СБП** | опц. | — | — | — | опц. | — |
> **Примечание.** В процессах с банкоматом система **Anyway** выступает как front-end процессор (управляет сценариями ATM и диспенсером), а **Процессинг (Lekton)** — как авторизационный движок, выполняющий маршрутизацию ISO 8583 запросов и взаимодействие с банками-корреспондентами. Оба компонента вместе образуют ATM-канал обслуживания.