Files
plantUML/Машина схема.puml
2025-12-19 12:45:15 +03:00

78 lines
3.9 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
actor Пользователь
participant "АРМ" as UI
participant "Gateway" as GW
participant "Scrooge\n(список причин)" as SCR
participant "Backend" as BE
participant "WorkFlow\nimportPriceSupplyToOrderWorkflow" as WF
participant "MongoDB" as ORD
participant "Productinfo\n(SKU в GUID)" as PI
participant "Scrooge\n(лимиты и скидки)" as LIM
participant "MS Product\n(названия товаров)" as PRD
autonumber
== Получение списка причин ==
Пользователь -> UI : нажимает «Импорт цен»
UI -> GW : GET /info/v1/discount-manual-types
GW -> SCR : вызов ручки получения типов
SCR --> GW : ответ 200 (список причин)
GW --> UI : ответ 200 (список причин)
UI -> UI : отображает список причин для выбора
Пользователь -> UI : выбирает причину
== Загрузка Excelфайла ==
Пользователь -> UI : прикрепляет Excel и нажимает «Загрузить»
UI -> GW : POST /orders/v1/{orderId}/products/import-price\n(file + manualType)
GW -> BE : перенаправляет запрос
== Парсинг Excel ==
BE -> BE : • парсинг\n• нормализация\n• базовая валидация
alt обнаружены бизнес‑ошибки при парсинге
BE -> BE : формирует ошибки\n(price_null, duplicate)
BE -> GW : ответ 200 + ошибки
GW -> UI : ответ 200 + ошибки
UI -> Пользователь : показывает список ошибок\nбизнес-ошибка "Товар не найден..."
end
BE -> WF : запускает WorkFlow (orderId, manualType, [{GUID/SKU, price}])
== WF — проверка товара ==
WF -> ORD : товар по GUID есть?
alt товар не найден
ORD --> WF : Ответ, что товар найден
WF -> PI : вызывает ConvertSkusToUids(SKU)\nhigh+low → GUID
PI --> WF : отдает GUID
WF -> ORD : повторная проверка по GUID
ORD --> WF : найден / нет
alt всё ещё не найден
WF -> WF : пропускает товар
end
end
== WF — проверка статусов ==
WF -> ORD : запрос статуса товара / заказа
ORD -> WF: ответ со статусом товара / заказа
alt статус недопустим
WF -> BE : бизнес‑ошибка «Корректировка недоступна…»
end
== WF — проверка цен ==
WF -> LIM : получает скидки по товарам
LIM --> WF : возможные скидки
WF -> WF : сравнивает цену из файла с минимальной доступной
alt цена ниже доступной
WF -> WF : устанавливает минимальную цену по правам
WF -> BE : бизнес‑ошибка «Цена ниже допустимой…»
end
== WF — обновление заказа ==
WF -> ORD : обновляет кучу полей с ценами и скидками\nлогирует корректировку цен
ORD --> WF : отдает результат выполнения скрипта
== Завершение ==
WF -> PRD : Отдает GUID товара
PRD --> WF : Получает SKU + Name товара
WF --> BE : отдает результат и ошибки
BE --> GW : ответ 200 + ошибки (если есть)
GW --> UI : ответ 200 + ошибки (если есть)
UI --> Пользователь : показывает ошибки (если есть)\nи обновленные цены
@enduml