diff --git a/.idea/.gitignore b/.idea/.gitignore index 13566b8..1c2fda5 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -1,8 +1,8 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml index 4351daa..79677f3 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index f324872..000a3ea 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,19 +1,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/plantUML.iml b/.idea/plantUML.iml index c956989..bf4c9d3 100644 --- a/.idea/plantUML.iml +++ b/.idea/plantUML.iml @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..9661ac7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - - - - - + + + + + \ No newline at end of file diff --git a/oms/autoorder/FRQ-1.puml b/oms/autoorder/FRQ-1.puml index 0ea58a3..de51327 100644 --- a/oms/autoorder/FRQ-1.puml +++ b/oms/autoorder/FRQ-1.puml @@ -1,46 +1,46 @@ -@startuml -mainframe "FRQ-1 Заказ.ПолучениеДанных." -Actor USER -participant SITE -participant WTIS -queue Название_топика_1 -queue Название_топика_2 -participant OMS -participant Officer - - -autonumber 1 -USER -> USER: Создает заказ на сайте -USER -> SITE: Сущность "Заказ"\nс набором атрибутов -SITE -> WTIS: Сущность "Заказ"\nс набором атрибутов -WTIS -> WTIS: Проверка условий\nи отбор заказов -WTIS -> Название_топика_1: Записывает Сущность\n"Заказ" с набором\nатрибутов -OMS -> Название_топика_1: Читает Сущность\n"Заказ" с набором\nатрибутов -OMS -> OMS: Валидация КА -autonumber 7.1 -alt валидация пройдена -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 8 -OMS <-> Officer: Получение лимитов офиса -OMS -> OMS: Валидация способа получения -alt валидация пройдена -autonumber 9.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 10 -OMS -> OMS: Валидация способа оплаты -alt валидация пройдена -autonumber 10.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 11 -OMS -> OMS: Данные о заказе\nполучены и провалидированы -OMS -> OMS: Переход к бизнес-проверкам +@startuml +mainframe "FRQ-1 Заказ.ПолучениеДанных." +Actor USER +participant SITE +participant WTIS +queue Название_топика_1 +queue Название_топика_2 +participant OMS +participant Officer + + +autonumber 1 +USER -> USER: Создает заказ на сайте +USER -> SITE: Сущность "Заказ"\nс набором атрибутов +SITE -> WTIS: Сущность "Заказ"\nс набором атрибутов +WTIS -> WTIS: Проверка условий\nи отбор заказов +WTIS -> Название_топика_1: Записывает Сущность\n"Заказ" с набором\nатрибутов +OMS -> Название_топика_1: Читает Сущность\n"Заказ" с набором\nатрибутов +OMS -> OMS: Валидация КА +autonumber 7.1 +alt валидация пройдена +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 8 +OMS <-> Officer: Получение лимитов офиса +OMS -> OMS: Валидация способа получения +alt валидация пройдена +autonumber 9.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 10 +OMS -> OMS: Валидация способа оплаты +alt валидация пройдена +autonumber 10.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 11 +OMS -> OMS: Данные о заказе\nполучены и провалидированы +OMS -> OMS: Переход к бизнес-проверкам @enduml \ No newline at end of file diff --git a/oms/autoorder/FRQ-2.puml b/oms/autoorder/FRQ-2.puml index 5435ebc..40af547 100644 --- a/oms/autoorder/FRQ-2.puml +++ b/oms/autoorder/FRQ-2.puml @@ -1,55 +1,55 @@ -@startuml -mainframe "FRQ-2 Заказ.БизнесПроверки." - -queue Название_топика_2 -database ClickHouse -participant OMS -participant DRUZ -participant PDM - - -autonumber 1 -OMS -> PDM: Запрашивает\nGUID производителя товара -OMS -> OMS: Проверка на возможность\nпродажи товара - -alt валидация пройдена -autonumber 2.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> ClickHouse: Логирование не\nпройденных проверок -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 3 - -OMS -> DRUZ: Запрашивает \nпризнак "Наличие" -OMS -> OMS: Проверка что товары\nиз заказа в наличии -alt валидация пройдена -autonumber 4.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> ClickHouse: Логирование не\nпройденных проверок -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 5 -OMS -> PDM: Запрашивает ВГХ товара -OMS -> OMS: Расчитывает объем и\nобщий вес заказа -OMS -> OMS: Проверка на лимиты\nВГХ ТТ -alt валидация пройдена -autonumber 7.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> ClickHouse: Логирование не\nпройденных проверок -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end -autonumber 8 -OMS -> OMS: Проверка способа\nоплаты на ТТ -alt валидация пройдена -autonumber 8.1 -OMS -> OMS: Продолжение сценария -else валидация не пройдена -OMS -> ClickHouse: Логирование не\nпройденных проверок -OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов -end - - +@startuml +mainframe "FRQ-2 Заказ.БизнесПроверки." + +queue Название_топика_2 +database ClickHouse +participant OMS +participant DRUZ +participant PDM + + +autonumber 1 +OMS -> PDM: Запрашивает\nGUID производителя товара +OMS -> OMS: Проверка на возможность\nпродажи товара + +alt валидация пройдена +autonumber 2.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> ClickHouse: Логирование не\nпройденных проверок +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 3 + +OMS -> DRUZ: Запрашивает \nпризнак "Наличие" +OMS -> OMS: Проверка что товары\nиз заказа в наличии +alt валидация пройдена +autonumber 4.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> ClickHouse: Логирование не\nпройденных проверок +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 5 +OMS -> PDM: Запрашивает ВГХ товара +OMS -> OMS: Расчитывает объем и\nобщий вес заказа +OMS -> OMS: Проверка на лимиты\nВГХ ТТ +alt валидация пройдена +autonumber 7.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> ClickHouse: Логирование не\nпройденных проверок +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end +autonumber 8 +OMS -> OMS: Проверка способа\nоплаты на ТТ +alt валидация пройдена +autonumber 8.1 +OMS -> OMS: Продолжение сценария +else валидация не пройдена +OMS -> ClickHouse: Логирование не\nпройденных проверок +OMS -> Название_топика_2: Сущность "Заказ"\nс набором атрибутов +end + + @enduml \ No newline at end of file diff --git a/oms/autoorder/change-ao.puml b/oms/autoorder/change-ao.puml index cdd3abc..500e724 100644 --- a/oms/autoorder/change-ao.puml +++ b/oms/autoorder/change-ao.puml @@ -1,39 +1,39 @@ -@startuml -scale 1500x1500 -mainframe Автооформление заказов -actor user as user -participant SITE -queue kafka -participant Gateway -participant workflow -participant wtis - -user -> SITE: Оформляет заказ -SITE -> SITE: Сохраняет заказ в БД -SITE --> kafka: Пишет заказ в kafka -Gateway --> kafka: Забирает заказ - -Gateway -> workflow: CreateB2CAO -workflow -> workflow: Проверяет условия АО -workflow -> workflow: Проверяет тип доставки -alt Тип доставки "Курьером" -workflow -> workflow: Устанавливает таймер на N минут - alt Поступила оплата в заказ до истечения срока таймера - workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа - else Не поступила оплата в заказ до истечения срока таймера - workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система - end -else Тип доставки "Самовывоз" -workflow -> workflow: Проверяет наличие\nкрупногабаритных товаров\nв заказе - alt Крупногабаритных товаров в заказе нет - workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа - else Крупногабаритные товары в заказе есть - workflow -> workflow: Устанавливает таймер на N минут - alt Поступила оплата в заказ до истечения срока таймера - workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа - else Не поступила оплата в заказ до истечения срока таймера - workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система - end - end -end +@startuml +scale 1500x1500 +mainframe Автооформление заказов +actor user as user +participant SITE +queue kafka +participant Gateway +participant workflow +participant wtis + +user -> SITE: Оформляет заказ +SITE -> SITE: Сохраняет заказ в БД +SITE --> kafka: Пишет заказ в kafka +Gateway --> kafka: Забирает заказ + +Gateway -> workflow: CreateB2CAO +workflow -> workflow: Проверяет условия АО +workflow -> workflow: Проверяет тип доставки +alt Тип доставки "Курьером" +workflow -> workflow: Устанавливает таймер на N минут + alt Поступила оплата в заказ до истечения срока таймера + workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа + else Не поступила оплата в заказ до истечения срока таймера + workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система + end +else Тип доставки "Самовывоз" +workflow -> workflow: Проверяет наличие\nкрупногабаритных товаров\nв заказе + alt Крупногабаритных товаров в заказе нет + workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа + else Крупногабаритные товары в заказе есть + workflow -> workflow: Устанавливает таймер на N минут + alt Поступила оплата в заказ до истечения срока таймера + workflow -> workflow: Заканчивает автооформление\nУстанавливает дату доставки\nзаказа + else Не поступила оплата в заказ до истечения срока таймера + workflow -> wtis: Заказ передается во WTIS\nМеняется мастер система + end + end +end @enduml \ No newline at end of file diff --git a/oms/free-rest-and-reserve-journal/free-rest.puml b/oms/free-rest-and-reserve-journal/free-rest.puml index 144d38f..7768dbf 100644 --- a/oms/free-rest-and-reserve-journal/free-rest.puml +++ b/oms/free-rest-and-reserve-journal/free-rest.puml @@ -1,30 +1,33 @@ -@startuml -scale 1200*1200 -mainframe Получение свободных остатков -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant Shcat as Shcat -participant Susanin as Susanin -autonumber - -user -> ARM: Нажимает на остатки товара\nв товарной строке заказа -ARM -> OMS: API GET /quantity-list-by-office -activate OMS -OMS -> OMS: валидирует запрос - - -OMS -> Shcat: POST method rests.get -activate Shcat -return answer API POST - -OMS -> Susanin: POST method get_logistic_chains_with_priority -activate Susanin -return answer API POST - -OMS -> OMS: Сращивает ответы\nмежду собой -OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады - -return answer API GET -ARM --> user: Рендерит данные в модальном окне +@startuml +scale 1200*1200 +mainframe Получение свободных остатков +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +collections Cache as cache +participant Shcat as Shcat +participant Susanin as Susanin +autonumber + +user -> ARM: Нажимает на остатки товара\nв товарной строке заказа +ARM -> OMS: API GET /quantity-list-by-office +activate OMS +OMS -> OMS: валидирует запрос + +OMS -> cache: Забрать все офисы из кэша +activate cache +return answer + +OMS -> Shcat: POST method rests.get +activate Shcat +return answer API POST + +OMS -> Susanin: POST method get_logistic_chains_with_priority +activate Susanin +return answer API POST + +OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады + +return answer API GET +ARM --> user: Рендерит данные в модальном окне @enduml \ No newline at end of file diff --git a/oms/free-rest-and-reserve-journal/reserve-rest.puml b/oms/free-rest-and-reserve-journal/reserve-rest.puml index d104df6..274a52b 100644 --- a/oms/free-rest-and-reserve-journal/reserve-rest.puml +++ b/oms/free-rest-and-reserve-journal/reserve-rest.puml @@ -1,24 +1,24 @@ -@startuml -scale 1200*1200 -mainframe Получение остатков под резервом -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant Susanin as Susanin -autonumber - -user -> ARM: Нажимает на остатки товара\nв товарной строке заказа -ARM -> OMS: API GET /quantity-list-by-office -activate OMS -OMS -> OMS: валидирует запрос - -OMS -> Susanin: POST method get_logistic_chains_with_priority -activate Susanin -return answer API POST - -OMS -> OMS: запрос в mongodb Order с фильтрами по товару -OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады - -return answer API GET -ARM --> user: Рендерит данные в модальном окне +@startuml +scale 1200*1200 +mainframe Получение остатков под резервом +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant Susanin as Susanin +autonumber + +user -> ARM: Нажимает на остатки товара\nв товарной строке заказа +ARM -> OMS: API GET /quantity-list-by-office +activate OMS +OMS -> OMS: валидирует запрос + +OMS -> Susanin: POST method get_logistic_chains_with_priority +activate Susanin +return answer API POST + +OMS -> OMS: запрос в mongodb Order с фильтрами по товару +OMS -> OMS: Формирует два массива:\n1. По лог.цепям\n2. Прочие склады + +return answer API GET +ARM --> user: Рендерит данные в модальном окне @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/add-contact.puml b/oms/interface-arm/contragent/add-contact.puml index 116be94..4dd15a8 100644 --- a/oms/interface-arm/contragent/add-contact.puml +++ b/oms/interface-arm/contragent/add-contact.puml @@ -1,15 +1,15 @@ -@startuml -scale 800*800 -mainframe Добавление контакта к КА в заказе -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -autonumber - -user -> ARM: Добавляет контакт КА в кратком блоке КА -activate ARM -ARM -> OMS: API POST /orders/{orderId}/contacts/add -activate OMS -return API POST answer -return ок +@startuml +scale 800*800 +mainframe Добавление контакта к КА в заказе +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +autonumber + +user -> ARM: Добавляет контакт КА в кратком блоке КА +activate ARM +ARM -> OMS: API POST /orders/{orderId}/contacts/add +activate OMS +return API POST answer +return ок @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/add-contragent-to-order.puml b/oms/interface-arm/contragent/add-contragent-to-order.puml index e0d20bf..007957a 100644 --- a/oms/interface-arm/contragent/add-contragent-to-order.puml +++ b/oms/interface-arm/contragent/add-contragent-to-order.puml @@ -1,15 +1,15 @@ -@startuml -scale 800*800 -mainframe Добавление КА к заказу -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -autonumber - -user -> ARM: Добавляет КА в заказ -activate ARM -ARM -> OMS: API POST /orders/{orderId}/contractors/add -activate OMS -return API POST answer -return ок +@startuml +scale 800*800 +mainframe Добавление КА к заказу +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +autonumber + +user -> ARM: Добавляет КА в заказ +activate ARM +ARM -> OMS: API POST /orders/{orderId}/contractors/add +activate OMS +return API POST answer +return ок @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/change-contractor.puml b/oms/interface-arm/contragent/change-contractor.puml index d3407b3..691c01f 100644 --- a/oms/interface-arm/contragent/change-contractor.puml +++ b/oms/interface-arm/contragent/change-contractor.puml @@ -1,30 +1,30 @@ -@startuml -scale 800*800 -mainframe Обновление данных в модели КА -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant MSKB as MSKB -autonumber - -user -> ARM: Нажимает кнопку "Сохранить" -ARM -> OMS: API PUT /contractors/{contractorID} -activate OMS -OMS -> OMS: Разделяет модель КА\nна основные поля\n+ контакты -alt Если изменена только основная модель -OMS -> MSKB: API POST api/business/v2/physic/update -activate MSKB -return answer API POST -else Если добавлены контакты -OMS -> MSKB: API POST api/business/v2/contact/create -activate MSKB -return answer API POST -else Если удалены контакты -OMS -> MSKB: Удаление контакта КА:\n API DELETE api/business/v2/contact/delete -activate MSKB -return answer API DELETE -end - -return answer API PUT -ARM --> user: Показывает сообщение и\nзакрывает модалку +@startuml +scale 800*800 +mainframe Обновление данных в модели КА +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant MSKB as MSKB +autonumber + +user -> ARM: Нажимает кнопку "Сохранить" +ARM -> OMS: API PUT /contractors/{contractorID} +activate OMS +OMS -> OMS: Разделяет модель КА\nна основные поля\n+ контакты +alt Если изменена только основная модель +OMS -> MSKB: API POST api/business/v2/physic/update +activate MSKB +return answer API POST +else Если добавлены контакты +OMS -> MSKB: API POST api/business/v2/contact/create +activate MSKB +return answer API POST +else Если удалены контакты +OMS -> MSKB: Удаление контакта КА:\n API DELETE api/business/v2/contact/delete +activate MSKB +return answer API DELETE +end + +return answer API PUT +ARM --> user: Показывает сообщение и\nзакрывает модалку @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/create-contractor.puml b/oms/interface-arm/contragent/create-contractor.puml index ffdf0fc..29ef4f5 100644 --- a/oms/interface-arm/contragent/create-contractor.puml +++ b/oms/interface-arm/contragent/create-contractor.puml @@ -1,19 +1,19 @@ -@startuml -scale 800*800 -mainframe Логика "Создание КА" -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant MSKB as MSKB -autonumber - -user -> ARM: Нажимает кнопку "Создать контрагента" -ARM -> OMS: API POST /contractors/create -activate OMS -OMS -> MSKB: API POST api/business/v2/physic/create -activate MSKB -return answer API POST - -return answer API POST -ARM --> user: Показывает сообщение и\nзакрывает модалку +@startuml +scale 800*800 +mainframe Логика "Создание КА" +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant MSKB as MSKB +autonumber + +user -> ARM: Нажимает кнопку "Создать контрагента" +ARM -> OMS: API POST /contractors/create +activate OMS +OMS -> MSKB: API POST api/business/v2/physic/create +activate MSKB +return answer API POST + +return answer API POST +ARM --> user: Показывает сообщение и\nзакрывает модалку @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/get-contractor-info.puml b/oms/interface-arm/contragent/get-contractor-info.puml index f133d26..fedc28f 100644 --- a/oms/interface-arm/contragent/get-contractor-info.puml +++ b/oms/interface-arm/contragent/get-contractor-info.puml @@ -1,19 +1,19 @@ -@startuml -scale 800*800 -mainframe Получение данных для полной карточки КА -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant MSKB as MSKB -autonumber - -user -> ARM: Открывает карточку контрагента -ARM -> OMS: API GET /contractors/{contractorID} -activate OMS -OMS -> MSKB: GraphQL contractorPhysic -activate MSKB -return answer API GET - -return answer get_short_info_contact -ARM --> user: Рендерит карточку контрагента +@startuml +scale 800*800 +mainframe Получение данных для полной карточки КА +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant MSKB as MSKB +autonumber + +user -> ARM: Открывает карточку контрагента +ARM -> OMS: API GET /contractors/{contractorID} +activate OMS +OMS -> MSKB: GraphQL contractorPhysic +activate MSKB +return answer API GET + +return answer get_short_info_contact +ARM --> user: Рендерит карточку контрагента @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/get-contragent-info.puml b/oms/interface-arm/contragent/get-contragent-info.puml index af39360..43ee99c 100644 --- a/oms/interface-arm/contragent/get-contragent-info.puml +++ b/oms/interface-arm/contragent/get-contragent-info.puml @@ -1,21 +1,21 @@ -@startuml -scale 800*800 -mainframe Логика подблока "Информация о контрагенте" -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant WTIS as WTIS -autonumber - -user -> ARM: Нажимает кнопку раскрытия блока -activate ARM -ARM -> OMS: API GET\n/contractors/{contractorID}/orderInfo -activate OMS -OMS -> WTIS: API GET\napi/order/oms_export/contragent_info_oms/{guid} -activate WTIS -WTIS -> WTIS: prepare data -return API GET answer -return API GET answer - -return Рендерит блок +@startuml +scale 800*800 +mainframe Логика подблока "Информация о контрагенте" +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant WTIS as WTIS +autonumber + +user -> ARM: Нажимает кнопку раскрытия блока +activate ARM +ARM -> OMS: API GET\n/contractors/{contractorID}/orderInfo +activate OMS +OMS -> WTIS: API GET\napi/order/oms_export/contragent_info_oms/{guid} +activate WTIS +WTIS -> WTIS: prepare data +return API GET answer +return API GET answer + +return Рендерит блок @enduml \ No newline at end of file diff --git a/oms/interface-arm/contragent/search-contractor.puml b/oms/interface-arm/contragent/search-contractor.puml index 6c83118..b858d17 100644 --- a/oms/interface-arm/contragent/search-contractor.puml +++ b/oms/interface-arm/contragent/search-contractor.puml @@ -1,38 +1,38 @@ -@startuml -scale 800*800 -mainframe Логика блока "Поиск КА" -actor Пользователь as user -participant ARM as ARM -participant OMS as OMS -participant MSKB as MSKB -autonumber - -user -> ARM: Нажимает кнопку "Поиск КА" - -return рендерит шаблон модального окна - -alt Если ищем только по номеру телефона -user -> ARM: Заполняет номер телефона полностью -else Если ищем только по email -user -> ARM: Заполняет email полностью -else Если ищем по номеру телефона И email -user -> ARM: Заполняет номер телефона И email полностью -end -ARM -> ARM: валидирует поля -alt Валидация не успешна -ARM -> user: Информирует пользователя об ошибках - -else Валидация успешно пройдена -ARM -> OMS: /contractors/search -activate OMS -end - -OMS -> MSKB: API POST /api/business/v2/physic/search -activate MSKB -MSKB -> MSKB: prepare_data -return answer API POST - -return success - -ARM -> user: Отображает результаты поиска +@startuml +scale 800*800 +mainframe Логика блока "Поиск КА" +actor Пользователь as user +participant ARM as ARM +participant OMS as OMS +participant MSKB as MSKB +autonumber + +user -> ARM: Нажимает кнопку "Поиск КА" + +return рендерит шаблон модального окна + +alt Если ищем только по номеру телефона +user -> ARM: Заполняет номер телефона полностью +else Если ищем только по email +user -> ARM: Заполняет email полностью +else Если ищем по номеру телефона И email +user -> ARM: Заполняет номер телефона И email полностью +end +ARM -> ARM: валидирует поля +alt Валидация не успешна +ARM -> user: Информирует пользователя об ошибках + +else Валидация успешно пройдена +ARM -> OMS: /contractors/search +activate OMS +end + +OMS -> MSKB: API POST /api/business/v2/physic/search +activate MSKB +MSKB -> MSKB: prepare_data +return answer API POST + +return success + +ARM -> user: Отображает результаты поиска @enduml \ No newline at end of file diff --git a/oms/interface-arm/docs/get realizations MVP.puml b/oms/interface-arm/docs/get realizations MVP.puml index bc29f55..d54ad6a 100644 --- a/oms/interface-arm/docs/get realizations MVP.puml +++ b/oms/interface-arm/docs/get realizations MVP.puml @@ -1,20 +1,20 @@ -@startuml -scale 1000*1000 -mainframe Получение данных (Реализации, оплаты) от WTIS MVP -participant WTIS as WTIS -queue kafka -participant workflow as workflow -collections Redis as redis -autonumber -hnote over WTIS: После MVP WTIS изменится\nна сервис баланса - -loop Всегда -WTIS -> kafka: Пишет все инфо\nо документах по заказу -workflow -> kafka: Получает документы\nк заказу из очереди -alt данных нет в кэше по ключу -workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня -else данные есть в кэше по ключу -workflow -> redis: Удаляет запись по ключу -workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня -end +@startuml +scale 1000*1000 +mainframe Получение данных (Реализации, оплаты) от WTIS MVP +participant WTIS as WTIS +queue kafka +participant workflow as workflow +collections Redis as redis +autonumber +hnote over WTIS: После MVP WTIS изменится\nна сервис баланса + +loop Всегда +WTIS -> kafka: Пишет все инфо\nо документах по заказу +workflow -> kafka: Получает документы\nк заказу из очереди +alt данных нет в кэше по ключу +workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня +else данные есть в кэше по ключу +workflow -> redis: Удаляет запись по ключу +workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня +end @enduml \ No newline at end of file diff --git a/oms/interface-arm/docs/payment-with-kafka.puml b/oms/interface-arm/docs/payment-with-kafka.puml index 391bf70..9aa0bb9 100644 --- a/oms/interface-arm/docs/payment-with-kafka.puml +++ b/oms/interface-arm/docs/payment-with-kafka.puml @@ -1,19 +1,19 @@ -@startuml -scale 1000*1000 -mainframe Получение данных безналичная оплата / оплата по счету из kafka -participant paykeeper -participant 1C -queue kafka -participant workflow as workflow -collections PaymentsDb as PaymentsDb -autonumber - -loop Всегда -paykeeper -> kafka: Пишет все инфо\nо документах по заказу -1C -> kafka: Пишет все инфо\nо документах по заказу -workflow -> kafka: Получает документы\nк заказу из очереди -workflow -> workflow: Преобразовывает данные -workflow -> PaymentsDb: Записывает в коллекцию -end - +@startuml +scale 1000*1000 +mainframe Получение данных безналичная оплата / оплата по счету из kafka +participant paykeeper +participant 1C +queue kafka +participant workflow as workflow +collections PaymentsDb as PaymentsDb +autonumber + +loop Всегда +paykeeper -> kafka: Пишет все инфо\nо документах по заказу +1C -> kafka: Пишет все инфо\nо документах по заказу +workflow -> kafka: Получает документы\nк заказу из очереди +workflow -> workflow: Преобразовывает данные +workflow -> PaymentsDb: Записывает в коллекцию +end + @enduml \ No newline at end of file diff --git a/oms/interface-arm/docs/payment.puml b/oms/interface-arm/docs/payment.puml index 3d94983..1d56139 100644 --- a/oms/interface-arm/docs/payment.puml +++ b/oms/interface-arm/docs/payment.puml @@ -1,46 +1,46 @@ -@startuml -scale 1000*1000 -mainframe Получение данных для отрисовки таблицы оплат MVP -participant WTIS as WTIS -collections Redis as redis -participant payments as payments -participant workflow as workflow -participant gateway as gateway -participant ARM as ARM -actor user as user -autonumber -hnote over WTIS: После MVP WTIS изменится\nна сервис баланса - -autonumber 1 -user -> ARM: Открывает заказ -ARM -> gateway: Запрашивает\nдокументы к заказу -activate gateway -== Получение данных о наличной оплате == -gateway -> redis: Проверяет наличие\nданных в кэше -alt данные есть в кэше -redis --> gateway: Возвращает\nдокументы\n к заказу -else данных нет в кэше -redis --> gateway: Возвращает\nпустой ответ -gateway -> workflow: Триггерит на\nобновление данных -activate workflow -workflow -> WTIS: API GET order_doc_info() -activate WTIS -WTIS --> workflow: answer -deactivate WTIS -workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) -redis --> workflow: Сообщение об успешном сохранении -workflow --> gateway: Возвращает\nдокументы\n к заказу -end -== Получение данных о других типах оплаты == -workflow -> payments: Запрашивает данные\nоб онлайн оплате И\nпо счету -activate payments -payments --> workflow: answer -deactivate payments -workflow -> workflow: Агрегирует данные\nс источников -workflow --> gateway: answer -deactivate workflow -gateway --> ARM: возвращает\nданные об оплатах -deactivate gateway -ARM --> user: Рендерит блок\nдокументов - +@startuml +scale 1000*1000 +mainframe Получение данных для отрисовки таблицы оплат MVP +participant WTIS as WTIS +collections Redis as redis +participant payments as payments +participant workflow as workflow +participant gateway as gateway +participant ARM as ARM +actor user as user +autonumber +hnote over WTIS: После MVP WTIS изменится\nна сервис баланса + +autonumber 1 +user -> ARM: Открывает заказ +ARM -> gateway: Запрашивает\nдокументы к заказу +activate gateway +== Получение данных о наличной оплате == +gateway -> redis: Проверяет наличие\nданных в кэше +alt данные есть в кэше +redis --> gateway: Возвращает\nдокументы\n к заказу +else данных нет в кэше +redis --> gateway: Возвращает\nпустой ответ +gateway -> workflow: Триггерит на\nобновление данных +activate workflow +workflow -> WTIS: API GET order_doc_info() +activate WTIS +WTIS --> workflow: answer +deactivate WTIS +workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) +redis --> workflow: Сообщение об успешном сохранении +workflow --> gateway: Возвращает\nдокументы\n к заказу +end +== Получение данных о других типах оплаты == +workflow -> payments: Запрашивает данные\nоб онлайн оплате И\nпо счету +activate payments +payments --> workflow: answer +deactivate payments +workflow -> workflow: Агрегирует данные\nс источников +workflow --> gateway: answer +deactivate workflow +gateway --> ARM: возвращает\nданные об оплатах +deactivate gateway +ARM --> user: Рендерит блок\nдокументов + @enduml \ No newline at end of file diff --git a/oms/interface-arm/docs/realizations-or-payment.puml b/oms/interface-arm/docs/realizations-or-payment.puml index d657b4a..37ba6d9 100644 --- a/oms/interface-arm/docs/realizations-or-payment.puml +++ b/oms/interface-arm/docs/realizations-or-payment.puml @@ -1,36 +1,36 @@ -@startuml -scale 1000*1000 -mainframe Получение данных для отрисовки модалки Реализации или оплаты наличными -participant WTIS as WTIS -collections Redis as redis -participant workflow as workflow -participant gateway as gateway -participant ARM as ARM -actor user as user - -autonumber -hnote over WTIS: После MVP WTIS изменится\nна сервис баланса - -user -> ARM: Открывает заказ -ARM -> gateway: Запрашивает\nдокументы к заказу -activate gateway -gateway -> redis: Проверяет наличие\nданных в кэше -alt данные есть в кэше -redis --> gateway: Возвращает\nдокументы\n к заказу -else данных нет в кэше -redis --> gateway: Возвращает\nпустой ответ -gateway -> workflow: Триггерит на\nобновление данных -activate workflow -workflow -> WTIS: API GET order_doc_info() -activate WTIS -return answer -deactivate WTIS -workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) -redis --> workflow: Сообщение об успешном сохранении -workflow --> gateway: Возвращает\nдокументы\n к заказу -deactivate workflow -end -gateway --> ARM: данные по документу -ARM -> user: рендерит модальное\nокно с инфо\nо документе - +@startuml +scale 1000*1000 +mainframe Получение данных для отрисовки модалки Реализации или оплаты наличными +participant WTIS as WTIS +collections Redis as redis +participant workflow as workflow +participant gateway as gateway +participant ARM as ARM +actor user as user + +autonumber +hnote over WTIS: После MVP WTIS изменится\nна сервис баланса + +user -> ARM: Открывает заказ +ARM -> gateway: Запрашивает\nдокументы к заказу +activate gateway +gateway -> redis: Проверяет наличие\nданных в кэше +alt данные есть в кэше +redis --> gateway: Возвращает\nдокументы\n к заказу +else данных нет в кэше +redis --> gateway: Возвращает\nпустой ответ +gateway -> workflow: Триггерит на\nобновление данных +activate workflow +workflow -> WTIS: API GET order_doc_info() +activate WTIS +return answer +deactivate WTIS +workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) +redis --> workflow: Сообщение об успешном сохранении +workflow --> gateway: Возвращает\nдокументы\n к заказу +deactivate workflow +end +gateway --> ARM: данные по документу +ARM -> user: рендерит модальное\nокно с инфо\nо документе + @enduml \ No newline at end of file diff --git a/oms/interface-arm/docs/realizations.puml b/oms/interface-arm/docs/realizations.puml index f95ea46..e15c25f 100644 --- a/oms/interface-arm/docs/realizations.puml +++ b/oms/interface-arm/docs/realizations.puml @@ -1,38 +1,38 @@ -@startuml -scale 1000*1000 -mainframe Получение данных для отрисовки таблицы реализаций MVP -participant WTIS as WTIS -collections Redis as redis -participant workflow as workflow -participant gateway as gateway -participant ARM as ARM -actor user as user -autonumber -hnote over WTIS: После MVP WTIS изменится\nна сервис баланса - -autonumber 1 -user -> ARM: Открывает заказ -ARM -> gateway: Запрашивает\nдокументы к заказу -activate gateway -gateway -> redis: Проверяет наличие\nданных в кэше -alt данные есть в кэше -redis --> gateway: Возвращает\nдокументы\n к заказу -else данных нет в кэше -redis --> gateway: Возвращает\nпустой ответ -gateway -> workflow: Триггерит на\nобновление данных -activate workflow -workflow -> WTIS: API GET order_doc_info() -activate WTIS -return answer -deactivate WTIS -workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) -redis --> workflow: Сообщение об успешном сохранении -workflow --> gateway: Возвращает\nдокументы\n к заказу -deactivate workflow -end - -gateway --> ARM: возвращает\nданные о заказе -deactivate gateway -ARM --> user: Рендерит блок\nдокументов - +@startuml +scale 1000*1000 +mainframe Получение данных для отрисовки таблицы реализаций MVP +participant WTIS as WTIS +collections Redis as redis +participant workflow as workflow +participant gateway as gateway +participant ARM as ARM +actor user as user +autonumber +hnote over WTIS: После MVP WTIS изменится\nна сервис баланса + +autonumber 1 +user -> ARM: Открывает заказ +ARM -> gateway: Запрашивает\nдокументы к заказу +activate gateway +gateway -> redis: Проверяет наличие\nданных в кэше +alt данные есть в кэше +redis --> gateway: Возвращает\nдокументы\n к заказу +else данных нет в кэше +redis --> gateway: Возвращает\nпустой ответ +gateway -> workflow: Триггерит на\nобновление данных +activate workflow +workflow -> WTIS: API GET order_doc_info() +activate WTIS +return answer +deactivate WTIS +workflow -> redis: Сохраняет в кэш\nКраткую форму на 7 дней\nПолную форму на 3 дня (спорно) +redis --> workflow: Сообщение об успешном сохранении +workflow --> gateway: Возвращает\nдокументы\n к заказу +deactivate workflow +end + +gateway --> ARM: возвращает\nданные о заказе +deactivate gateway +ARM --> user: Рендерит блок\nдокументов + @enduml \ No newline at end of file diff --git a/oms/interface-arm/order/get-region.puml b/oms/interface-arm/order/get-region.puml index 577662f..c107766 100644 --- a/oms/interface-arm/order/get-region.puml +++ b/oms/interface-arm/order/get-region.puml @@ -1,41 +1,41 @@ - @startuml -scale 800*800 -mainframe Получение списка регионов от Officer -actor Пользователь as user -participant ARM as ARM -participant gateway as gateway -collections redis as redis -participant workflow as workflow -participant officer as officer -autonumber - -user -> ARM: Открывает форму\nзаказа -activate ARM -ARM -> gateway: REST API GET\n инфо о регионах -activate gateway -gateway -> redis: Запрашивает\nсписок\nрегионов - -opt Данные о регионах есть в кэше -redis --> gateway: answer -else Данные необходимо обновить в кэше -gateway -> workflow: триггерит обновление -activate workflow -workflow -> officer: GraphQL method\noffices -activate officer -officer --> workflow: GraphQL answer -workflow -> officer: GraphQL method\nlocalities -officer --> workflow: GraphQL answer -deactivate officer -workflow -> workflow: Обработка\nданных -workflow -> redis: Записывает регионы\nи параметры в экш -workflow --> gateway: answer -deactivate workflow -end - -gateway --> ARM: REST API GET\nanswer -deactivate gateway -ARM --> user: Рендерит данные -deactivate ARM -@enduml - + @startuml +scale 800*800 +mainframe Получение списка регионов от Officer +actor Пользователь as user +participant ARM as ARM +participant gateway as gateway +collections redis as redis +participant workflow as workflow +participant officer as officer +autonumber + +user -> ARM: Открывает форму\nзаказа +activate ARM +ARM -> gateway: REST API GET\n инфо о регионах +activate gateway +gateway -> redis: Запрашивает\nсписок\nрегионов + +opt Данные о регионах есть в кэше +redis --> gateway: answer +else Данные необходимо обновить в кэше +gateway -> workflow: триггерит обновление +activate workflow +workflow -> officer: GraphQL method\noffices +activate officer +officer --> workflow: GraphQL answer +workflow -> officer: GraphQL method\nlocalities +officer --> workflow: GraphQL answer +deactivate officer +workflow -> workflow: Обработка\nданных +workflow -> redis: Записывает регионы\nи параметры в экш +workflow --> gateway: answer +deactivate workflow +end + +gateway --> ARM: REST API GET\nanswer +deactivate gateway +ARM --> user: Рендерит данные +deactivate ARM +@enduml + \ No newline at end of file diff --git a/oms/personal-cabinet/change note.puml b/oms/personal-cabinet/change note.puml index 23fb7d4..1ba5caf 100644 --- a/oms/personal-cabinet/change note.puml +++ b/oms/personal-cabinet/change note.puml @@ -1,23 +1,23 @@ - @startuml -mainframe Добавление/удаление заметки пользователя в ЛК -scale 1500x1500 -actor user as user -participant ARM -participant Gateway -participant personalCabinet - -autonumber -user -> ARM: Нажимает кнопку "Главная" -alt Пользователь ввел текст и снял фокус с поля -ARM -> Gateway: Отправляет запрос на\nPUT personal-cabinet/v1/note -else Пользователь нажал кнопку "Очистить" -ARM -> Gateway: Отправляет запрос на\nDELETE personal-cabinet/v1/note -end - - -ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note -Gateway -> personalCabinet: Вызывает методы для\nизменения заметок по пользователю -personalCabinet --> Gateway: answer -Gateway --> ARM: answer -ARM --> user: answer + @startuml +mainframe Добавление/удаление заметки пользователя в ЛК +scale 1500x1500 +actor user as user +participant ARM +participant Gateway +participant personalCabinet + +autonumber +user -> ARM: Нажимает кнопку "Главная" +alt Пользователь ввел текст и снял фокус с поля +ARM -> Gateway: Отправляет запрос на\nPUT personal-cabinet/v1/note +else Пользователь нажал кнопку "Очистить" +ARM -> Gateway: Отправляет запрос на\nDELETE personal-cabinet/v1/note +end + + +ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note +Gateway -> personalCabinet: Вызывает методы для\nизменения заметок по пользователю +personalCabinet --> Gateway: answer +Gateway --> ARM: answer +ARM --> user: answer @enduml \ No newline at end of file diff --git a/oms/personal-cabinet/favorites.puml b/oms/personal-cabinet/favorites.puml index c023c14..a307f74 100644 --- a/oms/personal-cabinet/favorites.puml +++ b/oms/personal-cabinet/favorites.puml @@ -1,23 +1,23 @@ -@startuml -mainframe Взаимодействие с избранным -scale 1500x1500 -actor user as user -participant ARM -participant Gateway -participant Order - -autonumber -user -> ARM: Нажимает иконку\nсердечка в любом заказе - -alt Поле было предварительно выделено (активное состояние) -ARM -> Gateway: Отправляет запрос на\nDELETE orders/v1/{orderID}/favorite -else Поле было предварительно не выделено (не активное состояние) -ARM -> Gateway: Отправляет запрос на\nPOST orders/v1/{orderID}/favorite -end - -Gateway -> Order: Вызывает метод\nвзаимодействия с заказом -Order -> Order: Обновляет модель order\n(Либо добавляет uuid юзера\nлибо удаляет) -Order --> Gateway: answer -Gateway --> ARM: answer -ARM --> user: answer +@startuml +mainframe Взаимодействие с избранным +scale 1500x1500 +actor user as user +participant ARM +participant Gateway +participant Order + +autonumber +user -> ARM: Нажимает иконку\nсердечка в любом заказе + +alt Поле было предварительно выделено (активное состояние) +ARM -> Gateway: Отправляет запрос на\nDELETE orders/v1/{orderID}/favorite +else Поле было предварительно не выделено (не активное состояние) +ARM -> Gateway: Отправляет запрос на\nPOST orders/v1/{orderID}/favorite +end + +Gateway -> Order: Вызывает метод\nвзаимодействия с заказом +Order -> Order: Обновляет модель order\n(Либо добавляет uuid юзера\nлибо удаляет) +Order --> Gateway: answer +Gateway --> ARM: answer +ARM --> user: answer @enduml \ No newline at end of file diff --git a/oms/personal-cabinet/get-info-order.puml b/oms/personal-cabinet/get-info-order.puml index 912326f..93ea10f 100644 --- a/oms/personal-cabinet/get-info-order.puml +++ b/oms/personal-cabinet/get-info-order.puml @@ -1,17 +1,17 @@ -@startuml -mainframe Получение данных о заказах для ЛК пользователя -scale 1500x1500 -actor user as user -participant ARM -participant Gateway -participant Order - -autonumber -user -> ARM: Нажимает кнопку "Главная" -user -> ARM: Нажимает кнопку "Статистика по заказам" -ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/stats -Gateway -> Order: Вызывает методы для получения всех необходимых срезов по заказам -Order --> Gateway: answer -Gateway --> ARM: answer -ARM --> user: Рендерит информационные блоки +@startuml +mainframe Получение данных о заказах для ЛК пользователя +scale 1500x1500 +actor user as user +participant ARM +participant Gateway +participant Order + +autonumber +user -> ARM: Нажимает кнопку "Главная" +user -> ARM: Нажимает кнопку "Статистика по заказам" +ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/stats +Gateway -> Order: Вызывает методы для получения всех необходимых срезов по заказам +Order --> Gateway: answer +Gateway --> ARM: answer +ARM --> user: Рендерит информационные блоки @enduml \ No newline at end of file diff --git a/oms/personal-cabinet/get-note.puml b/oms/personal-cabinet/get-note.puml index a2ac929..48297a8 100644 --- a/oms/personal-cabinet/get-note.puml +++ b/oms/personal-cabinet/get-note.puml @@ -1,16 +1,16 @@ - @startuml -mainframe Получение заметки пользователя для ЛК -scale 1500x1500 -actor user as user -participant ARM -participant Gateway -participant personalCabinet - -autonumber -user -> ARM: Нажимает кнопку "Главная" -ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note -Gateway -> personalCabinet: Вызывает методы для получения заметок по пользователю -personalCabinet --> Gateway: answer -Gateway --> ARM: answer -ARM --> user: Рендерит текст в блоке заметок + @startuml +mainframe Получение заметки пользователя для ЛК +scale 1500x1500 +actor user as user +participant ARM +participant Gateway +participant personalCabinet + +autonumber +user -> ARM: Нажимает кнопку "Главная" +ARM -> Gateway: Отправляет запрос на GET personal-cabinet/v1/note +Gateway -> personalCabinet: Вызывает методы для получения заметок по пользователю +personalCabinet --> Gateway: answer +Gateway --> ARM: answer +ARM --> user: Рендерит текст в блоке заметок @enduml \ No newline at end of file diff --git a/oms/process/basket-import.puml b/oms/process/basket-import.puml index c6746e7..a15d460 100644 --- a/oms/process/basket-import.puml +++ b/oms/process/basket-import.puml @@ -1,26 +1,26 @@ -@startuml -scale 800x800 -actor user as user -participant ARM -participant Gateway -participant SITE - -autonumber -user -> ARM: Вводит номер корзины -ARM -> Gateway: Запрос на info/cart -Gateway -> SITE: Запрос на api/v1/json/user-cart/ -SITE --> Gateway: answer -Gateway -> Gateway: Получает название региона из кэша -Gateway -> Gateway: Запрашивает цены из SCROOGE -Gateway -> Gateway: Запрашивает инфо о товаре из PDM -Gateway -> Gateway: Собирает ответ для frontend -Gateway --> ARM: answer -ARM -> ARM: Проверяет регионы\nв запросе и в заказе - -alt Регион корзины == регион заказа -ARM --> user: answer -else Регион корзины <> регион заказа -ARM -> user: Запрашивает\nподтверждение\nо смене региона -end - +@startuml +scale 800x800 +actor user as user +participant ARM +participant Gateway +participant SITE + +autonumber +user -> ARM: Вводит номер корзины +ARM -> Gateway: Запрос на info/cart +Gateway -> SITE: Запрос на api/v1/json/user-cart/ +SITE --> Gateway: answer +Gateway -> Gateway: Получает название региона из кэша +Gateway -> Gateway: Запрашивает цены из SCROOGE +Gateway -> Gateway: Запрашивает инфо о товаре из PDM +Gateway -> Gateway: Собирает ответ для frontend +Gateway --> ARM: answer +ARM -> ARM: Проверяет регионы\nв запросе и в заказе + +alt Регион корзины == регион заказа +ARM --> user: answer +else Регион корзины <> регион заказа +ARM -> user: Запрашивает\nподтверждение\nо смене региона +end + @enduml \ No newline at end of file diff --git a/oms/process/booking.puml b/oms/process/booking.puml index b27f44b..a32b82b 100644 --- a/oms/process/booking.puml +++ b/oms/process/booking.puml @@ -1,77 +1,77 @@ -@startuml -scale 2000x2000 -mainframe Внесение изменения в заказ в статусе "В работе" -Actor USER -participant ARM -participant Gateway -participant Workflow -participant History -participant WTIS - -'-------------------------------------------action------------------- -autonumber - -USER -> ARM: Открывает заказ -USER -> ARM: Нажимает кнопку\n"Редактировать заказ" -ARM -> Gateway: Запрос с номером заказа -Gateway -> Workflow: Инициирует запуск workflow -Workflow -> History: Открывает транзакцию\nrpc StartTransaction(StartTransactionRequest) -History --> Workflow: Подтверждает открытие транзакции\nreturn StartTransactionResponse -Workflow --> Gateway: Возвращает поля доступные\nдля редактирования -Gateway --> ARM: Возвращает ответ что транзакция открыта -ARM --> USER: Разблокирует все элементы в\nинтерфейсе для редактирования - -loop Внесение корректировок пользователем и наполнение транзакции -USER -> ARM: Вносит корректировки -ARM -> Gateway: Использует стандартные\nendpoint заказа -Gateway -> Workflow: Передает запрос в workflow -Workflow -> Workflow: Проверяет что транзакция открыта:\nВ ТЗ: Проверка наличия открытой транзакции -autonumber 14.1.1 -alt Транзакция закрыта -Workflow -> Gateway: Возвращает ошибку -Gateway -> ARM: answer -ARM -> USER: Выводит сообщение:\n"Транзакция была закрыта,\nнеобходимо заново открыть\nзаказ на корректировку" - -autonumber 14.2.1 -else Транзакция открыта -Workflow -> History: Отправляет GRPC сигнал\nс корректировками в History\nrpc CreateEvent(CreateEventRequest) -History -> History: Сохраняет\nкорректировки -History --> Workflow: return CreateEventResponse -Workflow --> Gateway: answer -Gateway --> ARM: answer -end 'Это end alt -autonumber 15 - -end 'Это end loop - -USER -> ARM: Нажимает кнопку\n"Сохранить изменения"\nИЛИ "Отменить изменения" -ARM -> Gateway: Отправляет запрос на\n/orders/end-correction/orderID={orderGUID} -Gateway -> Workflow: Вызывает wf -Workflow -> History: Запрашивает актуальное\nсостояние заказа\nrpc GetLastState(GetLastStateRequest) -History --> Workflow: Возвращает Модель заказа\nс примененными корректировками\nreturn GetLastStateResponse -Workflow -> Workflow: Закрывает транзакцию,\nсохраняет актуальный\nзаказ в Order/shipment -Workflow -> WTIS: Отправляет модель заказа через топик kafka:\nВ ТЗ: Функциональные изменения - "На стороне Gateway" - п.2 -WTIS -> WTIS: Обновляет сущность заказа - -autonumber 22.1.1 -alt Изменения успешно проведены -WTIS --> Workflow: Возвращает ответ success -Workflow -> History: Отправляет GRPC сигнал о закрытии\nтранзакции\nrpc EndTransaction(EndTransactionRequest) -History --> Workflow: Подтверждает закрытие\nтранзакции\nreturn EndTransactionResponse -Workflow --> Gateway: answer -Gateway --> ARM: answer -ARM --> USER: Отображает модальное\nокно "Изменения\nуспешно сохранены" - -autonumber 22.2.1 -else Изменения не проведены -WTIS --> Workflow: Возвращает ответ failed -Workflow -> History: Отправляет GRPC сигнал\nоб удалении транзакции -History --> Workflow: Отправляет GRPC сигнал\nчто транзакция удалена -Workflow -> Workflow: Откатывает изменения,\nудаляет корректировки -Workflow --> Gateway: answer -Gateway --> ARM: answer -ARM --> USER: Отображает модальное\nокно "Не удалось\nприменить изменения" -end - - +@startuml +scale 2000x2000 +mainframe Внесение изменения в заказ в статусе "В работе" +Actor USER +participant ARM +participant Gateway +participant Workflow +participant History +participant WTIS + +'-------------------------------------------action------------------- +autonumber + +USER -> ARM: Открывает заказ +USER -> ARM: Нажимает кнопку\n"Редактировать заказ" +ARM -> Gateway: Запрос с номером заказа +Gateway -> Workflow: Инициирует запуск workflow +Workflow -> History: Открывает транзакцию\nrpc StartTransaction(StartTransactionRequest) +History --> Workflow: Подтверждает открытие транзакции\nreturn StartTransactionResponse +Workflow --> Gateway: Возвращает поля доступные\nдля редактирования +Gateway --> ARM: Возвращает ответ что транзакция открыта +ARM --> USER: Разблокирует все элементы в\nинтерфейсе для редактирования + +loop Внесение корректировок пользователем и наполнение транзакции +USER -> ARM: Вносит корректировки +ARM -> Gateway: Использует стандартные\nendpoint заказа +Gateway -> Workflow: Передает запрос в workflow +Workflow -> Workflow: Проверяет что транзакция открыта:\nВ ТЗ: Проверка наличия открытой транзакции +autonumber 14.1.1 +alt Транзакция закрыта +Workflow -> Gateway: Возвращает ошибку +Gateway -> ARM: answer +ARM -> USER: Выводит сообщение:\n"Транзакция была закрыта,\nнеобходимо заново открыть\nзаказ на корректировку" + +autonumber 14.2.1 +else Транзакция открыта +Workflow -> History: Отправляет GRPC сигнал\nс корректировками в History\nrpc CreateEvent(CreateEventRequest) +History -> History: Сохраняет\nкорректировки +History --> Workflow: return CreateEventResponse +Workflow --> Gateway: answer +Gateway --> ARM: answer +end 'Это end alt +autonumber 15 + +end 'Это end loop + +USER -> ARM: Нажимает кнопку\n"Сохранить изменения"\nИЛИ "Отменить изменения" +ARM -> Gateway: Отправляет запрос на\n/orders/end-correction/orderID={orderGUID} +Gateway -> Workflow: Вызывает wf +Workflow -> History: Запрашивает актуальное\nсостояние заказа\nrpc GetLastState(GetLastStateRequest) +History --> Workflow: Возвращает Модель заказа\nс примененными корректировками\nreturn GetLastStateResponse +Workflow -> Workflow: Закрывает транзакцию,\nсохраняет актуальный\nзаказ в Order/shipment +Workflow -> WTIS: Отправляет модель заказа через топик kafka:\nВ ТЗ: Функциональные изменения - "На стороне Gateway" - п.2 +WTIS -> WTIS: Обновляет сущность заказа + +autonumber 22.1.1 +alt Изменения успешно проведены +WTIS --> Workflow: Возвращает ответ success +Workflow -> History: Отправляет GRPC сигнал о закрытии\nтранзакции\nrpc EndTransaction(EndTransactionRequest) +History --> Workflow: Подтверждает закрытие\nтранзакции\nreturn EndTransactionResponse +Workflow --> Gateway: answer +Gateway --> ARM: answer +ARM --> USER: Отображает модальное\nокно "Изменения\nуспешно сохранены" + +autonumber 22.2.1 +else Изменения не проведены +WTIS --> Workflow: Возвращает ответ failed +Workflow -> History: Отправляет GRPC сигнал\nоб удалении транзакции +History --> Workflow: Отправляет GRPC сигнал\nчто транзакция удалена +Workflow -> Workflow: Откатывает изменения,\nудаляет корректировки +Workflow --> Gateway: answer +Gateway --> ARM: answer +ARM --> USER: Отображает модальное\nокно "Не удалось\nприменить изменения" +end + + @enduml \ No newline at end of file diff --git a/oms/segmentation/segmentation.puml b/oms/segmentation/segmentation.puml new file mode 100644 index 0000000..3a927e9 --- /dev/null +++ b/oms/segmentation/segmentation.puml @@ -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 \ No newline at end of file diff --git a/oms/site-integration/AS IS.puml b/oms/site-integration/AS IS.puml index 7d7ae20..ad66f40 100644 --- a/oms/site-integration/AS IS.puml +++ b/oms/site-integration/AS IS.puml @@ -1,59 +1,59 @@ -@startuml -scale 1300x1300 -mainframe AS IS обмен по созданию заказа на сайте -Actor USER -participant SITE -database SITE_database -queue kafka_1 -participant WTIS -database WTIS_database -queue kafka_2 -participant OMS -database OMS_database -'-------------------------------------------action------------------- -autonumber - -USER -> SITE: Нажимает кнопку оформить заказ -SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД -SITE_database -> SITE: Заказ успешно сохранен - -autonumber 4.1 -alt Тип доставки в заказе: Самовывоз -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created -else Тип доставки в заказе: Курьером -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created -else Тип доставки в заказе: ТК -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created -end - -autonumber 5 -WTIS -> kafka_1: Читает сообщения из топика -WTIS -> WTIS_database: Сохраняет заказ -WTIS_database -> WTIS: Заказ успешно сохранен -WTIS -> WTIS: Проверяет условия для MVP\nсогласно настроек в wtis_settings - -autonumber 9.1 -alt Заказ подходит под условия OMS -WTIS -> kafka_2: Записывает заказ в топик: wtis.order_oms.created -else Заказ не подходит под условия OMS -WTIS -> WTIS: Продолжает процедуру автооформления\nзаказа и обогащения данными -WTIS -> WTIS: Конец процесса -end - -autonumber 10 -OMS -> kafka_2: Читает событие из топика -OMS -> OMS_database: Сохраняет заказ в БД -OMS_database -> OMS: Заказ успешно сохранен - -OMS -> OMS: Проводит бизнес проверки -OMS -> WTIS: Резервирует товары - -autonumber 15.1 -alt Успешно зарезервировано -WTIS -> OMS: Товары в заказе успешно зарезервированы -else Не успешно зарезервировано -WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему -WTIS -> WTIS: Конец процесса -end - +@startuml +scale 1300x1300 +mainframe AS IS обмен по созданию заказа на сайте +Actor USER +participant SITE +database SITE_database +queue kafka_1 +participant WTIS +database WTIS_database +queue kafka_2 +participant OMS +database OMS_database +'-------------------------------------------action------------------- +autonumber + +USER -> SITE: Нажимает кнопку оформить заказ +SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД +SITE_database -> SITE: Заказ успешно сохранен + +autonumber 4.1 +alt Тип доставки в заказе: Самовывоз +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created +else Тип доставки в заказе: Курьером +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created +else Тип доставки в заказе: ТК +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created +end + +autonumber 5 +WTIS -> kafka_1: Читает сообщения из топика +WTIS -> WTIS_database: Сохраняет заказ +WTIS_database -> WTIS: Заказ успешно сохранен +WTIS -> WTIS: Проверяет условия для MVP\nсогласно настроек в wtis_settings + +autonumber 9.1 +alt Заказ подходит под условия OMS +WTIS -> kafka_2: Записывает заказ в топик: wtis.order_oms.created +else Заказ не подходит под условия OMS +WTIS -> WTIS: Продолжает процедуру автооформления\nзаказа и обогащения данными +WTIS -> WTIS: Конец процесса +end + +autonumber 10 +OMS -> kafka_2: Читает событие из топика +OMS -> OMS_database: Сохраняет заказ в БД +OMS_database -> OMS: Заказ успешно сохранен + +OMS -> OMS: Проводит бизнес проверки +OMS -> WTIS: Резервирует товары + +autonumber 15.1 +alt Успешно зарезервировано +WTIS -> OMS: Товары в заказе успешно зарезервированы +else Не успешно зарезервировано +WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему +WTIS -> WTIS: Конец процесса +end + @enduml \ No newline at end of file diff --git a/oms/site-integration/TO BE.puml b/oms/site-integration/TO BE.puml index 416e12a..7b460d6 100644 --- a/oms/site-integration/TO BE.puml +++ b/oms/site-integration/TO BE.puml @@ -1,66 +1,66 @@ -@startuml -scale 1300x1300 -mainframe TO BE обмен по созданию заказа на сайте -Actor USER -participant SITE -database SITE_database -participant WTIS -database WTIS_database -queue kafka_1 -queue kafka_2 -participant OMS -database OMS_database -'-------------------------------------------action------------------- -autonumber - -USER -> SITE: Нажимает кнопку оформить заказ -SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД -SITE_database -> SITE: Заказ успешно сохранен - -autonumber 4.1 -alt Тип доставки в заказе: Самовывоз -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created -else Тип доставки в заказе: Курьером -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created -else Тип доставки в заказе: ТК -SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created -end - -autonumber 5 -OMS -> kafka_1: Читает сообщения из топиков -OMS -> OMS: Проверяет условия для MVP -WTIS -> kafka_1: Читает сообщения из топиков -WTIS -> WTIS: Проверяет условия для MVP - -autonumber 9.1 -alt Подходит под условия OMS -WTIS -> WTIS: Не обрабатывает такой заказ -OMS -> OMS_database: Сохраняет заказ -OMS -> kafka_2: Записывает заказ в топик: oms.orders.sync -OMS_database -> OMS: Заказ успешно сохранен -WTIS -> kafka_2: Читает топик -WTIS -> WTIS: Создает заказ -WTIS -> OMS: Возвращает модель заказа через workflow -OMS -> OMS: Проводит автооформление -OMS -> WTIS: Резервирует товары - -autonumber 9.9.1 -alt Успешно зарезервировано -WTIS -> OMS: Товары в заказе успешно зарезервированы -WTIS -> WTIS: Конец процесса - -else Не успешно зарезервировано -WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему -WTIS -> WTIS: Конец процесса -end - - -else Не подходит под условия OMS -autonumber 10.1 -OMS -> OMS: Не обрабатывает такой заказ -WTIS -> WTIS_database: Сохраняет заказ -WTIS_database -> WTIS: Заказ успешно сохранен -WTIS -> WTIS: Конец процесса -end - +@startuml +scale 1300x1300 +mainframe TO BE обмен по созданию заказа на сайте +Actor USER +participant SITE +database SITE_database +participant WTIS +database WTIS_database +queue kafka_1 +queue kafka_2 +participant OMS +database OMS_database +'-------------------------------------------action------------------- +autonumber + +USER -> SITE: Нажимает кнопку оформить заказ +SITE -> SITE_database: Проводит внутренние проверки\nи сохраняет в БД +SITE_database -> SITE: Заказ успешно сохранен + +autonumber 4.1 +alt Тип доставки в заказе: Самовывоз +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.pickup.created +else Тип доставки в заказе: Курьером +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.courier.created +else Тип доставки в заказе: ТК +SITE -> kafka_1: Записывает заказ в топик kafka: site.order.transport_company.created +end + +autonumber 5 +OMS -> kafka_1: Читает сообщения из топиков +OMS -> OMS: Проверяет условия для MVP +WTIS -> kafka_1: Читает сообщения из топиков +WTIS -> WTIS: Проверяет условия для MVP + +autonumber 9.1 +alt Подходит под условия OMS +WTIS -> WTIS: Не обрабатывает такой заказ +OMS -> OMS_database: Сохраняет заказ +OMS -> kafka_2: Записывает заказ в топик: oms.orders.sync +OMS_database -> OMS: Заказ успешно сохранен +WTIS -> kafka_2: Читает топик +WTIS -> WTIS: Создает заказ +WTIS -> OMS: Возвращает модель заказа через workflow +OMS -> OMS: Проводит автооформление +OMS -> WTIS: Резервирует товары + +autonumber 9.9.1 +alt Успешно зарезервировано +WTIS -> OMS: Товары в заказе успешно зарезервированы +WTIS -> WTIS: Конец процесса + +else Не успешно зарезервировано +WTIS -> WTIS: Ставит задачу на менеджера, меняет мастер-систему +WTIS -> WTIS: Конец процесса +end + + +else Не подходит под условия OMS +autonumber 10.1 +OMS -> OMS: Не обрабатывает такой заказ +WTIS -> WTIS_database: Сохраняет заказ +WTIS_database -> WTIS: Заказ успешно сохранен +WTIS -> WTIS: Конец процесса +end + @enduml \ No newline at end of file diff --git a/search/Mycroft.puml b/search/Mycroft.puml index e97f81b..47e98f6 100644 --- a/search/Mycroft.puml +++ b/search/Mycroft.puml @@ -1,37 +1,37 @@ -@startuml -'Параметры для интерфейсов -skinparam interface { - backgroundColor #1a2eff - borderColor black -} - -'Параметры для компонентов -skinparam component { - FontSize 13 - ArrowFontStyle Bold - FontName Times New Roman - BorderColor black - BackgroundColor #e6ffef - ArrowFontName Courier - ArrowColor #111111 - ArrowFontColor #111111 -} - -frame Mycroft_scheme #ededed { - -database MySql #turquoise { - [Sphinx] -} - -database ElasticSearch #turquoise { - [Sherlock] -} - -[request] --> [Sherlock] -[request] --> [Sphinx] -[Sherlock] --> [aggregate] -[Sphinx] --> [aggregate] -[aggregate] --> [csv_files]: save - -} +@startuml +'Параметры для интерфейсов +skinparam interface { + backgroundColor #1a2eff + borderColor black +} + +'Параметры для компонентов +skinparam component { + FontSize 13 + ArrowFontStyle Bold + FontName Times New Roman + BorderColor black + BackgroundColor #e6ffef + ArrowFontName Courier + ArrowColor #111111 + ArrowFontColor #111111 +} + +frame Mycroft_scheme #ededed { + +database MySql #turquoise { + [Sphinx] +} + +database ElasticSearch #turquoise { + [Sherlock] +} + +[request] --> [Sherlock] +[request] --> [Sphinx] +[Sherlock] --> [aggregate] +[Sphinx] --> [aggregate] +[aggregate] --> [csv_files]: save + +} @enduml \ No newline at end of file diff --git a/search/Sherlock scheme.puml b/search/Sherlock scheme.puml index c323fce..8e039a7 100644 --- a/search/Sherlock scheme.puml +++ b/search/Sherlock scheme.puml @@ -1,38 +1,38 @@ -@startuml -'Параметры для интерфейсов -skinparam interface { - backgroundColor #1a2eff - borderColor black -} - -'Параметры для компонентов -skinparam component { - FontSize 13 - ArrowFontStyle Bold - FontName Times New Roman - BorderColor black - BackgroundColor #e6ffef - ArrowFontName Courier - ArrowColor #111111 - ArrowFontColor #111111 -} - -frame Sherlock_scheme #ededed { - -database "Elasticsearch" #turquoise { - [database] -} - [user_request] -u-> http_request_autocomplete - [user_request] -u-> http_request_full_text - http_request_autocomplete -u-> [database] - http_request_full_text -u-> [database] - - note top of http_request_full_text: POST /api/v1/product - note top of http_request_autocomplete: POST /api/v1/autocomplete - - [database] -u-> [filtering, sorting] - [filtering, sorting] -u-> [response_for_user] - - [response_for_user] -u-> http_response -} +@startuml +'Параметры для интерфейсов +skinparam interface { + backgroundColor #1a2eff + borderColor black +} + +'Параметры для компонентов +skinparam component { + FontSize 13 + ArrowFontStyle Bold + FontName Times New Roman + BorderColor black + BackgroundColor #e6ffef + ArrowFontName Courier + ArrowColor #111111 + ArrowFontColor #111111 +} + +frame Sherlock_scheme #ededed { + +database "Elasticsearch" #turquoise { + [database] +} + [user_request] -u-> http_request_autocomplete + [user_request] -u-> http_request_full_text + http_request_autocomplete -u-> [database] + http_request_full_text -u-> [database] + + note top of http_request_full_text: POST /api/v1/product + note top of http_request_autocomplete: POST /api/v1/autocomplete + + [database] -u-> [filtering, sorting] + [filtering, sorting] -u-> [response_for_user] + + [response_for_user] -u-> http_response +} @enduml \ No newline at end of file diff --git a/search/Общий процесс autocomplete.puml b/search/Общий процесс autocomplete.puml index b8dd9b0..7b1bdb7 100644 --- a/search/Общий процесс autocomplete.puml +++ b/search/Общий процесс autocomplete.puml @@ -1,68 +1,68 @@ -@startuml -mainframe api/v1/autocomplete Общая схема -Actor user -participant BackendSite -participant Sherlock -Database ElasticSearch - -user -> BackendSite: Вводит запрос в поисковую строку -BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock -BackendSite -> Sherlock: REST POST api/v1/autocomplete -Sherlock -> Sherlock: Перевод запроса\nна второй язык -Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch - - note over Sherlock - Отправка запроса в - ElasticSearch с доп - сортировкой по категориям - из Спектра - endnote - - -alt ElasticSearch ничего не вернул -Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) -ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов - - note over Sherlock - Отправляются доп.запрос - в ElasticSearch с меньшим - процентом вхождения - endnote - -Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) -ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов - -Sherlock --> BackendSite: Получен пустой ответ -Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены - -else Найдены товары - - -alt Есть товары спектр - note over ElasticSearch - ЕСЛИ хоть один из четырех индексов - отдал ответ, ТО он отдается на бэкенд - endnote - -Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) - - note over ElasticSearch - Категории спектр поднимаются - наверх И товары внутри них - сортируются по скорингу - endnote - -else Товаров спектр не найдено -Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) - note over ElasticSearch - Товары сортируются - по скорингу - endnote -end - -ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров -Sherlock --> BackendSite: Список товаров -BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска - -end +@startuml +mainframe api/v1/autocomplete Общая схема +Actor user +participant BackendSite +participant Sherlock +Database ElasticSearch + +user -> BackendSite: Вводит запрос в поисковую строку +BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock +BackendSite -> Sherlock: REST POST api/v1/autocomplete +Sherlock -> Sherlock: Перевод запроса\nна второй язык +Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch + + note over Sherlock + Отправка запроса в + ElasticSearch с доп + сортировкой по категориям + из Спектра + endnote + + +alt ElasticSearch ничего не вернул +Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) +ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов + + note over Sherlock + Отправляются доп.запрос + в ElasticSearch с меньшим + процентом вхождения + endnote + +Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) +ElasticSearch --> Sherlock: Получен пустой ответ со всех 8-и запросов + +Sherlock --> BackendSite: Получен пустой ответ +Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены + +else Найдены товары + + +alt Есть товары спектр + note over ElasticSearch + ЕСЛИ хоть один из четырех индексов + отдал ответ, ТО он отдается на бэкенд + endnote + +Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) + + note over ElasticSearch + Категории спектр поднимаются + наверх И товары внутри них + сортируются по скорингу + endnote + +else Товаров спектр не найдено +Sherlock -> ElasticSearch: 8 запросов в 4 индекса: manufacturers,\ntagpage, categories, products на двух языках (RU, EN) + note over ElasticSearch + Товары сортируются + по скорингу + endnote +end + +ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров +Sherlock --> BackendSite: Список товаров +BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска + +end @enduml \ No newline at end of file diff --git a/search/Общий процесс filters.puml b/search/Общий процесс filters.puml index aebdd95..13ba320 100644 --- a/search/Общий процесс filters.puml +++ b/search/Общий процесс filters.puml @@ -1,55 +1,55 @@ -@startuml -mainframe api/v1/filters Общая схема -Actor user -participant BackendSite -participant Sherlock -Database ElasticSearch - -user -> BackendSite: Вводит запрос в поисковую строку -BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock - -BackendSite -> Sherlock: REST POST api/v1/filters -Sherlock -> Sherlock: Преобразование запроса\nв структуру и формирование\nзапроса для ElasticSearch - - note over Sherlock - Отправка запроса в - ElasticSearch с доп - сортировкой по категориям - из Спектра - endnote - - -alt ElasticSearch ничего не вернул -Sherlock -> ElasticSearch: REST GET products/_search -ElasticSearch --> Sherlock: Получен пустой ответ - - note over Sherlock - Отправляется доп.запрос - в ElasticSearch с меньшим - процентом вхождения - endnote - -Sherlock -> ElasticSearch: REST GET products/_search -ElasticSearch --> Sherlock: Получен пустой ответ -Sherlock --> BackendSite: Получен пустой ответ -Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены - -else Найдены товары -alt Есть товары спектр -Sherlock -> ElasticSearch: REST GET products/_search - note over ElasticSearch - Категории спектр - поднимаются наверх - endnote -else Товаров спектр не найдено -Sherlock -> ElasticSearch: REST GET products/_search -end - -ElasticSearch --> Sherlock: Передает список\nкатегорий и фильтров - -Sherlock --> BackendSite: Список категорий и фильтров - -BackendSite --> user: Пользователь получает фильтры\nна странице: Результаты поиска - -end +@startuml +mainframe api/v1/filters Общая схема +Actor user +participant BackendSite +participant Sherlock +Database ElasticSearch + +user -> BackendSite: Вводит запрос в поисковую строку +BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock + +BackendSite -> Sherlock: REST POST api/v1/filters +Sherlock -> Sherlock: Преобразование запроса\nв структуру и формирование\nзапроса для ElasticSearch + + note over Sherlock + Отправка запроса в + ElasticSearch с доп + сортировкой по категориям + из Спектра + endnote + + +alt ElasticSearch ничего не вернул +Sherlock -> ElasticSearch: REST GET products/_search +ElasticSearch --> Sherlock: Получен пустой ответ + + note over Sherlock + Отправляется доп.запрос + в ElasticSearch с меньшим + процентом вхождения + endnote + +Sherlock -> ElasticSearch: REST GET products/_search +ElasticSearch --> Sherlock: Получен пустой ответ +Sherlock --> BackendSite: Получен пустой ответ +Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены + +else Найдены товары +alt Есть товары спектр +Sherlock -> ElasticSearch: REST GET products/_search + note over ElasticSearch + Категории спектр + поднимаются наверх + endnote +else Товаров спектр не найдено +Sherlock -> ElasticSearch: REST GET products/_search +end + +ElasticSearch --> Sherlock: Передает список\nкатегорий и фильтров + +Sherlock --> BackendSite: Список категорий и фильтров + +BackendSite --> user: Пользователь получает фильтры\nна странице: Результаты поиска + +end @enduml \ No newline at end of file diff --git a/search/Общий процесс products.puml b/search/Общий процесс products.puml index 0e2f04b..e949fa5 100644 --- a/search/Общий процесс products.puml +++ b/search/Общий процесс products.puml @@ -1,64 +1,64 @@ -@startuml -mainframe api/v1/products Общая схема -Actor user -participant BackendSite -participant Sherlock -Database ElasticSearch - -user -> BackendSite: Вводит запрос в поисковую строку -BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock -BackendSite -> Sherlock: REST POST api/v1/products -Sherlock -> Sherlock: Перевод запроса\nна второй язык -Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch - - note over Sherlock - Отправка запроса в - ElasticSearch с доп - сортировкой по категориям - из Спектра - endnote - -alt ElasticSearch ничего не вернул -Sherlock -> ElasticSearch: REST GET products/_search RU -Sherlock -> ElasticSearch: REST GET products/_search EN -ElasticSearch --> Sherlock: Получен пустой ответ - - note over Sherlock - Отправляется доп.запрос - в ElasticSearch с меньшим - процентом вхождения - endnote - -Sherlock -> ElasticSearch: REST GET products/_search RU -Sherlock -> ElasticSearch: REST GET products/_search EN -ElasticSearch --> Sherlock: Получен пустой ответ -Sherlock --> BackendSite: Получен пустой ответ -Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены - -else Найдены товары - -alt Есть товары спектр -Sherlock -> ElasticSearch: REST GET products/_search RU -Sherlock -> ElasticSearch: REST GET products/_search EN - note over ElasticSearch - Категории спектр поднимаются - наверх И товары внутри них - сортируются по скорингу - endnote - -else Товаров спектр не найдено - -Sherlock -> ElasticSearch: REST GET products/_search RU -Sherlock -> ElasticSearch: REST GET products/_search EN - note over ElasticSearch - Товары сортируются - по скорингу - endnote -end - -ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров -Sherlock --> BackendSite: Список товаров -BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска - -end +@startuml +mainframe api/v1/products Общая схема +Actor user +participant BackendSite +participant Sherlock +Database ElasticSearch + +user -> BackendSite: Вводит запрос в поисковую строку +BackendSite -> BackendSite: Обработка запроса на бэкенде\n сайта и формирование запроса\nдля Sherlock +BackendSite -> Sherlock: REST POST api/v1/products +Sherlock -> Sherlock: Перевод запроса\nна второй язык +Sherlock -> Sherlock: Преобразование запроса\n в структуру и формирование\nзапроса для ElasticSearch + + note over Sherlock + Отправка запроса в + ElasticSearch с доп + сортировкой по категориям + из Спектра + endnote + +alt ElasticSearch ничего не вернул +Sherlock -> ElasticSearch: REST GET products/_search RU +Sherlock -> ElasticSearch: REST GET products/_search EN +ElasticSearch --> Sherlock: Получен пустой ответ + + note over Sherlock + Отправляется доп.запрос + в ElasticSearch с меньшим + процентом вхождения + endnote + +Sherlock -> ElasticSearch: REST GET products/_search RU +Sherlock -> ElasticSearch: REST GET products/_search EN +ElasticSearch --> Sherlock: Получен пустой ответ +Sherlock --> BackendSite: Получен пустой ответ +Sherlock --> user: Пользователь получает страницу:\nРезультаты не найдены + +else Найдены товары + +alt Есть товары спектр +Sherlock -> ElasticSearch: REST GET products/_search RU +Sherlock -> ElasticSearch: REST GET products/_search EN + note over ElasticSearch + Категории спектр поднимаются + наверх И товары внутри них + сортируются по скорингу + endnote + +else Товаров спектр не найдено + +Sherlock -> ElasticSearch: REST GET products/_search RU +Sherlock -> ElasticSearch: REST GET products/_search EN + note over ElasticSearch + Товары сортируются + по скорингу + endnote +end + +ElasticSearch --> Sherlock: Передает отсортированный\nсписок товаров +Sherlock --> BackendSite: Список товаров +BackendSite --> user: Пользователь получает страницу:\nРезультаты поиска + +end @enduml \ No newline at end of file