add new scheme

This commit is contained in:
KatykhinAA
2024-05-24 12:17:32 +03:00
parent 072ced2815
commit e084f73d6b
37 changed files with 1148 additions and 1134 deletions

16
.idea/.gitignore generated vendored
View File

@@ -1,8 +1,8 @@
# Default ignored files # Default ignored files
/shelf/ /shelf/
/workspace.xml /workspace.xml
# Editor-based HTTP Client requests # Editor-based HTTP Client requests
/httpRequests/ /httpRequests/
# Datasource local storage ignored files # Datasource local storage ignored files
/dataSources/ /dataSources/
/dataSources.local.xml /dataSources.local.xml

14
.idea/modules.xml generated
View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/.idea/plantUML.iml" filepath="$PROJECT_DIR$/.idea/plantUML.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/plantUML.iml" filepath="$PROJECT_DIR$/.idea/plantUML.iml" />
</modules> </modules>
</component> </component>
</project> </project>

36
.idea/php.xml generated
View File

@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="MessDetectorOptionsConfiguration"> <component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PHPCSFixerOptionsConfiguration"> <component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PHPCodeSnifferOptionsConfiguration"> <component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" /> <option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PhpStanOptionsConfiguration"> <component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PsalmOptionsConfiguration"> <component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
</project> </project>

14
.idea/plantUML.iml generated
View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4"> <module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

10
.idea/vcs.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" /> <mapping directory="$PROJECT_DIR$" vcs="Git" />
</component> </component>
</project> </project>

View File

@@ -1,46 +1,46 @@
@startuml @startuml
mainframe "FRQ-1 Заказ.ПолучениеДанных." mainframe "FRQ-1 Заказ.ПолучениеДанных."
Actor USER Actor USER
participant SITE participant SITE
participant WTIS participant WTIS
queue Названиеопика_1 queue Названиеопика_1
queue Названиеопика_2 queue Названиеопика_2
participant OMS participant OMS
participant Officer participant Officer
autonumber 1 autonumber 1
USER -> USER: Создает заказ на сайте USER -> USER: Создает заказ на сайте
USER -> SITE: Сущность "Заказ"\nс набором атрибутов USER -> SITE: Сущность "Заказ"\nс набором атрибутов
SITE -> WTIS: Сущность "Заказ"\nс набором атрибутов SITE -> WTIS: Сущность "Заказ"\nс набором атрибутов
WTIS -> WTIS: Проверка условий\nи отбор заказов WTIS -> WTIS: Проверка условий\nи отбор заказов
WTIS -> Названиеопика_1: Записывает Сущность\n"Заказ" с набором\nатрибутов WTIS -> Названиеопика_1: Записывает Сущность\n"Заказ" с набором\nатрибутов
OMS -> Названиеопика_1: Читает Сущность\n"Заказ" с набором\nатрибутов OMS -> Названиеопика_1: Читает Сущность\n"Заказ" с набором\nатрибутов
OMS -> OMS: Валидация КА OMS -> OMS: Валидация КА
autonumber 7.1 autonumber 7.1
alt валидация пройдена alt валидация пройдена
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 8 autonumber 8
OMS <-> Officer: Получение лимитов офиса OMS <-> Officer: Получение лимитов офиса
OMS -> OMS: Валидация способа получения OMS -> OMS: Валидация способа получения
alt валидация пройдена alt валидация пройдена
autonumber 9.1 autonumber 9.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 10 autonumber 10
OMS -> OMS: Валидация способа оплаты OMS -> OMS: Валидация способа оплаты
alt валидация пройдена alt валидация пройдена
autonumber 10.1 autonumber 10.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 11 autonumber 11
OMS -> OMS: Данные о заказе\nполучены и провалидированы OMS -> OMS: Данные о заказе\nполучены и провалидированы
OMS -> OMS: Переход к бизнес-проверкам OMS -> OMS: Переход к бизнес-проверкам
@enduml @enduml

View File

@@ -1,55 +1,55 @@
@startuml @startuml
mainframe "FRQ-2 Заказ.БизнесПроверки." mainframe "FRQ-2 Заказ.БизнесПроверки."
queue Названиеопика_2 queue Названиеопика_2
database ClickHouse database ClickHouse
participant OMS participant OMS
participant DRUZ participant DRUZ
participant PDM participant PDM
autonumber 1 autonumber 1
OMS -> PDM: Запрашивает\nGUID производителя товара OMS -> PDM: Запрашивает\nGUID производителя товара
OMS -> OMS: Проверка на возможность\nпродажи товара OMS -> OMS: Проверка на возможность\nпродажи товара
alt валидация пройдена alt валидация пройдена
autonumber 2.1 autonumber 2.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> ClickHouse: Логирование не\nпройденных проверок OMS -> ClickHouse: Логирование не\nпройденных проверок
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 3 autonumber 3
OMS -> DRUZ: Запрашивает \nпризнак "Наличие" OMS -> DRUZ: Запрашивает \nпризнак "Наличие"
OMS -> OMS: Проверка что товары\nиз заказа в наличии OMS -> OMS: Проверка что товары\nиз заказа в наличии
alt валидация пройдена alt валидация пройдена
autonumber 4.1 autonumber 4.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> ClickHouse: Логирование не\nпройденных проверок OMS -> ClickHouse: Логирование не\nпройденных проверок
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 5 autonumber 5
OMS -> PDM: Запрашивает ВГХ товара OMS -> PDM: Запрашивает ВГХ товара
OMS -> OMS: Расчитывает объем и\nобщий вес заказа OMS -> OMS: Расчитывает объем и\nобщий вес заказа
OMS -> OMS: Проверка на лимиты\nВГХ ТТ OMS -> OMS: Проверка на лимиты\nВГХ ТТ
alt валидация пройдена alt валидация пройдена
autonumber 7.1 autonumber 7.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> ClickHouse: Логирование не\nпройденных проверок OMS -> ClickHouse: Логирование не\nпройденных проверок
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
autonumber 8 autonumber 8
OMS -> OMS: Проверка способа\nоплаты на ТТ OMS -> OMS: Проверка способа\nоплаты на ТТ
alt валидация пройдена alt валидация пройдена
autonumber 8.1 autonumber 8.1
OMS -> OMS: Продолжение сценария OMS -> OMS: Продолжение сценария
else валидация не пройдена else валидация не пройдена
OMS -> ClickHouse: Логирование не\nпройденных проверок OMS -> ClickHouse: Логирование не\nпройденных проверок
OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов OMS -> Названиеопика_2: Сущность "Заказ"\nс набором атрибутов
end end
@enduml @enduml

View File

@@ -1,39 +1,39 @@
@startuml @startuml
scale 1500x1500 scale 1500x1500
mainframe Автооформление заказов mainframe Автооформление заказов
actor user as user actor user as user
participant SITE participant SITE
queue kafka queue kafka
participant Gateway participant Gateway
participant workflow participant workflow
participant wtis participant wtis
user -> SITE: Оформляет заказ user -> SITE: Оформляет заказ
SITE -> SITE: Сохраняет заказ в БД SITE -> SITE: Сохраняет заказ в БД
SITE --> kafka: Пишет заказ в kafka SITE --> kafka: Пишет заказ в kafka
Gateway --> kafka: Забирает заказ Gateway --> kafka: Забирает заказ
Gateway -> workflow: CreateB2CAO Gateway -> workflow: CreateB2CAO
workflow -> workflow: Проверяет условия АО workflow -> workflow: Проверяет условия АО
workflow -> workflow: Проверяет тип доставки workflow -> workflow: Проверяет тип доставки
alt Тип доставки "Курьером" alt Тип доставки "Курьером"
workflow -> workflow: Устанавливает таймер на N минут workflow -> workflow: Устанавливает таймер на N минут
alt Поступила оплата в заказ до истечения срока таймера alt Поступила оплата в заказ до истечения срока таймера
workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа
else Не поступила оплата в заказ до истечения срока таймера else Не поступила оплата в заказ до истечения срока таймера
workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система
end end
else Тип доставки "Самовывоз" else Тип доставки "Самовывоз"
workflow -> workflow: Проверяет наличие\nкрупногабаритных товаров\nв заказе workflow -> workflow: Проверяет наличие\nкрупногабаритных товаров\nв заказе
alt Крупногабаритных товаров в заказе нет alt Крупногабаритных товаров в заказе нет
workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа
else Крупногабаритные товары в заказе есть else Крупногабаритные товары в заказе есть
workflow -> workflow: Устанавливает таймер на N минут workflow -> workflow: Устанавливает таймер на N минут
alt Поступила оплата в заказ до истечения срока таймера alt Поступила оплата в заказ до истечения срока таймера
workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа
else Не поступила оплата в заказ до истечения срока таймера else Не поступила оплата в заказ до истечения срока таймера
workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система
end end
end end
end end
@enduml @enduml

View File

@@ -1,30 +1,33 @@
@startuml @startuml
scale 1200*1200 scale 1200*1200
mainframe Получение свободных остатков mainframe Получение свободных остатков
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant Shcat as Shcat collections Cache as cache
participant Susanin as Susanin participant Shcat as Shcat
autonumber participant Susanin as Susanin
autonumber
user -> ARM: Нажимает на остатки товара\nв товарной строке заказа
ARM -> OMS: API GET /quantity-list-by-office user -> ARM: Нажимает на остатки товара\nв товарной строке заказа
activate OMS ARM -> OMS: API GET /quantity-list-by-office
OMS -> OMS: валидирует запрос activate OMS
OMS -> OMS: валидирует запрос
OMS -> Shcat: POST method rests.get OMS -> cache: Забрать все офисы из кэша
activate Shcat activate cache
return answer API POST return answer
OMS -> Susanin: POST method get_logistic_chains_with_priority OMS -> Shcat: POST method rests.get
activate Susanin activate Shcat
return answer API POST return answer API POST
OMS -> OMS: Сращивает ответы\nмежду собой OMS -> Susanin: POST method get_logistic_chains_with_priority
OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады activate Susanin
return answer API POST
return answer API GET
ARM --> user: Рендерит данные в модальном окне OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады
return answer API GET
ARM --> user: Рендерит данные в модальном окне
@enduml @enduml

View File

@@ -1,24 +1,24 @@
@startuml @startuml
scale 1200*1200 scale 1200*1200
mainframe Получение остатков под резервом mainframe Получение остатков под резервом
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant Susanin as Susanin participant Susanin as Susanin
autonumber autonumber
user -> ARM: Нажимает на остатки товара\nв товарной строке заказа user -> ARM: Нажимает на остатки товара\nв товарной строке заказа
ARM -> OMS: API GET /quantity-list-by-office ARM -> OMS: API GET /quantity-list-by-office
activate OMS activate OMS
OMS -> OMS: валидирует запрос OMS -> OMS: валидирует запрос
OMS -> Susanin: POST method get_logistic_chains_with_priority OMS -> Susanin: POST method get_logistic_chains_with_priority
activate Susanin activate Susanin
return answer API POST return answer API POST
OMS -> OMS: запрос в mongodb Order с фильтрами по товару OMS -> OMS: запрос в mongodb Order с фильтрами по товару
OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады
return answer API GET return answer API GET
ARM --> user: Рендерит данные в модальном окне ARM --> user: Рендерит данные в модальном окне
@enduml @enduml

View File

@@ -1,15 +1,15 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Добавление контакта к КА в заказе mainframe Добавление контакта к КА в заказе
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
autonumber autonumber
user -> ARM: Добавляет контакт КА в кратком блоке КА user -> ARM: Добавляет контакт КА в кратком блоке КА
activate ARM activate ARM
ARM -> OMS: API POST /orders/{orderId}/contacts/add ARM -> OMS: API POST /orders/{orderId}/contacts/add
activate OMS activate OMS
return API POST answer return API POST answer
return ок return ок
@enduml @enduml

View File

@@ -1,15 +1,15 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Добавление КА к заказу mainframe Добавление КА к заказу
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
autonumber autonumber
user -> ARM: Добавляет КА в заказ user -> ARM: Добавляет КА в заказ
activate ARM activate ARM
ARM -> OMS: API POST /orders/{orderId}/contractors/add ARM -> OMS: API POST /orders/{orderId}/contractors/add
activate OMS activate OMS
return API POST answer return API POST answer
return ок return ок
@enduml @enduml

View File

@@ -1,30 +1,30 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Обновление данных в модели КА mainframe Обновление данных в модели КА
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant MSKB as MSKB participant MSKB as MSKB
autonumber autonumber
user -> ARM: Нажимает кнопку "Сохранить" user -> ARM: Нажимает кнопку "Сохранить"
ARM -> OMS: API PUT /contractors/{contractorID} ARM -> OMS: API PUT /contractors/{contractorID}
activate OMS activate OMS
OMS -> OMS: Разделяет модель КА\nна основные поля\n+ контакты OMS -> OMS: Разделяет модель КА\nна основные поля\n+ контакты
alt Если изменена только основная модель alt Если изменена только основная модель
OMS -> MSKB: API POST api/business/v2/physic/update OMS -> MSKB: API POST api/business/v2/physic/update
activate MSKB activate MSKB
return answer API POST return answer API POST
else Если добавлены контакты else Если добавлены контакты
OMS -> MSKB: API POST api/business/v2/contact/create OMS -> MSKB: API POST api/business/v2/contact/create
activate MSKB activate MSKB
return answer API POST return answer API POST
else Если удалены контакты else Если удалены контакты
OMS -> MSKB: Удаление контакта КА:\n API DELETE api/business/v2/contact/delete OMS -> MSKB: Удаление контакта КА:\n API DELETE api/business/v2/contact/delete
activate MSKB activate MSKB
return answer API DELETE return answer API DELETE
end end
return answer API PUT return answer API PUT
ARM --> user: Показывает сообщение и\nзакрывает модалку ARM --> user: Показывает сообщение и\nзакрывает модалку
@enduml @enduml

View File

@@ -1,19 +1,19 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Логика "Создание КА" mainframe Логика "Создание КА"
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant MSKB as MSKB participant MSKB as MSKB
autonumber autonumber
user -> ARM: Нажимает кнопку "Создать контрагента" user -> ARM: Нажимает кнопку "Создать контрагента"
ARM -> OMS: API POST /contractors/create ARM -> OMS: API POST /contractors/create
activate OMS activate OMS
OMS -> MSKB: API POST api/business/v2/physic/create OMS -> MSKB: API POST api/business/v2/physic/create
activate MSKB activate MSKB
return answer API POST return answer API POST
return answer API POST return answer API POST
ARM --> user: Показывает сообщение и\nзакрывает модалку ARM --> user: Показывает сообщение и\nзакрывает модалку
@enduml @enduml

View File

@@ -1,19 +1,19 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Получение данных для полной карточки КА mainframe Получение данных для полной карточки КА
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant MSKB as MSKB participant MSKB as MSKB
autonumber autonumber
user -> ARM: Открывает карточку контрагента user -> ARM: Открывает карточку контрагента
ARM -> OMS: API GET /contractors/{contractorID} ARM -> OMS: API GET /contractors/{contractorID}
activate OMS activate OMS
OMS -> MSKB: GraphQL contractorPhysic OMS -> MSKB: GraphQL contractorPhysic
activate MSKB activate MSKB
return answer API GET return answer API GET
return answer get_short_info_contact return answer get_short_info_contact
ARM --> user: Рендерит карточку контрагента ARM --> user: Рендерит карточку контрагента
@enduml @enduml

View File

@@ -1,21 +1,21 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Логика подблока "Информация о контрагенте" mainframe Логика подблока "Информация о контрагенте"
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant WTIS as WTIS participant WTIS as WTIS
autonumber autonumber
user -> ARM: Нажимает кнопку раскрытия блока user -> ARM: Нажимает кнопку раскрытия блока
activate ARM activate ARM
ARM -> OMS: API GET\n/contractors/{contractorID}/orderInfo ARM -> OMS: API GET\n/contractors/{contractorID}/orderInfo
activate OMS activate OMS
OMS -> WTIS: API GET\napi/order/oms_export/contragent_info_oms/{guid} OMS -> WTIS: API GET\napi/order/oms_export/contragent_info_oms/{guid}
activate WTIS activate WTIS
WTIS -> WTIS: prepare data WTIS -> WTIS: prepare data
return API GET answer return API GET answer
return API GET answer return API GET answer
return Рендерит блок return Рендерит блок
@enduml @enduml

View File

@@ -1,38 +1,38 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Логика блока "Поиск КА" mainframe Логика блока "Поиск КА"
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant OMS as OMS participant OMS as OMS
participant MSKB as MSKB participant MSKB as MSKB
autonumber autonumber
user -> ARM: Нажимает кнопку "Поиск КА" user -> ARM: Нажимает кнопку "Поиск КА"
return рендерит шаблон модального окна return рендерит шаблон модального окна
alt Если ищем только по номеру телефона alt Если ищем только по номеру телефона
user -> ARM: Заполняет номер телефона полностью user -> ARM: Заполняет номер телефона полностью
else Если ищем только по email else Если ищем только по email
user -> ARM: Заполняет email полностью user -> ARM: Заполняет email полностью
else Если ищем по номеру телефона И email else Если ищем по номеру телефона И email
user -> ARM: Заполняет номер телефона И email полностью user -> ARM: Заполняет номер телефона И email полностью
end end
ARM -> ARM: валидирует поля ARM -> ARM: валидирует поля
alt Валидация не успешна alt Валидация не успешна
ARM -> user: Информирует пользователя об ошибках ARM -> user: Информирует пользователя об ошибках
else Валидация успешно пройдена else Валидация успешно пройдена
ARM -> OMS: /contractors/search ARM -> OMS: /contractors/search
activate OMS activate OMS
end end
OMS -> MSKB: API POST /api/business/v2/physic/search OMS -> MSKB: API POST /api/business/v2/physic/search
activate MSKB activate MSKB
MSKB -> MSKB: prepare_data MSKB -> MSKB: prepare_data
return answer API POST return answer API POST
return success return success
ARM -> user: Отображает результаты поиска ARM -> user: Отображает результаты поиска
@enduml @enduml

View File

@@ -1,20 +1,20 @@
@startuml @startuml
scale 1000*1000 scale 1000*1000
mainframe Получение данных (Реализации, оплаты) от WTIS MVP mainframe Получение данных (Реализации, оплаты) от WTIS MVP
participant WTIS as WTIS participant WTIS as WTIS
queue kafka queue kafka
participant workflow as workflow participant workflow as workflow
collections Redis as redis collections Redis as redis
autonumber autonumber
hnote over WTIS: После MVP WTIS изменится\nна сервис баланса hnote over WTIS: После MVP WTIS изменится\nна сервис баланса
loop Всегда loop Всегда
WTIS -> kafka: Пишет все инфо\nо документах по заказу WTIS -> kafka: Пишет все инфо\nо документах по заказу
workflow -> kafka: Получает документы\nк заказу из очереди workflow -> kafka: Получает документы\nк заказу из очереди
alt данных нет в кэше по ключу alt данных нет в кэше по ключу
workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня
else данные есть в кэше по ключу else данные есть в кэше по ключу
workflow -> redis: Удаляет запись по ключу workflow -> redis: Удаляет запись по ключу
workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня
end end
@enduml @enduml

View File

@@ -1,19 +1,19 @@
@startuml @startuml
scale 1000*1000 scale 1000*1000
mainframe Получение данных безналичная оплата / оплата по счету из kafka mainframe Получение данных безналичная оплата / оплата по счету из kafka
participant paykeeper participant paykeeper
participant 1C participant 1C
queue kafka queue kafka
participant workflow as workflow participant workflow as workflow
collections PaymentsDb as PaymentsDb collections PaymentsDb as PaymentsDb
autonumber autonumber
loop Всегда loop Всегда
paykeeper -> kafka: Пишет все инфо\nо документах по заказу paykeeper -> kafka: Пишет все инфо\nо документах по заказу
1C -> kafka: Пишет все инфо\nо документах по заказу 1C -> kafka: Пишет все инфо\nо документах по заказу
workflow -> kafka: Получает документы\nк заказу из очереди workflow -> kafka: Получает документы\nк заказу из очереди
workflow -> workflow: Преобразовывает данные workflow -> workflow: Преобразовывает данные
workflow -> PaymentsDb: Записывает в коллекцию workflow -> PaymentsDb: Записывает в коллекцию
end end
@enduml @enduml

View File

@@ -1,46 +1,46 @@
@startuml @startuml
scale 1000*1000 scale 1000*1000
mainframe Получение данных для отрисовки таблицы оплат MVP mainframe Получение данных для отрисовки таблицы оплат MVP
participant WTIS as WTIS participant WTIS as WTIS
collections Redis as redis collections Redis as redis
participant payments as payments participant payments as payments
participant workflow as workflow participant workflow as workflow
participant gateway as gateway participant gateway as gateway
participant ARM as ARM participant ARM as ARM
actor user as user actor user as user
autonumber autonumber
hnote over WTIS: После MVP WTIS изменится\nна сервис баланса hnote over WTIS: После MVP WTIS изменится\nна сервис баланса
autonumber 1 autonumber 1
user -> ARM: Открывает заказ user -> ARM: Открывает заказ
ARM -> gateway: Запрашивает\nдокументы к заказу ARM -> gateway: Запрашивает\nдокументы к заказу
activate gateway activate gateway
== Получение данных о наличной оплате == == Получение данных о наличной оплате ==
gateway -> redis: Проверяет наличие\nданных в кэше gateway -> redis: Проверяет наличие\nданных в кэше
alt данные есть в кэше alt данные есть в кэше
redis --> gateway: Возвращает\nдокументы\n к заказу redis --> gateway: Возвращает\nдокументы\n к заказу
else данных нет в кэше else данных нет в кэше
redis --> gateway: Возвращает\nпустой ответ redis --> gateway: Возвращает\nпустой ответ
gateway -> workflow: Триггерит на\nобновление данных gateway -> workflow: Триггерит на\nобновление данных
activate workflow activate workflow
workflow -> WTIS: API GET order_doc_info() workflow -> WTIS: API GET order_doc_info()
activate WTIS activate WTIS
WTIS --> workflow: answer WTIS --> workflow: answer
deactivate WTIS deactivate WTIS
workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно)
redis --> workflow: Сообщение об успешном сохранении redis --> workflow: Сообщение об успешном сохранении
workflow --> gateway: Возвращает\nдокументы\n к заказу workflow --> gateway: Возвращает\nдокументы\n к заказу
end end
== Получение данных о других типах оплаты == == Получение данных о других типах оплаты ==
workflow -> payments: Запрашивает данные\nоб онлайн оплате И\nпо счету workflow -> payments: Запрашивает данные\nоб онлайн оплате И\nпо счету
activate payments activate payments
payments --> workflow: answer payments --> workflow: answer
deactivate payments deactivate payments
workflow -> workflow: Агрегирует данные\nс источников workflow -> workflow: Агрегирует данные\nс источников
workflow --> gateway: answer workflow --> gateway: answer
deactivate workflow deactivate workflow
gateway --> ARM: возвращает\nданные об оплатах gateway --> ARM: возвращает\nданные об оплатах
deactivate gateway deactivate gateway
ARM --> user: Рендерит блок\nдокументов ARM --> user: Рендерит блок\nдокументов
@enduml @enduml

View File

@@ -1,36 +1,36 @@
@startuml @startuml
scale 1000*1000 scale 1000*1000
mainframe Получение данных для отрисовки модалки Реализации или оплаты наличными mainframe Получение данных для отрисовки модалки Реализации или оплаты наличными
participant WTIS as WTIS participant WTIS as WTIS
collections Redis as redis collections Redis as redis
participant workflow as workflow participant workflow as workflow
participant gateway as gateway participant gateway as gateway
participant ARM as ARM participant ARM as ARM
actor user as user actor user as user
autonumber autonumber
hnote over WTIS: После MVP WTIS изменится\nна сервис баланса hnote over WTIS: После MVP WTIS изменится\nна сервис баланса
user -> ARM: Открывает заказ user -> ARM: Открывает заказ
ARM -> gateway: Запрашивает\nдокументы к заказу ARM -> gateway: Запрашивает\nдокументы к заказу
activate gateway activate gateway
gateway -> redis: Проверяет наличие\nданных в кэше gateway -> redis: Проверяет наличие\nданных в кэше
alt данные есть в кэше alt данные есть в кэше
redis --> gateway: Возвращает\nдокументы\n к заказу redis --> gateway: Возвращает\nдокументы\n к заказу
else данных нет в кэше else данных нет в кэше
redis --> gateway: Возвращает\nпустой ответ redis --> gateway: Возвращает\nпустой ответ
gateway -> workflow: Триггерит на\nобновление данных gateway -> workflow: Триггерит на\nобновление данных
activate workflow activate workflow
workflow -> WTIS: API GET order_doc_info() workflow -> WTIS: API GET order_doc_info()
activate WTIS activate WTIS
return answer return answer
deactivate WTIS deactivate WTIS
workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно)
redis --> workflow: Сообщение об успешном сохранении redis --> workflow: Сообщение об успешном сохранении
workflow --> gateway: Возвращает\nдокументы\n к заказу workflow --> gateway: Возвращает\nдокументы\n к заказу
deactivate workflow deactivate workflow
end end
gateway --> ARM: данные по документу gateway --> ARM: данные по документу
ARM -> user: рендерит модальное\nокно с инфо\nо документе ARM -> user: рендерит модальное\nокно с инфо\nо документе
@enduml @enduml

View File

@@ -1,38 +1,38 @@
@startuml @startuml
scale 1000*1000 scale 1000*1000
mainframe Получение данных для отрисовки таблицы реализаций MVP mainframe Получение данных для отрисовки таблицы реализаций MVP
participant WTIS as WTIS participant WTIS as WTIS
collections Redis as redis collections Redis as redis
participant workflow as workflow participant workflow as workflow
participant gateway as gateway participant gateway as gateway
participant ARM as ARM participant ARM as ARM
actor user as user actor user as user
autonumber autonumber
hnote over WTIS: После MVP WTIS изменится\nна сервис баланса hnote over WTIS: После MVP WTIS изменится\nна сервис баланса
autonumber 1 autonumber 1
user -> ARM: Открывает заказ user -> ARM: Открывает заказ
ARM -> gateway: Запрашивает\nдокументы к заказу ARM -> gateway: Запрашивает\nдокументы к заказу
activate gateway activate gateway
gateway -> redis: Проверяет наличие\nданных в кэше gateway -> redis: Проверяет наличие\nданных в кэше
alt данные есть в кэше alt данные есть в кэше
redis --> gateway: Возвращает\nдокументы\n к заказу redis --> gateway: Возвращает\nдокументы\n к заказу
else данных нет в кэше else данных нет в кэше
redis --> gateway: Возвращает\nпустой ответ redis --> gateway: Возвращает\nпустой ответ
gateway -> workflow: Триггерит на\nобновление данных gateway -> workflow: Триггерит на\nобновление данных
activate workflow activate workflow
workflow -> WTIS: API GET order_doc_info() workflow -> WTIS: API GET order_doc_info()
activate WTIS activate WTIS
return answer return answer
deactivate WTIS deactivate WTIS
workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно)
redis --> workflow: Сообщение об успешном сохранении redis --> workflow: Сообщение об успешном сохранении
workflow --> gateway: Возвращает\nдокументы\n к заказу workflow --> gateway: Возвращает\nдокументы\n к заказу
deactivate workflow deactivate workflow
end end
gateway --> ARM: возвращает\nданные о заказе gateway --> ARM: возвращает\nданные о заказе
deactivate gateway deactivate gateway
ARM --> user: Рендерит блок\nдокументов ARM --> user: Рендерит блок\nдокументов
@enduml @enduml

View File

@@ -1,41 +1,41 @@
@startuml @startuml
scale 800*800 scale 800*800
mainframe Получение списка регионов от Officer mainframe Получение списка регионов от Officer
actor Пользователь as user actor Пользователь as user
participant ARM as ARM participant ARM as ARM
participant gateway as gateway participant gateway as gateway
collections redis as redis collections redis as redis
participant workflow as workflow participant workflow as workflow
participant officer as officer participant officer as officer
autonumber autonumber
user -> ARM: Открывает форму\nзаказа user -> ARM: Открывает форму\nзаказа
activate ARM activate ARM
ARM -> gateway: REST API GET\n инфо о регионах ARM -> gateway: REST API GET\n инфо о регионах
activate gateway activate gateway
gateway -> redis: Запрашивает\nсписок\nрегионов gateway -> redis: Запрашивает\nсписок\nрегионов
opt Данные о регионах есть в кэше opt Данные о регионах есть в кэше
redis --> gateway: answer redis --> gateway: answer
else Данные необходимо обновить в кэше else Данные необходимо обновить в кэше
gateway -> workflow: триггерит обновление gateway -> workflow: триггерит обновление
activate workflow activate workflow
workflow -> officer: GraphQL method\noffices workflow -> officer: GraphQL method\noffices
activate officer activate officer
officer --> workflow: GraphQL answer officer --> workflow: GraphQL answer
workflow -> officer: GraphQL method\nlocalities workflow -> officer: GraphQL method\nlocalities
officer --> workflow: GraphQL answer officer --> workflow: GraphQL answer
deactivate officer deactivate officer
workflow -> workflow: Обработка\nданных workflow -> workflow: Обработка\nданных
workflow -> redis: Записывает регионы\nи параметры в экш workflow -> redis: Записывает регионы\nи параметры в экш
workflow --> gateway: answer workflow --> gateway: answer
deactivate workflow deactivate workflow
end end
gateway --> ARM: REST API GET\nanswer gateway --> ARM: REST API GET\nanswer
deactivate gateway deactivate gateway
ARM --> user: Рендерит данные ARM --> user: Рендерит данные
deactivate ARM deactivate ARM
@enduml @enduml

View File

@@ -1,23 +1,23 @@
@startuml @startuml
mainframe Добавление/удаление заметки пользователя в ЛК mainframe Добавление/удаление заметки пользователя в ЛК
scale 1500x1500 scale 1500x1500
actor user as user actor user as user
participant ARM participant ARM
participant Gateway participant Gateway
participant personalCabinet participant personalCabinet
autonumber autonumber
user -> ARM: Нажимает кнопку "Главная" user -> ARM: Нажимает кнопку "Главная"
alt Пользователь ввел текст и снял фокус с поля alt Пользователь ввел текст и снял фокус с поля
ARM -> Gateway: Отправляет запрос на\nPUT personal-cabinet/v1/note ARM -> Gateway: Отправляет запрос на\nPUT personal-cabinet/v1/note
else Пользователь нажал кнопку "Очистить" else Пользователь нажал кнопку "Очистить"
ARM -> Gateway: Отправляет запрос на\nDELETE personal-cabinet/v1/note ARM -> Gateway: Отправляет запрос на\nDELETE personal-cabinet/v1/note
end end
ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note
Gateway -> personalCabinet: Вызывает методы для\nизменения заметок по пользователю Gateway -> personalCabinet: Вызывает методы для\nизменения заметок по пользователю
personalCabinet --> Gateway: answer personalCabinet --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> user: answer ARM --> user: answer
@enduml @enduml

View File

@@ -1,23 +1,23 @@
@startuml @startuml
mainframe Взаимодействие с избранным mainframe Взаимодействие с избранным
scale 1500x1500 scale 1500x1500
actor user as user actor user as user
participant ARM participant ARM
participant Gateway participant Gateway
participant Order participant Order
autonumber autonumber
user -> ARM: Нажимает иконку\nсердечка в любом заказе user -> ARM: Нажимает иконку\nсердечка в любом заказе
alt Поле было предварительно выделено (активное состояние) alt Поле было предварительно выделено (активное состояние)
ARM -> Gateway: Отправляет запрос на\nDELETE orders/v1/{orderID}/favorite ARM -> Gateway: Отправляет запрос на\nDELETE orders/v1/{orderID}/favorite
else Поле было предварительно не выделено (не активное состояние) else Поле было предварительно не выделено (не активное состояние)
ARM -> Gateway: Отправляет запрос на\nPOST orders/v1/{orderID}/favorite ARM -> Gateway: Отправляет запрос на\nPOST orders/v1/{orderID}/favorite
end end
Gateway -> Order: Вызывает метод\nвзаимодействия с заказом Gateway -> Order: Вызывает метод\nвзаимодействия с заказом
Order -> Order: Обновляет модель order\n(Либо добавляет uuid юзера\nлибо удаляет) Order -> Order: Обновляет модель order\n(Либо добавляет uuid юзера\nлибо удаляет)
Order --> Gateway: answer Order --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> user: answer ARM --> user: answer
@enduml @enduml

View File

@@ -1,17 +1,17 @@
@startuml @startuml
mainframe Получение данных о заказах для ЛК пользователя mainframe Получение данных о заказах для ЛК пользователя
scale 1500x1500 scale 1500x1500
actor user as user actor user as user
participant ARM participant ARM
participant Gateway participant Gateway
participant Order participant Order
autonumber autonumber
user -> ARM: Нажимает кнопку "Главная" user -> ARM: Нажимает кнопку "Главная"
user -> ARM: Нажимает кнопку "Статистика по заказам" user -> ARM: Нажимает кнопку "Статистика по заказам"
ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/stats ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/stats
Gateway -> Order: Вызывает методы для получения всех необходимых срезов по заказам Gateway -> Order: Вызывает методы для получения всех необходимых срезов по заказам
Order --> Gateway: answer Order --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> user: Рендерит информационные блоки ARM --> user: Рендерит информационные блоки
@enduml @enduml

View File

@@ -1,16 +1,16 @@
@startuml @startuml
mainframe Получение заметки пользователя для ЛК mainframe Получение заметки пользователя для ЛК
scale 1500x1500 scale 1500x1500
actor user as user actor user as user
participant ARM participant ARM
participant Gateway participant Gateway
participant personalCabinet participant personalCabinet
autonumber autonumber
user -> ARM: Нажимает кнопку "Главная" user -> ARM: Нажимает кнопку "Главная"
ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note
Gateway -> personalCabinet: Вызывает методы для получения заметок по пользователю Gateway -> personalCabinet: Вызывает методы для получения заметок по пользователю
personalCabinet --> Gateway: answer personalCabinet --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> user: Рендерит текст в блоке заметок ARM --> user: Рендерит текст в блоке заметок
@enduml @enduml

View File

@@ -1,26 +1,26 @@
@startuml @startuml
scale 800x800 scale 800x800
actor user as user actor user as user
participant ARM participant ARM
participant Gateway participant Gateway
participant SITE participant SITE
autonumber autonumber
user -> ARM: Вводит номер корзины user -> ARM: Вводит номер корзины
ARM -> Gateway: Запрос на info/cart ARM -> Gateway: Запрос на info/cart
Gateway -> SITE: Запрос на api/v1/json/user-cart/ Gateway -> SITE: Запрос на api/v1/json/user-cart/
SITE --> Gateway: answer SITE --> Gateway: answer
Gateway -> Gateway: Получает название региона из кэша Gateway -> Gateway: Получает название региона из кэша
Gateway -> Gateway: Запрашивает цены из SCROOGE Gateway -> Gateway: Запрашивает цены из SCROOGE
Gateway -> Gateway: Запрашивает инфо о товаре из PDM Gateway -> Gateway: Запрашивает инфо о товаре из PDM
Gateway -> Gateway: Собирает ответ для frontend Gateway -> Gateway: Собирает ответ для frontend
Gateway --> ARM: answer Gateway --> ARM: answer
ARM -> ARM: Проверяет регионы\nв запросе и в заказе ARM -> ARM: Проверяет регионы\nв запросе и в заказе
alt Регион корзины == регион заказа alt Регион корзины == регион заказа
ARM --> user: answer ARM --> user: answer
else Регион корзины <> регион заказа else Регион корзины <> регион заказа
ARM -> user: Запрашивает\nподтверждение\nо смене региона ARM -> user: Запрашивает\nподтверждение\nо смене региона
end end
@enduml @enduml

View File

@@ -1,77 +1,77 @@
@startuml @startuml
scale 2000x2000 scale 2000x2000
mainframe Внесение изменения в заказ в статусе "В работе" mainframe Внесение изменения в заказ в статусе "В работе"
Actor USER Actor USER
participant ARM participant ARM
participant Gateway participant Gateway
participant Workflow participant Workflow
participant History participant History
participant WTIS participant WTIS
'-------------------------------------------action------------------- '-------------------------------------------action-------------------
autonumber autonumber
USER -> ARM: Открывает заказ USER -> ARM: Открывает заказ
USER -> ARM: Нажимает кнопку\n"Редактировать заказ" USER -> ARM: Нажимает кнопку\n"Редактировать заказ"
ARM -> Gateway: Запрос с номером заказа ARM -> Gateway: Запрос с номером заказа
Gateway -> Workflow: Инициирует запуск workflow Gateway -> Workflow: Инициирует запуск workflow
Workflow -> History: Открывает транзакцию\nrpc StartTransaction(StartTransactionRequest) Workflow -> History: Открывает транзакцию\nrpc StartTransaction(StartTransactionRequest)
History --> Workflow: Подтверждает открытие транзакции\nreturn StartTransactionResponse History --> Workflow: Подтверждает открытие транзакции\nreturn StartTransactionResponse
Workflow --> Gateway: Возвращает поля доступные\nдля редактирования Workflow --> Gateway: Возвращает поля доступные\nдля редактирования
Gateway --> ARM: Возвращает ответ что транзакция открыта Gateway --> ARM: Возвращает ответ что транзакция открыта
ARM --> USER: Разблокирует все элементы в\nинтерфейсе для редактирования ARM --> USER: Разблокирует все элементы в\nинтерфейсе для редактирования
loop Внесение корректировок пользователем и наполнение транзакции loop Внесение корректировок пользователем и наполнение транзакции
USER -> ARM: Вносит корректировки USER -> ARM: Вносит корректировки
ARM -> Gateway: Использует стандартные\nendpoint заказа ARM -> Gateway: Использует стандартные\nendpoint заказа
Gateway -> Workflow: Передает запрос в workflow Gateway -> Workflow: Передает запрос в workflow
Workflow -> Workflow: Проверяет что транзакция открыта:\n<b>В ТЗ: Проверка наличия открытой транзакции Workflow -> Workflow: Проверяет что транзакция открыта:\n<b>В ТЗ: Проверка наличия открытой транзакции
autonumber 14.1.1 autonumber 14.1.1
alt Транзакция закрыта alt Транзакция закрыта
Workflow -> Gateway: Возвращает ошибку Workflow -> Gateway: Возвращает ошибку
Gateway -> ARM: answer Gateway -> ARM: answer
ARM -> USER: Выводит сообщение:\n"Транзакция была закрыта,\nнеобходимо заново открыть\nзаказ на корректировку" ARM -> USER: Выводит сообщение:\n"Транзакция была закрыта,\nнеобходимо заново открыть\nзаказ на корректировку"
autonumber 14.2.1 autonumber 14.2.1
else Транзакция открыта else Транзакция открыта
Workflow -> History: Отправляет GRPC сигнал\nс корректировками в History\nrpc CreateEvent(CreateEventRequest) Workflow -> History: Отправляет GRPC сигнал\nс корректировками в History\nrpc CreateEvent(CreateEventRequest)
History -> History: Сохраняет\nкорректировки History -> History: Сохраняет\nкорректировки
History --> Workflow: return CreateEventResponse History --> Workflow: return CreateEventResponse
Workflow --> Gateway: answer Workflow --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
end 'Это end alt end 'Это end alt
autonumber 15 autonumber 15
end 'Это end loop end 'Это end loop
USER -> ARM: Нажимает кнопку\n"Сохранить изменения"\nИЛИ "Отменить изменения" USER -> ARM: Нажимает кнопку\n"Сохранить изменения"\nИЛИ "Отменить изменения"
ARM -> Gateway: Отправляет запрос на\n/orders/end-correction/orderID={orderGUID} ARM -> Gateway: Отправляет запрос на\n/orders/end-correction/orderID={orderGUID}
Gateway -> Workflow: Вызывает wf Gateway -> Workflow: Вызывает wf
Workflow -> History: Запрашивает актуальное\nсостояние заказа\nrpc GetLastState(GetLastStateRequest) Workflow -> History: Запрашивает актуальное\nсостояние заказа\nrpc GetLastState(GetLastStateRequest)
History --> Workflow: Возвращает Модель заказа\nс примененными корректировками\nreturn GetLastStateResponse History --> Workflow: Возвращает Модель заказа\nс примененными корректировками\nreturn GetLastStateResponse
Workflow -> Workflow: Закрывает транзакцию,\nсохраняет актуальный\nзаказ в Order/shipment Workflow -> Workflow: Закрывает транзакцию,\nсохраняет актуальный\nзаказ в Order/shipment
Workflow -> WTIS: Отправляет модель заказа через топик kafka:\n<b>В ТЗ: Функциональные изменения - "На стороне Gateway" - п.2 Workflow -> WTIS: Отправляет модель заказа через топик kafka:\n<b>В ТЗ: Функциональные изменения - "На стороне Gateway" - п.2
WTIS -> WTIS: Обновляет сущность заказа WTIS -> WTIS: Обновляет сущность заказа
autonumber 22.1.1 autonumber 22.1.1
alt Изменения успешно проведены alt Изменения успешно проведены
WTIS --> Workflow: Возвращает ответ success WTIS --> Workflow: Возвращает ответ success
Workflow -> History: Отправляет GRPC сигнал о закрытии\nтранзакции\nrpc EndTransaction(EndTransactionRequest) Workflow -> History: Отправляет GRPC сигнал о закрытии\nтранзакции\nrpc EndTransaction(EndTransactionRequest)
History --> Workflow: Подтверждает закрытие\nтранзакции\nreturn EndTransactionResponse History --> Workflow: Подтверждает закрытие\nтранзакции\nreturn EndTransactionResponse
Workflow --> Gateway: answer Workflow --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> USER: Отображает модальное\nокно "Изменения\nуспешно сохранены" ARM --> USER: Отображает модальное\nокно "Изменения\nуспешно сохранены"
autonumber 22.2.1 autonumber 22.2.1
else Изменения не проведены else Изменения не проведены
WTIS --> Workflow: Возвращает ответ failed WTIS --> Workflow: Возвращает ответ failed
Workflow -> History: Отправляет GRPC сигнал\nоб удалении транзакции Workflow -> History: Отправляет GRPC сигнал\nоб удалении транзакции
History --> Workflow: Отправляет GRPC сигнал\nчто транзакция удалена History --> Workflow: Отправляет GRPC сигнал\nчто транзакция удалена
Workflow -> Workflow: Откатывает изменения,\nудаляет корректировки Workflow -> Workflow: Откатывает изменения,\nудаляет корректировки
Workflow --> Gateway: answer Workflow --> Gateway: answer
Gateway --> ARM: answer Gateway --> ARM: answer
ARM --> USER: Отображает модальное\nокно "Не удалось\nприменить изменения" ARM --> USER: Отображает модальное\nокно "Не удалось\nприменить изменения"
end end
@enduml @enduml

View File

@@ -0,0 +1,11 @@
@startuml
interface "CRM" as [CRM]
interface "WTIS" as [WTIS]
interface "OMS" as [OMS]
CRM -> OMS: Обновляет данные по\nменеджеру заказа
OMS -> WTIS: Обновляет данные п
DA - [First Component]
[First Component] ..> HTTP : use
@enduml

View File

@@ -1,59 +1,59 @@
@startuml @startuml
scale 1300x1300 scale 1300x1300
mainframe AS IS обмен по созданию заказа на сайте mainframe AS IS обмен по созданию заказа на сайте
Actor USER Actor USER
participant SITE participant SITE
database SITE_database database SITE_database
queue kafka_1 queue kafka_1
participant WTIS participant WTIS
database WTIS_database database WTIS_database
queue kafka_2 queue kafka_2
participant OMS participant OMS
database OMS_database database OMS_database
'-------------------------------------------action------------------- '-------------------------------------------action-------------------
autonumber autonumber
USER -> SITE: Нажимает кнопку оформить заказ USER -> SITE: Нажимает кнопку оформить заказ
SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД
SITE_database -> SITE: Заказ успешно сохранен SITE_database -> SITE: Заказ успешно сохранен
autonumber 4.1 autonumber 4.1
alt Тип доставки в заказе: Самовывоз alt Тип доставки в заказе: Самовывоз
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created
else Тип доставки в заказе: Курьером else Тип доставки в заказе: Курьером
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created
else Тип доставки в заказе: ТК else Тип доставки в заказе: ТК
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created
end end
autonumber 5 autonumber 5
WTIS -> kafka_1: Читает сообщения из топика WTIS -> kafka_1: Читает сообщения из топика
WTIS -> WTIS_database: Сохраняет заказ WTIS -> WTIS_database: Сохраняет заказ
WTIS_database -> WTIS: Заказ успешно сохранен WTIS_database -> WTIS: Заказ успешно сохранен
WTIS -> WTIS: Проверяет условия для MVP\nсогласно настроек в wtis_settings WTIS -> WTIS: Проверяет условия для MVP\nсогласно настроек в wtis_settings
autonumber 9.1 autonumber 9.1
alt Заказ подходит под условия OMS alt Заказ подходит под условия OMS
WTIS -> kafka_2: Записывает заказ в топик: wtis.order_oms.created WTIS -> kafka_2: Записывает заказ в топик: wtis.order_oms.created
else Заказ не подходит под условия OMS else Заказ не подходит под условия OMS
WTIS -> WTIS: Продолжает процедуру автооформления\nзаказа и обогащения данными WTIS -> WTIS: Продолжает процедуру автооформления\nзаказа и обогащения данными
WTIS -> WTIS: Конец процесса WTIS -> WTIS: Конец процесса
end end
autonumber 10 autonumber 10
OMS -> kafka_2: Читает событие из топика OMS -> kafka_2: Читает событие из топика
OMS -> OMS_database: Сохраняет заказ в БД OMS -> OMS_database: Сохраняет заказ в БД
OMS_database -> OMS: Заказ успешно сохранен OMS_database -> OMS: Заказ успешно сохранен
OMS -> OMS: Проводит бизнес проверки OMS -> OMS: Проводит бизнес проверки
OMS -> WTIS: Резервирует товары OMS -> WTIS: Резервирует товары
autonumber 15.1 autonumber 15.1
alt Успешно зарезервировано alt Успешно зарезервировано
WTIS -> OMS: Товары в заказе успешно зарезервированы WTIS -> OMS: Товары в заказе успешно зарезервированы
else Не успешно зарезервировано else Не успешно зарезервировано
WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему
WTIS -> WTIS: Конец процесса WTIS -> WTIS: Конец процесса
end end
@enduml @enduml

View File

@@ -1,66 +1,66 @@
@startuml @startuml
scale 1300x1300 scale 1300x1300
mainframe TO BE обмен по созданию заказа на сайте mainframe TO BE обмен по созданию заказа на сайте
Actor USER Actor USER
participant SITE participant SITE
database SITE_database database SITE_database
participant WTIS participant WTIS
database WTIS_database database WTIS_database
queue kafka_1 queue kafka_1
queue kafka_2 queue kafka_2
participant OMS participant OMS
database OMS_database database OMS_database
'-------------------------------------------action------------------- '-------------------------------------------action-------------------
autonumber autonumber
USER -> SITE: Нажимает кнопку оформить заказ USER -> SITE: Нажимает кнопку оформить заказ
SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД
SITE_database -> SITE: Заказ успешно сохранен SITE_database -> SITE: Заказ успешно сохранен
autonumber 4.1 autonumber 4.1
alt Тип доставки в заказе: Самовывоз alt Тип доставки в заказе: Самовывоз
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created
else Тип доставки в заказе: Курьером else Тип доставки в заказе: Курьером
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created
else Тип доставки в заказе: ТК else Тип доставки в заказе: ТК
SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created
end end
autonumber 5 autonumber 5
OMS -> kafka_1: Читает сообщения из топиков OMS -> kafka_1: Читает сообщения из топиков
OMS -> OMS: Проверяет условия для MVP OMS -> OMS: Проверяет условия для MVP
WTIS -> kafka_1: Читает сообщения из топиков WTIS -> kafka_1: Читает сообщения из топиков
WTIS -> WTIS: Проверяет условия для MVP WTIS -> WTIS: Проверяет условия для MVP
autonumber 9.1 autonumber 9.1
alt Подходит под условия OMS alt Подходит под условия OMS
WTIS -> WTIS: Не обрабатывает такой заказ WTIS -> WTIS: Не обрабатывает такой заказ
OMS -> OMS_database: Сохраняет заказ OMS -> OMS_database: Сохраняет заказ
OMS -> kafka_2: Записывает заказ в топик: oms.orders.sync OMS -> kafka_2: Записывает заказ в топик: oms.orders.sync
OMS_database -> OMS: Заказ успешно сохранен OMS_database -> OMS: Заказ успешно сохранен
WTIS -> kafka_2: Читает топик WTIS -> kafka_2: Читает топик
WTIS -> WTIS: Создает заказ WTIS -> WTIS: Создает заказ
WTIS -> OMS: Возвращает модель заказа через workflow WTIS -> OMS: Возвращает модель заказа через workflow
OMS -> OMS: Проводит автооформление OMS -> OMS: Проводит автооформление
OMS -> WTIS: Резервирует товары OMS -> WTIS: Резервирует товары
autonumber 9.9.1 autonumber 9.9.1
alt Успешно зарезервировано alt Успешно зарезервировано
WTIS -> OMS: Товары в заказе успешно зарезервированы WTIS -> OMS: Товары в заказе успешно зарезервированы
WTIS -> WTIS: Конец процесса WTIS -> WTIS: Конец процесса
else Не успешно зарезервировано else Не успешно зарезервировано
WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему
WTIS -> WTIS: Конец процесса WTIS -> WTIS: Конец процесса
end end
else Не подходит под условия OMS else Не подходит под условия OMS
autonumber 10.1 autonumber 10.1
OMS -> OMS: Не обрабатывает такой заказ OMS -> OMS: Не обрабатывает такой заказ
WTIS -> WTIS_database: Сохраняет заказ WTIS -> WTIS_database: Сохраняет заказ
WTIS_database -> WTIS: Заказ успешно сохранен WTIS_database -> WTIS: Заказ успешно сохранен
WTIS -> WTIS: Конец процесса WTIS -> WTIS: Конец процесса
end end
@enduml @enduml

View File

@@ -1,37 +1,37 @@
@startuml @startuml
'Параметры для интерфейсов 'Параметры для интерфейсов
skinparam interface { skinparam interface {
backgroundColor #1a2eff backgroundColor #1a2eff
borderColor black borderColor black
} }
'Параметры для компонентов 'Параметры для компонентов
skinparam component { skinparam component {
FontSize 13 FontSize 13
ArrowFontStyle Bold ArrowFontStyle Bold
FontName Times New Roman FontName Times New Roman
BorderColor black BorderColor black
BackgroundColor #e6ffef BackgroundColor #e6ffef
ArrowFontName Courier ArrowFontName Courier
ArrowColor #111111 ArrowColor #111111
ArrowFontColor #111111 ArrowFontColor #111111
} }
frame Mycroft_scheme #ededed { frame Mycroft_scheme #ededed {
database MySql #turquoise { database MySql #turquoise {
[Sphinx] [Sphinx]
} }
database ElasticSearch #turquoise { database ElasticSearch #turquoise {
[Sherlock] [Sherlock]
} }
[request] --> [Sherlock] [request] --> [Sherlock]
[request] --> [Sphinx] [request] --> [Sphinx]
[Sherlock] --> [aggregate] [Sherlock] --> [aggregate]
[Sphinx] --> [aggregate] [Sphinx] --> [aggregate]
[aggregate] --> [csv_files]: save [aggregate] --> [csv_files]: save
} }
@enduml @enduml

View File

@@ -1,38 +1,38 @@
@startuml @startuml
'Параметры для интерфейсов 'Параметры для интерфейсов
skinparam interface { skinparam interface {
backgroundColor #1a2eff backgroundColor #1a2eff
borderColor black borderColor black
} }
'Параметры для компонентов 'Параметры для компонентов
skinparam component { skinparam component {
FontSize 13 FontSize 13
ArrowFontStyle Bold ArrowFontStyle Bold
FontName Times New Roman FontName Times New Roman
BorderColor black BorderColor black
BackgroundColor #e6ffef BackgroundColor #e6ffef
ArrowFontName Courier ArrowFontName Courier
ArrowColor #111111 ArrowColor #111111
ArrowFontColor #111111 ArrowFontColor #111111
} }
frame Sherlock_scheme #ededed { frame Sherlock_scheme #ededed {
database "Elasticsearch" #turquoise { database "Elasticsearch" #turquoise {
[database] [database]
} }
[user_request] -u-> http_request_autocomplete [user_request] -u-> http_request_autocomplete
[user_request] -u-> http_request_full_text [user_request] -u-> http_request_full_text
http_request_autocomplete -u-> [database] http_request_autocomplete -u-> [database]
http_request_full_text -u-> [database] http_request_full_text -u-> [database]
note top of http_request_full_text: POST /api/v1/product note top of http_request_full_text: POST /api/v1/product
note top of http_request_autocomplete: POST /api/v1/autocomplete note top of http_request_autocomplete: POST /api/v1/autocomplete
[database] -u-> [filtering, sorting] [database] -u-> [filtering, sorting]
[filtering, sorting] -u-> [response_for_user] [filtering, sorting] -u-> [response_for_user]
[response_for_user] -u-> http_response [response_for_user] -u-> http_response
} }
@enduml @enduml

View File

@@ -1,68 +1,68 @@
@startuml @startuml
mainframe api/v1/autocomplete Общая схема mainframe api/v1/autocomplete Общая схема
Actor user Actor user
participant BackendSite participant BackendSite
participant Sherlock participant Sherlock
Database ElasticSearch Database ElasticSearch
user -> BackendSite: Вводит запрос в поисковую строку user -> BackendSite: Вводит запрос в поисковую строку
BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock
BackendSite -> Sherlock: REST POST api/v1/autocomplete BackendSite -> Sherlock: REST POST api/v1/autocomplete
Sherlock -> Sherlock: Перевод запроса\nна второй язык Sherlock -> Sherlock: Перевод запроса\nна второй язык
Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch
note over Sherlock note over Sherlock
Отправка запроса в Отправка запроса в
ElasticSearch с доп ElasticSearch с доп
сортировкой по категориям сортировкой по категориям
из Спектра из Спектра
endnote endnote
alt ElasticSearch ничего не вернул alt ElasticSearch ничего не вернул
Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN)
ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов
note over Sherlock note over Sherlock
Отправляются доп.запрос Отправляются доп.запрос
в ElasticSearch с меньшим в ElasticSearch с меньшим
процентом вхождения процентом вхождения
endnote endnote
Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN)
ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов
Sherlock --> BackendSite: Получен пустой ответ Sherlock --> BackendSite: Получен пустой ответ
Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены
else Найдены товары else Найдены товары
alt Есть товары спектр alt Есть товары спектр
note over ElasticSearch note over ElasticSearch
ЕСЛИ хоть один из четырех индексов ЕСЛИ хоть один из четырех индексов
отдал ответ, ТО он отдается на бэкенд отдал ответ, ТО он отдается на бэкенд
endnote endnote
Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN)
note over ElasticSearch note over ElasticSearch
Категории спектр поднимаются Категории спектр поднимаются
наверх И товары внутри них наверх И товары внутри них
сортируются по скорингу сортируются по скорингу
endnote endnote
else Товаров спектр не найдено else Товаров спектр не найдено
Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN)
note over ElasticSearch note over ElasticSearch
Товары сортируются Товары сортируются
по скорингу по скорингу
endnote endnote
end end
ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров
Sherlock --> BackendSite: Список товаров Sherlock --> BackendSite: Список товаров
BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска
end end
@enduml @enduml

View File

@@ -1,55 +1,55 @@
@startuml @startuml
mainframe api/v1/filters Общая схема mainframe api/v1/filters Общая схема
Actor user Actor user
participant BackendSite participant BackendSite
participant Sherlock participant Sherlock
Database ElasticSearch Database ElasticSearch
user -> BackendSite: Вводит запрос в поисковую строку user -> BackendSite: Вводит запрос в поисковую строку
BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock
BackendSite -> Sherlock: REST POST api/v1/filters BackendSite -> Sherlock: REST POST api/v1/filters
Sherlock -> Sherlock: Преобразование запроса\nв структуру и формирование\nзапроса для ElasticSearch Sherlock -> Sherlock: Преобразование запроса\nв структуру и формирование\nзапроса для ElasticSearch
note over Sherlock note over Sherlock
Отправка запроса в Отправка запроса в
ElasticSearch с доп ElasticSearch с доп
сортировкой по категориям сортировкой по категориям
из Спектра из Спектра
endnote endnote
alt ElasticSearch ничего не вернул alt ElasticSearch ничего не вернул
Sherlock -> ElasticSearch: REST GET products/_search Sherlock -> ElasticSearch: REST GET products/_search
ElasticSearch --> Sherlock: Получен пустой ответ ElasticSearch --> Sherlock: Получен пустой ответ
note over Sherlock note over Sherlock
Отправляется доп.запрос Отправляется доп.запрос
в ElasticSearch с меньшим в ElasticSearch с меньшим
процентом вхождения процентом вхождения
endnote endnote
Sherlock -> ElasticSearch: REST GET products/_search Sherlock -> ElasticSearch: REST GET products/_search
ElasticSearch --> Sherlock: Получен пустой ответ ElasticSearch --> Sherlock: Получен пустой ответ
Sherlock --> BackendSite: Получен пустой ответ Sherlock --> BackendSite: Получен пустой ответ
Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены
else Найдены товары else Найдены товары
alt Есть товары спектр alt Есть товары спектр
Sherlock -> ElasticSearch: REST GET products/_search Sherlock -> ElasticSearch: REST GET products/_search
note over ElasticSearch note over ElasticSearch
Категории спектр Категории спектр
поднимаются наверх поднимаются наверх
endnote endnote
else Товаров спектр не найдено else Товаров спектр не найдено
Sherlock -> ElasticSearch: REST GET products/_search Sherlock -> ElasticSearch: REST GET products/_search
end end
ElasticSearch --> Sherlock: Передает список\nкатегорий и фильтров ElasticSearch --> Sherlock: Передает список\nкатегорий и фильтров
Sherlock --> BackendSite: Список категорий и фильтров Sherlock --> BackendSite: Список категорий и фильтров
BackendSite --> user: Пользователь получает фильтры\nна странице: Результаты поиска BackendSite --> user: Пользователь получает фильтры\nна странице: Результаты поиска
end end
@enduml @enduml

View File

@@ -1,64 +1,64 @@
@startuml @startuml
mainframe api/v1/products Общая схема mainframe api/v1/products Общая схема
Actor user Actor user
participant BackendSite participant BackendSite
participant Sherlock participant Sherlock
Database ElasticSearch Database ElasticSearch
user -> BackendSite: Вводит запрос в поисковую строку user -> BackendSite: Вводит запрос в поисковую строку
BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock
BackendSite -> Sherlock: REST POST api/v1/products BackendSite -> Sherlock: REST POST api/v1/products
Sherlock -> Sherlock: Перевод запроса\nна второй язык Sherlock -> Sherlock: Перевод запроса\nна второй язык
Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch
note over Sherlock note over Sherlock
Отправка запроса в Отправка запроса в
ElasticSearch с доп ElasticSearch с доп
сортировкой по категориям сортировкой по категориям
из Спектра из Спектра
endnote endnote
alt ElasticSearch ничего не вернул alt ElasticSearch ничего не вернул
Sherlock -> ElasticSearch: REST GET products/_search RU Sherlock -> ElasticSearch: REST GET products/_search RU
Sherlock -> ElasticSearch: REST GET products/_search EN Sherlock -> ElasticSearch: REST GET products/_search EN
ElasticSearch --> Sherlock: Получен пустой ответ ElasticSearch --> Sherlock: Получен пустой ответ
note over Sherlock note over Sherlock
Отправляется доп.запрос Отправляется доп.запрос
в ElasticSearch с меньшим в ElasticSearch с меньшим
процентом вхождения процентом вхождения
endnote endnote
Sherlock -> ElasticSearch: REST GET products/_search RU Sherlock -> ElasticSearch: REST GET products/_search RU
Sherlock -> ElasticSearch: REST GET products/_search EN Sherlock -> ElasticSearch: REST GET products/_search EN
ElasticSearch --> Sherlock: Получен пустой ответ ElasticSearch --> Sherlock: Получен пустой ответ
Sherlock --> BackendSite: Получен пустой ответ Sherlock --> BackendSite: Получен пустой ответ
Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены
else Найдены товары else Найдены товары
alt Есть товары спектр alt Есть товары спектр
Sherlock -> ElasticSearch: REST GET products/_search RU Sherlock -> ElasticSearch: REST GET products/_search RU
Sherlock -> ElasticSearch: REST GET products/_search EN Sherlock -> ElasticSearch: REST GET products/_search EN
note over ElasticSearch note over ElasticSearch
Категории спектр поднимаются Категории спектр поднимаются
наверх И товары внутри них наверх И товары внутри них
сортируются по скорингу сортируются по скорингу
endnote endnote
else Товаров спектр не найдено else Товаров спектр не найдено
Sherlock -> ElasticSearch: REST GET products/_search RU Sherlock -> ElasticSearch: REST GET products/_search RU
Sherlock -> ElasticSearch: REST GET products/_search EN Sherlock -> ElasticSearch: REST GET products/_search EN
note over ElasticSearch note over ElasticSearch
Товары сортируются Товары сортируются
по скорингу по скорингу
endnote endnote
end end
ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров
Sherlock --> BackendSite: Список товаров Sherlock --> BackendSite: Список товаров
BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска
end end
@enduml @enduml