@startuml product-management-pilot-brif
title Подача Заявки в кредитную организацию на ипотечный продукт с финансовой площадки
autonumber
actor customer as "Пользователь"
participant "Финансовая\nплощадка (СПД)" as TTP_MP
box "Кредитная\nорганизация (ПД)"
participant "Сервер\nресурсов" as PDP
participant "Сервер\nавторизации" as AS_
end box
participant "Цифровой\nпрофиль" as ESIA
' Вопросы ИБ при доступе к ресурсам:
' Криптопро для транспорта 2-х сторонний ssl (удостоверяющий центр АФТ)
' OpenID connect fapi (СТО БР ФАПИ.СЕК, удостоверяющий центр АФТ jwt)
' Доступ к ресурсов по токену доступа
' Тип доступа - Client Credential
' Механизм аутентификации - private_key_jwt
' Подпись moex всех сообщений - отделяемая jws (удостоверяющий центр АФТ)
== Выбор Продукта Пользователем (вне рамках взаимодействия по OpenAPI) ==
customer <--> TTP_MP: Выбор Продукта
TTP_MP--
customer <--> ESIA: Аутентификация в ЕСИА
customer <--> ESIA: Подписывает согласия ПЭП ЕСИА\n(на обработку ПД и запрос в БКИ)
TTP_MP <-- ESIA: Получает данные из Цифрового профиля
customer <--> TTP_MP: Дозаполняет анкету данными,\nкоторые не были получены из ЦП
== Получение токена доступа ==
TTP_MP <-> AS_: Установление TLS MA
TTP_MP -> AS_: Инициация типа доступа Client Credentials
return access-token
== Создание Заявки на предложение по продукту==
TTP_MP <-> PDP: Установление TLS MA
TTP_MP -> PDP++: Заявка на предложение по продукту, содержит:\n - Идентификатор Продукта\n - Запрашиваемые условия на приобретение Продукта;\n - Анкета пользователя;\n - Исходные данные Пользователя, полученные из цифрового профиля;\n - Согласие с ПЭП ЕСИА(Хэш+PDF)\n<font color=blue>post /product-applications (ProductApplication)
return Идентификатор Заявки + статус\n<font color=blue>productApplicationId, productApplicationStatus
PDP -> PDP++: Обработка Заявки\n+ Обращкние в БКИ
== Получение статуса обработки Заявки на предложение по продукту==
TTP_MP <-> PDP: Установление TLS MA
alt Пуш от банка
PDP -> TTP_MP++: Нотификация об изменении статуса (Event)
PDP--
TTP_MP -> PDP++: Получить зтатус Заявки на предложение по продукту \n<font color=blue>/product-applications/{productApplicationId}/product-application-details
TTP_MP--
else Опрос, проверка статуса
TTP_MP -> PDP: Получить зтатус Заявки на предложение по продукту \n<font color=blue>get /product-applications/{productApplicationId}/product-application-details
end
PDP -> TTP_MP: Идентификатор Заявки + статус\n<font color=blue>productApplicationId, productApplicationStatus
PDP--
== Получение Предложения по продуктуили Отказ ==
alt Заявка отклонена
TTP_MP-->customer: Заявка отклонена.
customer-->o]: Выяснение причин (дальнейшее взаимодействие здесь не рассматривается)
TTP_MP--
else Заявка одобрена
TTP_MP <-> PDP: Установление TLS MA
TTP_MP -> PDP++: Получить список Прредложений по продукту по идентификатору заявки \n<font color=blue>/product-applications/{productApplicationId}/product-offers
return Список Предложений по продукту \n<font color=blue>ProductOffer[productOfferId, ApprovedConditions или LoanInterest]
end
TTP_MP-->customer: Предложения по продукту\nнаправлены пользователю
TTP_MP--
== Опциональные методы (Используются по договоренности участников) ==
opt Получить информацию о Предложении по продукту по его идентификатору
TTP_MP <-> PDP: Установление TLS MA
TTP_MP -> PDP++: <font color=blue>get /product-offers/{productOfferId}
return Предложение по продукту \n<font color=blue>ProductOffer[offerId, status]
end
opt Дополнительная передача подписанных документов
TTP_MP -> PDP++: Передать подписанный документ\n<font color=blue>post /signed-documents(messageId, SignedDocument)
return идентификатор документа, статус\n<font color=blue>signedDocumentId, signedDocumentStatus
TTP_MP--
end opt
@enduml