@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
