63 lines
2.8 KiB
Plaintext
63 lines
2.8 KiB
Plaintext
@startuml
|
||
participant "Топик сообщений" as Topic
|
||
participant "Сервис обработки" as Service
|
||
participant "База данных" as DB
|
||
participant "МСКБ API" as MSKB
|
||
participant "Bifrost API" as Bifrost
|
||
participant "CRM API" as CRM
|
||
participant "TOUCH API" as TOUCH
|
||
|
||
Topic -> Service: Сообщение с letter_guid,\ncontractor_guid,\ncontact_person_guid,\ncommodity_guid
|
||
activate Service
|
||
|
||
Service -> DB: Проверить заказ по autoBotLetterGuid=letter_guid
|
||
alt Заказ уже существует
|
||
Service --> Topic: Пропустить сообщение
|
||
deactivate Service
|
||
else Заказа нет
|
||
Service -> Service: Валидация contractor_guid
|
||
alt contractor_guid пустой
|
||
Service -> DB: Найти контрагента по contact_person_guid\nв последних заказах
|
||
alt Контрагент не найден
|
||
Service --> Topic: Завершить обработку
|
||
deactivate Service
|
||
else Найден contractor_guid
|
||
end
|
||
else несколько contractor_guid
|
||
Service -> DB: Найти последний завершенный заказ\nдля каждого contractor_guid
|
||
end
|
||
|
||
Service -> Service: Валидация contact_person_guid
|
||
alt contact_person_guid пустой
|
||
Service -> MSKB: /api/business/v2/physic/\nпоиск по letter_from
|
||
alt Не найдено
|
||
Service -> DB: Найти в последнем заказе\nпо contractor_guid
|
||
end
|
||
end
|
||
|
||
Service -> Service: Валидация commodity_guid
|
||
alt commodity_guid пустые
|
||
Service --> Topic: Завершить обработку
|
||
deactivate Service
|
||
end
|
||
|
||
Service -> DB: Найти последний завершенный заказ\nдля получения shipment данных
|
||
Service -> MSKB: /api/business/v2/juristic/search\nполучить GUID менеджера
|
||
Service -> Bifrost: bifrost.v1.ActiveDirectoryService/GetUserByID\nпроверить email менеджера
|
||
alt email != letter_to
|
||
Service --> Topic: Завершить обработку
|
||
deactivate Service
|
||
end
|
||
|
||
Service -> Service: Создать заказ
|
||
Service -> DB: createOrder
|
||
Service -> Service: Автооформление заказа (flowId=6)
|
||
Service -> DB: Обновить заказ\n(IsAutoBotOrder=true,\nautoBotLetterGuid=letter_guid)
|
||
|
||
Service -> CRM: Создать задачу менеджеру\n"Заказ не прошел АО..."
|
||
Service -> TOUCH: /api/v1/jsonapi/send-email-message\nОповестить менеджера
|
||
|
||
Service --> Topic: Обработка завершена
|
||
deactivate Service
|
||
end
|
||
@enduml |