add new schemes

This commit is contained in:
Andrey
2024-05-27 11:13:41 +03:00
parent e084f73d6b
commit 44480f67cf
13 changed files with 520 additions and 162 deletions

View File

@@ -0,0 +1,52 @@
@startuml
mainframe Получение заказов для отображения фильтров
autonumber
actor user
participant ARM
participant OMS
collections Redis
participant MSKB
database Database
user -> ARM: Устанавливает фильтры
alt устанавливает фильтр по ПВЗ
user -> ARM: Начинает вводить наименование ПВЗ
ARM -> OMS: Запрашивает список подходящих ПВЗ
OMS -> Redis: Запрашивает список ПВЗ
Redis --> OMS: Возвращает список ПВЗ
OMS --> ARM: Возвращает список ПВЗ
user -> ARM: Выбирает необходимый ПВЗ
ARM -> ARM: Запоминает идентификатор ПВЗ
else устанавливает фильтр по менеджеру
user -> ARM: Начинает вводить ФИО менеджера
ARM -> OMS: Запрашивает список подходящих менеджеров
OMS -> Redis: Запрашивает список менеджеров
Redis --> OMS: Возвращает список менеджеров
OMS --> ARM: Возвращает список менеджеров
user -> ARM: Выбирает необходимого менеджера
ARM -> ARM: Запоминает идентификатор менеджера
else устанавливает фильтр по КА
user -> ARM: Нажимает на фильтр по КА
ARM --> user: Открывает модальное окно "Поиск КА"
user -> ARM: Ищет необходимого КА
ARM -> OMS: Запрашивает список подходящих КА
OMS -> MSKB: Запрашивает список КА
MSKB --> OMS: Возвращает список КА
OMS --> ARM: Возвращает список КА
user -> ARM: Выбирает необходимого КА
ARM -> ARM: Запоминает идентификатор КА
end
alt Необходимы сортировки
user -> ARM: Выбирает необходимую сортировку
ARM -> ARM: Запоминает выбор пользователя
else Не устанавливаются сортировки
end
user -> ARM: Нажимает кнопку Enter или "Обновить"
ARM -> ARM: Формирует запрос на bf
ARM -> OMS: Отправляет запрос
OMS -> Database: Запрашивает список заказов\nс установленными фильтрами
Database --> OMS: Ответ
OMS --> ARM: Ответ
ARM --> user: Отображает журнал заказов
@enduml

View File

@@ -0,0 +1,29 @@
@startuml
mainframe Получение заказов для отображения фильтров
autonumber
actor user
participant ARM
participant OMS
database Database
user -> ARM: Вводит один или несколько номеров заказов
ARM -> ARM: Делит строку по пробелам
alt Необходимы сортировки
user -> ARM: Выбирает необходимую сортировку
ARM -> ARM: Запоминает выбор пользователя
else Не устанавливаются сортировки
end
user -> ARM: Нажимает кнопку Enter или "Обновить"
ARM -> ARM: Формирует запрос
ARM -> OMS: Отправляет запрос на bf
OMS -> OMS: Проверяет есть ли объекты длиной 5 символов
alt Если такие объекты есть
OMS -> OMS: Формирует запрос с регулярным выражением,\nгде поиск осуществляется\nпо последним 5 символам строки
else Если таких объектов нет
OMS -> OMS: Формирует стандартный запрос в БД
end
OMS -> Database: Запрашивает список заказов по выбранным параметрам
Database --> OMS: Ответ
OMS --> ARM: Ответ
ARM --> user: Отображает журнал заказов
@enduml

View File

@@ -0,0 +1,58 @@
@startuml
mainframe TO BE применение акций и скидок в заказе B2C
scale 1500x1500
actor user as user
participant ARM
participant Sherlock
participant Gateway
participant Order
participant PDM
participant Druz
participant SCROOGE
participant Promo
autonumber
user -> ARM: Нажимает кнопку "Применить скидки"
ARM -> ARM: Рендерит модальное окно
ARM -> ARM: Акции сайта - чекбокс активен
ARM -> ARM: Скидки, выбрано: Без скидки
autonumber 5.1
alt Выбирает только скидки уровня ОПТ
user -> ARM: Выбирает тип ОПТа для клиента
user -> ARM: Снимает чекбокс "Акции сайта"
user -> ARM: Нажимает кнопку "Применить"
ARM -> Gateway: Передает запрос
Gateway -> Gateway: Получает название региона из кэша
Gateway -> SCROOGE: Запрашивает цены из SCROOGE согласно уровню ОПТа
SCROOGE --> Gateway: answer
autonumber 6.1
else Выбирает только акции сайта
user -> ARM: Оставляет чекбокс "Акции сайта"
user -> ARM: Оставляет скидку с типом "Без скидки"
user -> ARM: Нажимает кнопку "Применить"
ARM -> Gateway: Передает запрос
Gateway -> Gateway: Получает название региона из кэша
Gateway -> Gateway: Готовит запрос в promo
Gateway -> Promo: Запрашивает акции и цены по товарам из Promo
Promo --> Gateway: answer
autonumber 7.1
else Выбирает акции и скидки ОПТ
user -> ARM: Выбирает тип ОПТа для клиента
user -> ARM: Оставляет чекбокс "Акции сайта"
user -> ARM: Нажимает кнопку "Применить"
ARM -> Gateway: Передает запрос
Gateway -> Gateway: Получает название региона из кэша
Gateway -> Gateway: Готовит запрос в promo
Gateway -> Promo: Запрашивает акции и цены по товарам из Promo
Promo --> Gateway: answer
Gateway -> SCROOGE: Запрашивает цены из SCROOGE согласно уровню ОПТа
SCROOGE --> Gateway: answer
Gateway -> Gateway: Применяет наименьшие цены\nк каждому из товаров
end
autonumber 8
Gateway -> Order: Записывает изменения в модель
Order --> Gateway: Изменения успешно применены
Gateway -> Gateway: Собирает ответ для frontend
Gateway --> ARM: Answer
ARM -> user: Отображает примененные акции
@enduml

251
oms/order mongoDB.puml Normal file
View File

@@ -0,0 +1,251 @@
@startjson
<style>
' Общий стиль схемы задан здесь
jsonDiagram {
node {
LineColor #000
FontName Helvetica
FontColor black
FontSize 18
FontStyle bold
}
arrow {
LineColor #000
LineThickness 3
LineStyle 2
}
highlight {
BackGroundColor #e5e5e5
FontColor black
}
}
' Здесь находятся расцветки изменений. Необходимо создать новый объект по образу .firstChange
.firstChange {
FontColor blue
}
</style>
' Здесь указываем какие атрибуты нужно подсвечивать в схеме
#highlight "order" / "Recipient" / "ID" <<firstChange>>
#highlight "order" / "Recipient" / "RecipientAddress" <<firstChange>>
#highlight "order" / "Recipient" / "RecipientPhone" <<firstChange>>
#highlight "order" / "Recipient" / "RecipientName" <<firstChange>>
{
"order": {
"orderID": "uuid || Номер заказа",
"managerInfo": {
"CreatedBy": "uuid || Идентификатор автора заказа из AD",
"CreatedFullName": "string || ФИО автора заказа",
"UpdatedBy": "uuid || Идентификатор последнего обновлявшего заказ",
"UpdatedFullName": "string || ФИО последнего обновлявшего заказ",
"ManagerGroup": "int || Идентификатор группы менеджера",
"ManagerPhoneNumber": "string || Номер телефона менеджера",
"ManagerExtensionNumber": "string || Добавочный номер телефона менеджера"
},
"RootOrder": "uuid || UUID корневого заказа",
"Number": "string || Номер заказа в формате ****-******-*****",
"OrderStatus": "int || Идентификатор статуса заказа (от 0 до 7)",
"Contractor": {
"Type": "int || Тип контрагента.",
"B2CContractor": {
"Person": {
"ID": "uuid || Идентификатор (UUID) контрагента",
"FullName": "string || Полное ФИО КА",
"Phone": "string || Номер телефона КА",
"Email": "string || Email адрес КА"
}
},
"B2BContractor": {
"ID": "uuid || Идентификатор (UUID) контрагента",
"Name": "string || Полное наименование КА",
"TIN": "string || Номер ИНН",
"ContactPersons (array)": {
"Person": {
"ID": "uuid || Идентификатор (UUID) контрагента",
"FullName": "string || Полное ФИО КА",
"Phone": "string || Номер телефона КА",
"Email": "string || Email адрес КА"
},
"SmsPhoneNumber": "string || Номер телефона для СМС"
},
"CurrentContactPersonID": "uuid || ID выбранного КЛ для заказа",
"Curator": {
"ID": "uuid || Идентификатор куратора",
"FullName": "string || ФИО куратора"
},
"Contract": {
"ID": "uuid || Идентификатор договора",
"Number": "string || Номер договора",
"Kind": "int || Тип договора"
},
"BaseDocumentSettings": {
"GovernmentContractID": "string || Идентификатор государственного контракта",
"InvoiceTransferBasis": "string || Основание передачи в счете на оплату",
"ShippingDocuments": {
"TransferBasisDocument": "string || документ-основание передачи(сдачи)/получения(приемки)",
"TransferBasisAdditionalDetails": "string || Дополнительные сведения основания передачи",
"OtherInformation": "string || Иные сведения"
}
}
}
},
"Recipient": {
"ID": "uuid || Идентификатор (UUID) грузополучателя",
"RecipientName": "string || Имя грузополучателя заказа",
"RecipientPhone": "string || Номер телефона грузополучателя",
"RecipientAddress": "string || Адрес грузополучателя"
},
"Properties": {
"BasicTimestamps": {
"CreatedAt": "date-time || Дата и время создания заказа",
"UpdatedAt": "date-time || Дата и время последнего обновления заказа"
},
"OriginID": "int || Идентификатор источника заказа",
"SiteOrderDate": "date-time || Дата и время заказа выбранное на сайте",
"OrderComment": "string || Комментарий к заказу. Во wtis: primSklad",
"TtnNumber": "string || Номер ТТН",
"TtnDate": "string || Дата ТТН",
"IsPartialShipmentFromSite": "bool || Признак ЧО с сайта",
"PaymentAmount": "float || Сумма внесенной оплаты",
"BookingEndDates": "array || Массив с датами истечения бронирования заказа",
"IsPrepaymentRequired": "bool || Признак Необходима предоплата",
"RegionGUID": "uuid || Идентификатор (UUID) региона",
"RegionName": "string || Наименование региона",
"TypeOrderFromSite": "string || Тип заказа с сайта. normal / fast",
"Firma": "GUID фирмы отгружающей товар."
},
"Artifacts": {
"PartialShipment": "bool || Признак Частичная отгрузка",
"OrderMasterSystem": "string || Признак мастер-система по заказу",
"KkmDate": "string || Дата ККМ",
"KkmAmount": "float || Сумма оплаты через ККМ",
"PaymentKkm": "bool || Признак оплата через ККМ",
"PaymentCb": "bool || Признак оплата по счету",
"PaymentCard": "bool || Признак картой",
"IsEwalletPayment": "bool || Признак оплата с сайта",
"OrderStateWtis": "int || Состояние заказа из WTIS",
"AttbOplata": "int || Статус оплаты (0 - Не оплачено, 1 - Частичная оплата, 2 - Оплачено). || deprecated",
"OrderStatusWtis": "int || Статус заказа из WTIS",
"IsPromoEnabled": "bool || Признак, что сайт взаимодействует с МС Promo и берет распродажную инфу оттуда.",
"IsYandexEnabled": "bool || Признак, что адрес передается в новом формате для курьерки."
},
"Supplies (array)": {
"ID": "uuid || Идентификатор поставки",
"ShipmentID": "uuid || Идентификатор шипмента",
"ProductID": "uuid || Идентификатор номенклатуры",
"SourceOffice": "uuid || Идентификатор склада на котором находится товар",
"ReserveTo": "date-time || Дата резерв до",
"PurchaseIDs": "array || Массив идентификаторов закупки",
"UnreserveDate": "date-time || Дата фактического снятия с резерва товара",
"Quantity": "int || Количество товара в доставке. Суммарное количество должно быть равно quantity в items",
"StatusItem": "int || Идентификатор статуса товара",
"Artifacts": {
"StatusItemWtis": "int || Клиентский статус товара из WTIS",
"Attb": "Состоние товара из WTIS",
"FlagReturn": "bool || Признак Возврат товара. 1 - товар с вкладки Возвраты, 0 - для товаров с вкладки Товары.",
"FlagReturnedToSklad": "bool || Принят на склад",
"AppendUser": "uuid || ID пользователя кто добавил поставку",
"ChangeUser": "uuid || ID пользователя кто последний изменил поставку"
},
"DateCanDeliver": "date-time || Дата 'Сможем доставить'.",
"CreatedAt": "date-time || Дата создания поставки",
"UpdatedAt": "date-time || Дата последнего обновления поставки",
"Prices": {
"DiscountPrice": "float || Сумма скидки",
"DiscountCategory": "string || Категория скидки",
"DiscountReason": "string || Причина скидки",
"InitialPrice": "float || Начальная цена",
"PurchasePrice": "float || Цена закупки",
"Price": "float || Цена товара",
"Discount": "float || Процент скидки",
"ClearanceSaleID": "uuid || Идентификатор распродажи",
"IsPromoCodeUsed": "bool || Флаг использования промокода",
"PromotionID": "int || Идентификатор акции из МС Promo",
"ExtraCost": "float || Цена доставки на единицу товара"
},
"IsRestored": "bool || Признак восстановления поставки.",
"DeliveryDate": "date-time || Дата доставки"
},
"Shipment": {
"Meta": {
"ID": "uuid || Идентификатор shipment",
"OrderID": "uuid || Идентификатор заказа",
"MethodID": "int || Идентификатор шипмента",
"Status": "int || Статус доставки",
"DeliveryDate": "date-time || Дата доставки",
"Services": {
"Settings": {
"SpreadExtraCost": "bool || Размазать стоимость доставки по товарам связанным с доставкой"
}
},
"CreatedAt": "date-time || Дата создания доставки",
"UpdatedAt": "date-time || Дата последнего обновления доставки"
},
"ShipmentPickup": {
"OfficeGUID": "uuid || Идентификатор офиса"
},
"ShipmentCourier": {
"FactDeliveryBoy": "uuid || Идентификатор курьера который отдал заказ",
"FreeReason": "int || Причина бесплатной доставки",
"FiasID": "uuid || FIAS идентификатор адреса доставки",
"IntervalGUID": "uuid || Идентификатор интервала курьерской доставки",
"DeliveryAregGUID": "uuid || Идентификатор AREG адреса доставки",
"AddressTail": {
"AddressTailID": "uuid || Идентификатор хвоста адреса",
"Flat": "int || Номер квартиры",
"Entrance": "int || Подъезд",
"Floor": "int || Этаж",
"AddressComment": "string || Комментарий к адресу",
"ContactNumber": "string || Контактный номер в адресе доставки"
},
"IntervalValue": "string || Значение интервала доставки",
"Latitude": "string || Широта адреса доставки",
"Longitude": "string || Долгота адреса доставки",
"CourierGUID": "uuid || Идентификатор курьера в заказе",
"DeliveryBoyName": "string || ФИО курьера в заказе",
"AddrDostav": "string || Адрес доставки",
"CourierDeliveryCost": "int || Стоимость доставки",
"CourierComment": "string || Комментарий для курьера"
},
"ShipmentTKPickup": {
"TransportCompanyID": "uuid || Идентификатор транспортной компании",
"TransportCompanyCityID": "uuid || Идентификатор города ТК",
"TransportCompanyCityName": "string || Название города ТК",
"TransportCompanyExternalCode": "string || Внешний код офиса ТК в системе CDEK",
"TransportCompanyTariffID": "uuid || Идентификатор тарифа ТК",
"TransportCompanyTariffName": "string || Наименование тарифа",
"CourierDeliveryCost": "int || Стоимость доставки",
"CourierComment": "string || Комментарий для курьера"
},
"shipmentTKCourier": {
"TransportCompanyID": "uuid || Идентификатор транспортной компании",
"TransportCompanyCityID": "uuid || Идентификатор города ТК",
"TransportCompanyCityName": "string || Название города ТК",
"TransportCompanyExternalCode": "string || Внешний код офиса ТК в системе CDEK",
"TransportCompanyTariffID": "uuid || Идентификатор тарифа ТК",
"TransportCompanyTariffName": "string || Наименование тарифа",
"IntervalValue": "string || Значение интервала доставки",
"Latitude": "string || Широта адреса доставки",
"Longitude": "string || Долгота адреса доставки",
"AddrDostav": "string || Адрес доставки",
"FiasID": "uuid || FIAS идентификатор адреса доставки",
"IntervalGUID": "uuid || Идентификатор интервала курьерской доставки",
"DeliveryAregGUID": "uuid || Идентификатор AREG адреса доставки",
"AddressTail": {
"AddressTailID": "uuid || Идентификатор хвоста адреса",
"Flat": "int || Номер квартиры",
"Entrance": "int || Подъезд",
"Floor": "int || Этаж",
"AddressComment": "string || Комментарий к адресу",
"ContactNumber": "string || Контактный номер в адресе доставки"
},
"CourierDeliveryCost": "int || Стоимость доставки",
"DeliveryWay": "int || Тип доставки, через транспортную компанию",
"CourierComment": "string || Комментарий для курьера"
}
}
}
}
@endjson

View File

@@ -1,32 +0,0 @@
@startjson
{
"ShipmentDoc":{
"ShipmentMeta":{
"id":"uuid || Идентификатор доставки",
"OrderID":"uuid || Идентификатор заказа",
"MethodId":"int(enum) || Способы доставки",
"DeliveryDate":"datetime || Дата доставки",
"Services":{
"Settings":{
"SpreadExtraCost":"bool || Размазать стоимость доставки по товарам связанным с доставкой"
}
},
"CreatedAt":"datetime || Дата создания доставки",
"UpdatedAt":"datetime || Дата обновления доставки",
"Artifact": {
"DeliveryWith":"string || Начальный временной промежуток курьерской доставки",
"TrackingNumberId":"int || Удалить, бесполезное поле",
"PartnerDeliverTo":"string || ??? ",
"DestinationOfficeID":"int || Идентификатор офиса, откуда везем товар",
"DeliveryOn":"string || Верхняя граница часов доставки ",
"DeliveryType":"bool || - обычная доставка 1 - доставка строительных материалов",
"DeliveryZone":"int || id зоны доставки строительных материалов из таблицы wtis_ref_town_zone ",
"VeerouteExportDate":"datetime || Дата выгрузки в Veeroute ",
"AddressID":"int || Идентификатор адреса доставки (внутренний от WTIS) "
}
},
"": {
}
}
}
@endjson