Add tp2sys_q.md: detailed IT system interaction schemes for deposit operations

Resolves bpmbpm/doc#2. Covers all 6 deposit processes with Mermaid UML
sequence diagrams and information flow tables:
1. Open deposit via digital banking (ДБО ФЛ)
2. Open deposit via ATM
3. Top up deposit via ATM with own bank card
4. Top up deposit via ATM with another bank card (via НСПК/МИР)
5. Close deposit via digital banking with card credit
6. Partial withdrawal from deposit via ATM to card

Includes additional IT systems: HSM/Auth, AML/Scoring, Notify service.
Multiple implementation variants covered where applicable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
konard 2026-03-19 21:33:22 +00:00
parent 395b3d021d
commit b47d1138ab

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-канал обслуживания.