@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