@startuml
scale 800*800
mainframe Взаимодействие с историей изменения заказ
actor Пользователь as user
participant ARM as ARM
participant OMS as OMS
participant History as History
autonumber

user -> ARM: Нажимает кнопку "История изменений"
ARM -> OMS: REST GET /order-history
OMS -> History: REST GET api/v1/order_history_short/
History --> OMS: answer
OMS --> ARM: answer
ARM --> user: Рендерит страницу "История изменений"

user -> ARM: Нажимает кнопку "Подробнее" в корректировке
ARM -> OMS: REST GET /order-history-event
OMS -> History: REST GET api/v1/event_changed/
History --> OMS: answer
OMS --> ARM: answer
ARM --> user: Отображает полную информацию о корректировке

user -> ARM: Выбирает фильтр по дате или по типу корректировки
ARM -> OMS: REST GET /order-history-filters
OMS -> History: REST GET api/v1/events_from_entity/
History --> OMS: answer
OMS --> ARM: answer
ARM --> user: Отображает корректировки по заданным условиям

user -> ARM: Вводит идентификатор корректировки и нажимает Enter
ARM -> OMS: REST GET /order-history-event
OMS -> History: REST GET api/v1/event_changed/
History --> OMS: answer
OMS --> ARM: answer
ARM --> user: Отображает корректировки по заданным условиям

@enduml




@startuml
scale 1000*1000
mainframe Взаимодействие с историей изменения заказа
actor Пользователь as user
participant ARM as ARM
participant Gateway as Gateway
participant History as History
participant Bifrost as Bifrost
autonumber

user -> ARM: Нажимает кнопку "История изменений"
ARM -> Gateway: REST GET /history/v1/order/{orderID}
Gateway -> History: gRPC GetChangesByOrderIDAndParameters()
History --> Gateway: EventsByOrderIDResponse
Gateway -> Bifrost: gRPC GetUsersByIDs() [для получения имен менеджеров]
Bifrost --> Gateway: UserInfo[]
Gateway --> ARM: Таблица истории изменений с именами менеджеров
ARM --> user: Рендерит модальное окно "История изменений"

user -> ARM: Нажимает кнопку "Подробнее" в корректировке
ARM -> Gateway: REST GET /history/v1/events?eventIDs=[eventID]
Gateway -> History: gRPC GetEventChangesByIDs()
History --> Gateway: EventChangesByIDResponse[]
Gateway -> Bifrost: gRPC GetUserByIDV2() [для получения имени менеджера]
Bifrost --> Gateway: UserInfo
Gateway --> ARM: Таблица истории изменений с именами менеджеров
ARM --> user: Отображает полную информацию о корректировке

user -> ARM: Выбирает фильтр по дате или по типу корректировки
ARM -> Gateway: REST GET /history/v1/order/{orderID}?eventCorrectionType=...&createdAts=...
Gateway -> History: gRPC GetChangesByOrderIDAndParameters() [с фильтрами]
History --> Gateway: EventsByOrderIDResponse
Gateway -> Bifrost: gRPC GetUsersByIDs() [для получения имен менеджеров]
Bifrost --> Gateway: UserInfo[]
Gateway --> ARM: Таблица истории изменений с именами менеджеров
ARM --> user: Отображает корректировки по заданным условиям

user -> ARM: Вводит идентификатор корректировки и нажимает Enter
ARM -> Gateway: REST GET /history/v1/events?eventIDs=[eventID]
Gateway -> History: gRPC GetEventChangesByIDs()
History --> Gateway: EventChangesByIDResponse[]
Gateway -> Bifrost: gRPC GetUserByIDV2() [для получения имени менеджера]
Bifrost --> Gateway: UserInfo
Gateway --> ARM: История изменений с именами менеджеров
ARM --> user: Отображает корректировки по заданным условиям

@enduml

@startuml
scale 1200*1200
mainframe Взаимодействие с историей изменения заказа
actor Пользователь as user
participant ARM as ARM
participant Gateway as Gateway
participant History as History
participant Bifrost as Bifrost
autonumber

user -> ARM: Нажимает кнопку "История изменений"
ARM -> Gateway: REST GET /history/v1/filters
Gateway -> History: gRPC GetTypesOfEvents()
History --> Gateway: AvailableActions (список типов событий)
Gateway --> ARM: HistoryFiltersList (eventCorrectionType[])
ARM -> Gateway: REST GET /history/v1/order/{orderID}
Gateway -> History: gRPC GetChangesByOrderIDAndParameters()
History --> Gateway: EventsByOrderIDResponse
Gateway -> Bifrost: gRPC GetUsersByIDs() [для получения имен менеджеров]
Bifrost --> Gateway: UserInfo[]
Gateway --> ARM: HistoryList (события с именами менеджеров)
ARM --> user: Рендерит модальное окно "История изменений" с фильтрами

user -> ARM: Нажимает кнопку "Подробнее" в корректировке
ARM -> Gateway: REST GET /history/v1/events?eventIDs=[eventID]
Gateway -> History: gRPC GetEventChangesByIDs()
History --> Gateway: EventChangesByIDResponse[]
Gateway -> Bifrost: gRPC GetUserByIDV2() [для получения имени менеджера]
Bifrost --> Gateway: UserInfo
Gateway --> ARM: HistoryEvent (с полными изменениями)
ARM --> user: Отображает полную информацию о корректировке

alt Первый тип поиска по дате и/или типу корректировки
user -> ARM: Выбирает фильтр по дате или по типу корректировки
ARM -> Gateway: REST GET /history/v1/order/{orderID}?eventCorrectionType=...&createdAts=...
Gateway -> History: gRPC GetChangesByOrderIDAndParameters() [с фильтрами]
History --> Gateway: EventsByOrderIDResponse
Gateway -> Bifrost: gRPC GetUsersByIDs() [для получения имен менеджеров]
Bifrost --> Gateway: UserInfo[]
Gateway --> ARM: HistoryList (отфильтрованные события)
ARM --> user: Отображает корректировки по заданным условиям
else Второй тип поиска по идентификатору корректировки
user -> ARM: Вводит идентификатор корректировки и нажимает Enter
ARM -> Gateway: REST GET /history/v1/events?eventIDs=[eventID]
Gateway -> History: gRPC GetEventChangesByIDs()
History --> Gateway: EventChangesByIDResponse[]
Gateway -> Bifrost: gRPC GetUserByIDV2() [для получения имени менеджера]
Bifrost --> Gateway: UserInfo
Gateway --> ARM: HistoryEvent (с полными изменениями)
ARM --> user: Отображает корректировки по заданным условиям
end

@enduml