This commit is contained in:
Акиньшин Дмитрий Сергеевич 2025-11-28 08:53:01 +03:00
commit 3cc32969fb
13 changed files with 393 additions and 0 deletions

68
docs/api/openapi.yaml Normal file
View File

@ -0,0 +1,68 @@
openapi: 3.0.1
info:
title: mspa-preapprove-applications
version: 0.1.0
paths: {}
components:
schemas:
CreatePreapproveRequest:
type: object
description: Запрос на создание предодобренного предложения
required:
- offerId
- clientId
- startAt
- endAt
- productCode
- attributes
properties:
offerId:
type: integer
format: int64
description: Внутренний идентификатор в CM Ocean
example: 12345678
clientId:
type: integer
format: int64
description: Идентификатор клиента в РБО.
example: 266526931
startAt:
type: string
format: date-time
description: Дата начала действия предложения, ISO 8601.
example: 2026-01-01T13:00:00Z
endAt:
type: string
format: date-time
description: Дата окончания действия предложения, ISO 8601.
example: 2026-01-01T13:00:00Z
productCode:
type: string
description: Код продукта.
example: CASH_LOAN
attributes:
type: object
description: Параметры продукта в рамках предодобренного предложения
additionalProperties:
type: object
CreatePreapproveResponse:
description: Ответ на запрос создания предодобренного предложения
type: object
properties:
id:
type: string
format: uuid
description: Идентификатор предодобренного предложения
example: 6e2a330e-54cb-4b5d-96da-12413fa4dbf3
offerId:
type: integer
format: int64
description: Внутренний идентификатор в CM Ocean
example: 12345678
createAt:
type: string
format: date-time
description: Дата создания предодобренного предложения, ISO8601 в UTC, до секунд.
example: 2026-01-01T13:00:00Z

View File

@ -0,0 +1 @@
Код события|Описание|Тип события|Атрибуты
1 Код события Описание Тип события Атрибуты

View File

@ -0,0 +1,5 @@
Объем пакета|todo|todo
Объем данных в пакете|todo|todo
Время обработки|todo|todo
Число параллельных вызовов|todo|todo
Пакетов в минуту|todo|todo
1 Объем пакета todo todo
2 Объем данных в пакете todo todo
3 Время обработки todo todo
4 Число параллельных вызовов todo todo
5 Пакетов в минуту todo todo

View File

@ -0,0 +1,4 @@
Время обработки одного вызова|todo|todo
Объем данных за вызов|todo|todo
Число параллельных вызовов|todo|todo
Обращений в минуту|todo|todo
1 Время обработки одного вызова todo todo
2 Объем данных за вызов todo todo
3 Число параллельных вызовов todo todo
4 Обращений в минуту todo todo

6
docs/csv/links.csv Normal file
View File

@ -0,0 +1,6 @@
КАР-1|https://wiki.atb.su/pages/viewpage.action?pageId=116177482
КАР-2|https://wiki.atb.su/pages/viewpage.action?pageId=94727578
BRD КН|https://wiki.atb.su/pages/viewpage.action?pageId=126073766
БТ|https://wiki.atb.su/pages/viewpage.action?pageId=116181118
Архитектура|https://wiki.atb.su/pages/viewpage.action?pageId=116181120
SA|https://wiki.atb.su/display/aCRM/msop-preapprove-applications
1 КАР-1 https://wiki.atb.su/pages/viewpage.action?pageId=116177482
2 КАР-2 https://wiki.atb.su/pages/viewpage.action?pageId=94727578
3 BRD КН https://wiki.atb.su/pages/viewpage.action?pageId=126073766
4 БТ https://wiki.atb.su/pages/viewpage.action?pageId=116181118
5 Архитектура https://wiki.atb.su/pages/viewpage.action?pageId=116181120
6 SA https://wiki.atb.su/display/aCRM/msop-preapprove-applications

3
docs/csv/terms.csv Normal file
View File

@ -0,0 +1,3 @@
Предобренное предложение|предварительно рассчитанные параметры продукта, которые могут быть изменены Банком на этапе подачи клиентом заявки на продукт
Campaign Management Ocean|система маркетинговой автоматизации
СПР|система принятия решений
1 Предобренное предложение предварительно рассчитанные параметры продукта, которые могут быть изменены Банком на этапе подачи клиентом заявки на продукт
2 Campaign Management Ocean система маркетинговой автоматизации
3 СПР система принятия решений

26
docs/diagrams/db.uml Normal file
View File

@ -0,0 +1,26 @@
@startuml
left to right direction
entity "**preapprove**\nПредодобренные предложения" as preapp {
* **id** - uuid - Идентификатор предодобренного предложения
--
**client_id** - bigint - Идентификатор клиента в РБО
**offer_id** - bigint - Идентификатор предложения в CM Ocean
..
**product_code** - varchat(64) - Код продукта
**status** - varchar(64) - Статус предложения
**created_at** - timestamptz - Дата создания записи
**updated_at** - timestamptz - Дата обновления записи
**start_at** - timestamptz - Дата начала действия предложения
**end_at** - timestamptz - Дата завершения действия предложения
**attributes** - jsonb - Параметры продукта
}
note left of preapp::status
* ACTIVE
* INACTIVE
* LOCKED
* USED
end note
@enduml

23
docs/diagrams/flow.uml Normal file
View File

@ -0,0 +1,23 @@
@startuml
left to right direction
state "ACTIVE" as active
state "INACTIVE" as inactive
state "LOCKED" as lock
state "USED" as used
active: Не зависимо от дат\nдействия предложения,\nтак как нужна доп проверка
inactive: Срок истёк, не использовано\nДеактивировано
lock: Изменение не возможно\nпредложение в работе
used: Предложение использовано
[*] --> active: 1.Cоздать
active -> active: 2.Изменить\n3.Получить
active --> inactive: 4.Деактивировать
active --> lock: 5.Заблокировать
lock --> active: 6.Снять блокировку
lock --> used: 7.Использовать
@enduml

View File

@ -0,0 +1,179 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.0.6 Chrome/138.0.7204.100 Electron/37.2.3 Safari/537.36" version="28.0.6">
<diagram name="Страница 2" id="l3s7V1ekkV9CKOdafO0w">
<mxGraphModel dx="4074" dy="2403" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-1" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Микросервисная платформа" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;labelBorderColor=none;fontFamily=Helvetica;fontSize=12;fontColor=#333333;fillColor=#f5f5f5;align=left;verticalAlign=top;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="360" y="640" width="1150" height="250" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-2" value="" style="group;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" connectable="0" parent="1">
<mxGeometry x="480" y="960" width="190" height="80" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-3" value="&lt;p style=&quot;margin: 0px ; margin-top: 6px ; text-align: center&quot;&gt;&lt;b&gt;CM OCEAN&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;div style=&quot;text-align: center&quot;&gt;&lt;br&gt;&lt;/div&gt;" style="align=left;overflow=fill;html=1;dropTarget=0;perimeterSpacing=0;fillStyle=solid;fillColor=#fff2cc;strokeColor=#d6b656;rounded=1;strokeWidth=4;autosize=0;movable=1;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-2">
<mxGeometry width="190" height="80" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-4" value="" style="shape=component;jettyWidth=8;jettyHeight=4;strokeWidth=2;aspect=fixed;strokeColor=#d6b656;connectable=0;allowArrows=0;resizable=0;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-3">
<mxGeometry x="1" width="17" height="17" relative="1" as="geometry">
<mxPoint x="-24" y="5" as="offset" />
</mxGeometry>
</mxCell>
<UserObject label="" link="https://task.atb.su/browse/CIS-674" id="VsXRfV-EVmhv0Cbpb6C7-5">
<mxCell style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.archive;cloneable=0;rotatable=0;connectable=0;allowArrows=0;fillColor=#666666;fontColor=#0000EE;strokeColor=none;portConstraintRotation=0;resizable=0;fontStyle=4;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-2">
<mxGeometry x="5.32" y="6.5" width="15" height="17" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-6" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="1160" y="680" width="300" height="180" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-7" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;labelBorderColor=none;fontFamily=Helvetica;fontSize=12;align=left;verticalAlign=top;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-6">
<mxGeometry width="300" height="180" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-8" value="Продуктовый конвейер&lt;br&gt;или иной потребитель&lt;br&gt;предодобренный&lt;br&gt;предложений" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-6">
<mxGeometry x="40" y="15.592500000000015" width="210" height="141.75" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-9" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; МС Общепродуктовые сервисы ФЛ" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;labelBorderColor=none;fontFamily=Helvetica;fontSize=12;align=left;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="400" y="680" width="640" height="180" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-10" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="810" y="740" width="190" height="100" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-11" value="&lt;p style=&quot;margin: 0px ; margin-top: 6px ; text-align: center&quot;&gt;&lt;b&gt;mspa-preapprove-&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-top: 6px ; text-align: center&quot;&gt;&lt;b&gt;ap&lt;/b&gt;&lt;b&gt;plications&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;div style=&quot;text-align: center&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(23 , 43 , 77) ; font-family: , &amp;#34;blinkmacsystemfont&amp;#34; , &amp;#34;segoe ui&amp;#34; , &amp;#34;roboto&amp;#34; , &amp;#34;oxygen&amp;#34; , &amp;#34;ubuntu&amp;#34; , &amp;#34;fira sans&amp;#34; , &amp;#34;droid sans&amp;#34; , &amp;#34;helvetica neue&amp;#34; , sans-serif ; font-size: 14px ; text-align: left ; background-color: rgb(255 , 255 , 255)&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;" style="align=left;overflow=fill;html=1;dropTarget=0;perimeterSpacing=0;fillStyle=solid;rounded=1;strokeWidth=4;autosize=0;movable=1;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-10">
<mxGeometry width="190" height="100" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-12" value="" style="shape=component;jettyWidth=8;jettyHeight=4;strokeWidth=2;aspect=fixed;connectable=0;allowArrows=0;resizable=0;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-11">
<mxGeometry x="1" width="17" height="17" relative="1" as="geometry">
<mxPoint x="-24" y="5" as="offset" />
</mxGeometry>
</mxCell>
<UserObject label="" link="https://task.atb.su/browse/CIS-129" id="VsXRfV-EVmhv0Cbpb6C7-13">
<mxCell style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.archive;cloneable=0;rotatable=0;connectable=0;allowArrows=0;fillColor=#666666;fontColor=#0000EE;strokeColor=none;portConstraintRotation=0;resizable=0;fontStyle=4;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-10">
<mxGeometry x="6.909090909090909" y="6.25" width="15" height="17" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-14" value="P" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=2.716616543856503;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-10">
<mxGeometry x="151" y="62.5" width="20" height="25" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-15" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="480" y="740" width="190" height="100" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-16" value="&lt;p style=&quot;margin: 0px ; margin-top: 6px ; text-align: center&quot;&gt;&lt;b&gt;mspa-iapi-aggregator&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;hr&gt;&lt;div style=&quot;text-align: center&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(23 , 43 , 77) ; font-family: , &amp;#34;blinkmacsystemfont&amp;#34; , &amp;#34;segoe ui&amp;#34; , &amp;#34;roboto&amp;#34; , &amp;#34;oxygen&amp;#34; , &amp;#34;ubuntu&amp;#34; , &amp;#34;fira sans&amp;#34; , &amp;#34;droid sans&amp;#34; , &amp;#34;helvetica neue&amp;#34; , sans-serif ; font-size: 14px ; text-align: left ; background-color: rgb(255 , 255 , 255)&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;" style="align=left;overflow=fill;html=1;dropTarget=0;perimeterSpacing=0;fillStyle=solid;rounded=1;strokeWidth=4;autosize=0;movable=1;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-15">
<mxGeometry width="190" height="100" as="geometry" />
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-17" value="" style="shape=component;jettyWidth=8;jettyHeight=4;strokeWidth=2;aspect=fixed;connectable=0;allowArrows=0;resizable=0;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-16">
<mxGeometry x="1" width="17" height="17" relative="1" as="geometry">
<mxPoint x="-24" y="5" as="offset" />
</mxGeometry>
</mxCell>
<UserObject label="" link="https://task.atb.su/browse/CIS-129" id="VsXRfV-EVmhv0Cbpb6C7-18">
<mxCell style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.archive;cloneable=0;rotatable=0;connectable=0;allowArrows=0;fillColor=#666666;fontColor=#0000EE;strokeColor=none;portConstraintRotation=0;resizable=0;fontStyle=4;" vertex="1" parent="VsXRfV-EVmhv0Cbpb6C7-15">
<mxGeometry x="6.909090909090909" y="6.25" width="15" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" link="https://task.atb.su/browse/CIS-435" id="VsXRfV-EVmhv0Cbpb6C7-19">
<mxCell style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.archive;cloneable=0;rotatable=0;connectable=0;allowArrows=0;fillColor=#666666;fontColor=#0000EE;strokeColor=none;portConstraintRotation=0;resizable=0;fontStyle=4;" vertex="1" parent="1">
<mxGeometry x="409.9990909090909" y="690" width="15" height="17" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-7" target="VsXRfV-EVmhv0Cbpb6C7-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="820" y="809.9999999999999" as="sourcePoint" />
<mxPoint x="680" y="809.9999999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="1160" y="720" />
<mxPoint x="1070" y="720" />
<mxPoint x="1070" y="765" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-21" value="&amp;nbsp;4&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-20">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint x="40" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-7" target="VsXRfV-EVmhv0Cbpb6C7-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1170" y="729.9999999999999" as="sourcePoint" />
<mxPoint x="1010" y="769.9999999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-23" value="&amp;nbsp;5&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-22">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint x="26" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-16" target="VsXRfV-EVmhv0Cbpb6C7-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="537.5" y="940" as="sourcePoint" />
<mxPoint x="537.5" y="830" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-25" value="&amp;nbsp;1b&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-24">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-16" target="VsXRfV-EVmhv0Cbpb6C7-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="690" y="780" as="sourcePoint" />
<mxPoint x="830" y="780" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-27" value="&amp;nbsp;2b&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-26">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-11" target="VsXRfV-EVmhv0Cbpb6C7-16">
<mxGeometry relative="1" as="geometry">
<mxPoint x="680" y="800" as="sourcePoint" />
<mxPoint x="820" y="800" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-29" value="&amp;nbsp;3a&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-28">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint x="-21" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-16" target="VsXRfV-EVmhv0Cbpb6C7-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="585" y="940" as="sourcePoint" />
<mxPoint x="585" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-31" value="&amp;nbsp;3b&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-30">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint y="29" as="offset" />
</mxGeometry>
</mxCell>
<UserObject label="" link="https://task.atb.su/browse/CIS-102" id="VsXRfV-EVmhv0Cbpb6C7-32">
<mxCell style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.archive;cloneable=0;rotatable=0;connectable=0;allowArrows=0;fillColor=#666666;fontColor=#0000EE;strokeColor=none;portConstraintRotation=0;resizable=0;fontStyle=4;" vertex="1" parent="1">
<mxGeometry x="369.9990909090909" y="650" width="15" height="17" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-3" target="VsXRfV-EVmhv0Cbpb6C7-16">
<mxGeometry relative="1" as="geometry">
<mxPoint x="537.5" y="940" as="sourcePoint" />
<mxPoint x="537.5" y="840" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-34" value="&amp;nbsp;2a&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-33">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;dashed=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="VsXRfV-EVmhv0Cbpb6C7-3" target="VsXRfV-EVmhv0Cbpb6C7-16">
<mxGeometry relative="1" as="geometry">
<mxPoint x="680" y="780" as="sourcePoint" />
<mxPoint x="820" y="780" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VsXRfV-EVmhv0Cbpb6C7-36" value="&amp;nbsp;1a&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" vertex="1" connectable="0" parent="VsXRfV-EVmhv0Cbpb6C7-35">
<mxGeometry x="-0.1523" relative="1" as="geometry">
<mxPoint y="11" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,34 @@
=== Создание предодобренного предложения
Краткое описание - todo
https://wiki.atb.su/pages/viewpage.action?pageId=130230435[Полное описание]
==== Функциональные требования
todo
==== Производительность и нагрузка
.Обработка одиночной операции
[format="csv",separator="|", cols="3,1,1", options="header"]
|===
Параметр|Среднее|Максимальное
include::../../csv/1-CreatePreapprove/perfomance_single.csv[]
|===
.Обработка пакетной операции
[format="csv",separator="|", cols="3,1,1", options="header"]
|===
Параметр|Среднее|Максимальное
include::../../csv/1-CreatePreapprove/perfomance_batch.csv[]
|===
==== Aудит
.События аудита
[format="csv",separator="|", options="header"]
|===
include::../../csv/1-CreatePreapprove/audit.csv[]
|===
==== Требования к безопасности
Аутентификация/Шифрование - todo
Чувствительный данныее - todo

28
docs/main.adoc Normal file
View File

@ -0,0 +1,28 @@
//краткий гайд по работе с AsciiDoc - https://powerman.name/doc/asciidoc
= mspa-preapprove-applications
Задачи сервиса:
* Реализовать единое место хранения, управления ЖЦ и предоставления потребителям Предодобренных предложений.
* На первом этапе предполагается работы с кредитными продуктами (КН) для клиентов розничного сектора, ввод в эксплуатацию ожидается в 3Q26.
* Требуется максимально обобщенная реализация для возможности дальнейшего расширения на проспектов, корпоративный сегмент, иные банковские и небанковские продукты.
* Собственный UI не предполагается. В дальнейшем возможно появление ЭФ для функций методов, используемых Ocean (создание, изменение параметров, деактивация).
== Ссылки
.Артефакты
[format="csv",separator="|", cols="1,4"]
|===
include::csv/links.csv[]
|===
== Термины и определения
.Глоссарий
[format="csv",separator="|", cols="1,3", options="header"]
|===
Термин|Определение
include::csv/terms.csv[]
|===
== Функции
include::functions/1-CreatePreapprove/definition.adoc[]

10
docs/test.adoc Normal file
View File

@ -0,0 +1,10 @@
= Проверка возможностей
== Импорт диаграми
[plantuml, format="png", width="100px",alt="my diagram"]
--
Alice -> Bob : ping
Bob -> Alice : pong
--

6
readme.adoc Normal file
View File

@ -0,0 +1,6 @@
= Тест
include::docs/test.adoc[]
include::docs/main.adoc[]