Files
plantUML/oms-ddc/oms-ddc.puml
2025-12-19 12:45:15 +03:00

77 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@startuml
autonumber
boundary LT_trigger
queue logistic_tracker.logistic_order_changes as kafka_lt
participant DDC
participant OMS_Order
queue touch.events as Touch
database db
loop
LT_trigger -> kafka_lt: Событие изменения лог заказа
DDC -> kafka_lt: Читает сообщение
end
alt customer_shipment.now > customer_shipment.before is False
DDC -> DDC: пропускает сообщение
else customer_shipment.now > customer_shipment.before is True
DDC -> OMS_Order: Ожидает подтверждение\nпереноса ДД от OMS через wf
alt Сигнал с подтверждением переноса ДД не пришло
DDC -> DDC: Прекращает ожидание события
else Сигнал с подтверждением переноса ДД пришло
OMS_Order -> DDC: Сигнал с подтверждением переноса ДД
DDC -> DDC: Проверяет что не было уведомлений\nпо заказу в течении этих суток
alt Было уведомление в последние сутки
DDC -> DDC: Пропускает данное изменение
else Не было уведомлений в последние сутки
DDC -> DDC: Проверяет заказ робота или клиента?
alt Заказ робота
DDC -> CRM: Отправка сообщения в топик CRM
DDC -> db: Записывает данные о поставленной задаче в БД
else Заказ клиента
DDC -> OMS_Order: Получить данные по заказу
OMS_Order -> DDC: Вернуть данные по заказу
DDC -> DDC: Подготовить данные для\nотправки в топик Touch
DDC -> Touch: Отправить нотификацию в топик Touch (b2c смс, b2b email)
DDC -> db: Записывает данные о нотификации клиента в БД
end
end
end
end
@enduml
@startuml
start
:DDC читает топик LT;
if (customer_shipment.now > customer_shipment.before is False) then
:Пропускает сообщение;
kill
else
:DDC Ожидает подтверждение\nпереноса ДД от OMS через wf;
endif
if (Сигнал с подтверждением переноса ДД пришел?) then (нет)
:Прекращает ожидание события\nничего не делает;
kill
else (да)
if (Событие уведомления по заказу было в течении суток?) then (да)
:Пропускает событие;
kill
else (нет)
endif
if (Заказ назначен на менеджера?) then (да)
:Отправка сообщения в топик CRM;
:Записывает данные о поставленной задаче в БД;
else (нет (заказ робота))
:Отправить нотификацию в топик Touch (b2c смс, b2b email);
:Записывает данные о нотификации клиента в БД;
endif
stop
@enduml