# I. Design ## 1. Overview ```userstory ``` ```plantuml |#lime|Kafka| start :Streaming order events; |#pink|Pricing rule| :Comsuming events; :Transformance to DTO; :Call api to get price; |#pink|Pricing rule| :Get rule realtime from cache; |#orange|Redis| :Return rule; |Pricing rule| if (rule is valid - not null) then (yes) :Continue calculate; else (no) :Get rule from Master DB; |#thistle|Master db| :Return rule; |Pricing rule| if (rule is valid - not null) then (yes) :Continue calculate; else (no) :Notify to Error rule; |#silver|Notify service| :Save to log; endif endif |Pricing rule| :Continue caclulate; :Calculate price; :Save to master db; |Master db| :Save to db; |Pricing rule| :Caching to redis; |Redis| :Cahing to redis; stop @enduml ``` ## 2. User story: Người dùng update rule qua template ```userstory Là người dùng(quản trị) muốn cập nhật rule cho tính toán mới nhất ``` ```plantuml |#plum|USER| start :Request template phần tử bảng giá; |#pink|RULE SYSTEM(Policy)| :Response template phần tử bảng giá tương ứng; |USER| :Upload template lên Pricing service; |#orchid|PRICING Web| :Reponse dữ liệu bảng giá drl; |USER| :Upload drl to RULE system; |RULE SYSTEM(Policy)| :Update insert drl; |#thistle|Master db(Mariadb)| :Upsert to db; |RULE SYSTEM(Policy)| :Caching to redis; |#orange|Redis| :Update rule; stop @enduml ``` ## 3. User story: Người dùng tìm kiếm rule ```userstory Người dùng muốn tìm kiếm, xem chi tiết các rule đang hiện hành ``` ```plantuml |#orangeRed|USER| start :Vào màn hình list danh sách rule; |Pricing rule| :List all rules; |USER| :Select rule to get info; :Click to download or view rule; |#pink|Pricing rule| :Return rule action from user; stop @enduml ``` # II. Bảng giá ```mermaid flowchart LR Pricing(Bảng giá)-->ExtraService(Bảng giá dịch vụ cộng thêm) Pricing-->OtherService(Phụ phí hàng hóa đặc biệt) Pricing-->EconomicalDelivery(Dịch vụ chuyển phát tiết kiệm) Pricing-->ExpressDelivery(Dịch vụ chuyển phát hỏa tốc, hẹn giờ) Pricing-->FastDelivery(Dịch vụ chuyển phát nhanh) ``` ## 1. Dịch vụ cộng thêm ```mermaid flowchart LR style ExtraService fill:#F8F8F8,stroke:#666,stroke-width:2px; ExtraService(Dịch vụ cộng thêm)-->BK(1.Bảo hiểm và khai giá) ExtraService(Dịch vụ cộng thêm)-->DK(2.Đồng kiểm) ExtraService(Dịch vụ cộng thêm)-->LK(3.Lưu kho) ExtraService(Dịch vụ cộng thêm)-->TDTT(4.Thay đổi thông tin địa chỉ đơn hàng) ExtraService(Dịch vụ cộng thêm)-->BP(5.Báo phát) ExtraService(Dịch vụ cộng thêm)-->PTT(6. Phát tận tay) ExtraService(Dịch vụ cộng thêm)-->PHST(7. Phát hàng siêu thị) ExtraService(Dịch vụ cộng thêm)-->GHMP(8. Giao hàng một phần) ExtraService(Dịch vụ cộng thêm)-->DH(9. Đổi hàng) ExtraService(Dịch vụ cộng thêm)-->TTXH(10. Thu tiền xem hàng) ExtraService(Dịch vụ cộng thêm)-->PTDGD(11. Phát tại điểm giao dịch) ExtraService(Dịch vụ cộng thêm)-->ZALO(12. Zalo thông báo đơn hàng) ExtraService(Dịch vụ cộng thêm)-->SMS(13. SMS thông báo đơn hàng) ExtraService(Dịch vụ cộng thêm)-->HC(14. Dịch vụ hoàn cước) ``` ## 2. Dịch vụ hàng hóa đặc biệt ```mermaid flowchart LR OtherService(Dịch vụ hàng đặc biệt)-->GTC(1. Hàng giá trị cao) OtherService(Dịch vụ hàng đặc biệt)-->HD(2. Hóa đơn, giấy chứng nhận) OtherService(Dịch vụ hàng đặc biệt)-->HST(3. Hồ sơ thầu) OtherService(Dịch vụ hàng đặc biệt)-->HDV(4. Hàng dễ vỡ) OtherService(Dịch vụ hàng đặc biệt)-->HNK(5. Hàng nguyên khối) OtherService(Dịch vụ hàng đặc biệt)-->HQK(6. Hàng quá khổ) OtherService(Dịch vụ hàng đặc biệt)-->HCL(7. Chất lỏng) OtherService(Dịch vụ hàng đặc biệt)-->HTT(8. Hàng từ tính,PIN) OtherService(Dịch vụ hàng đặc biệt)-->HL(9. Hàng lạnh) ``` ## 3. Dịch vụ chuyển phát tiết kiệm ```mermaid flowchart TD TKS(Dịch vụ chuyển phát tiết kiệm)-->NM(Nội miền) TKS(Dịch vụ chuyển phát tiết kiệm)-->CM(Cận miền) TKS(Dịch vụ chuyển phát tiết kiệm)-->LM(Liên miền) ``` ## 4. Dịch vụ chuyển phát thương mại điện tử ```mermaid flowchart TD TMDT(Chuyển phát thương mại điện tử)-->NT(Nội tỉnh) TMDT(Chuyển phát thương mại điện tử)-->NM(Nội miền) TMDT(Chuyển phát thương mại điện tử)-->LM(Liên miền) NT(Nội tỉnh)-->NTTK(Tiết kiệm) NT(Nội tỉnh)-->NTHT(Hỏa tốc) LM(Liên miền)-->LMTK(Tiết kiệm) LM(Liên miền)-->LMN(Nhanh) ``` ## 5. Dịch vụ chuyển phát hỏa tốc hẹn giờ ```mermaid flowchart TD HTHG(Chuyển phát hỏa tốc hẹn giờ)-->HNDN(Hà Nội - Đà Nẵng) HTHG(Chuyển phát hỏa tốc hẹn giờ)-->HNHCM(Hà Nội - Hồ Chí Minh) HTHG(Chuyển phát hỏa tốc hẹn giờ)-->DNHCM(Đà Nẵng - Hồ Chí Minh) HTHG(Chuyển phát hỏa tốc hẹn giờ)-->NT(Nội tỉnh) HTHG(Chuyển phát hỏa tốc hẹn giờ)-->NM(Nội miền) HTHG(Chuyển phát hỏa tốc hẹn giờ)-->LM(Liên miền) ``` ## 6. Dịch vụ chuyển phát nhanh ```mermaid flowchart TD HTHG(Chuyển phát nhanh)-->HNDN(Hà Nội - Đà Nẵng) HTHG(Chuyển phát nhanh)-->HNHCM(Hà Nội - Hồ Chí Minh) HTHG(Chuyển phát nhanh)-->DNHCM(Đà Nẵng - Hồ Chí Minh) HTHG(Chuyển phát nhanh)-->NT(Nội tỉnh) HTHG(Chuyển phát nhanh)-->NM(Nội miền) HTHG(Chuyển phát nhanh)-->LM(Liên miền) ``` # III. Vùng miền ```mermaid flowchart TD VM(Miền)-->MB(Miền Bắc) VM(Miền)-->MT(Miền Trung) VM(Miền)-->MN(Miền Nam) ``` ## 1. Miền Bắc ```mermaid flowchart TD MB(Miền Bắc)-->BC(Bắc Cạn ) MB(Miền Bắc)-->CB(Cao Bằng ) MB(Miền Bắc)-->HG(Hà Giang ) MB(Miền Bắc)-->LS(Lạng Sơn ) MB(Miền Bắc)-->TQ(Tuyên Quang ) MB(Miền Bắc)-->DB(Điện Biên ) MB(Miền Bắc)-->LC(Lào Cai ) MB(Miền Bắc)-->LC(Lai Châu ) MB(Miền Bắc)-->PT(Phú Thọ ) MB(Miền Bắc)-->SL(Sơn La ) MB(Miền Bắc)-->YB(Yên Bái ) MB(Miền Bắc)-->BG(Bắc Giang ) MB(Miền Bắc)-->TN(Thái Nguyên ) MB(Miền Bắc)-->VP(Vĩnh Phúc ) MB(Miền Bắc)-->BN(Bắc Ninh ) MB(Miền Bắc)-->HB(Hòa Bình ) MB(Miền Bắc)-->HD(Hải Dương ) MB(Miền Bắc)-->HN(Hà Nam ) MB(Miền Bắc)-->HP(Hải Phòng ) MB(Miền Bắc)-->HY(Hưng Yên ) MB(Miền Bắc)-->ND(Nam Định ) MB(Miền Bắc)-->NB(Ninh Bình ) MB(Miền Bắc)-->QN(Quảng Ninh ) MB(Miền Bắc)-->TB(Thái Bình ) MB(Miền Bắc)-->HANOI(Hà Nội ) MB(Miền Bắc)-->HT(Hà Tĩnh ) MB(Miền Bắc)-->NA(Nghệ An ) MB(Miền Bắc)-->TH(Thanh Hóa ) ``` ## 2. Miền trung ```mermaid flowchart TD MT(Miền trung)-->QB(Quảng Bình ) MT(Miền trung)-->QT(Quảng Trị ) MT(Miền trung)-->TTH(Thừa Thiên-Huế ) MT(Miền trung)-->DN(Đà Nẵng ) MT(Miền trung)-->QNAM(Quảng Nam ) MT(Miền trung)-->QN(Quảng Ngãi ) MT(Miền trung)-->KT(Kon Tum ) MT(Miền trung)-->GL(Gia Lai ) MT(Miền trung)-->KH(Khánh Hòa ) MT(Miền trung)-->PY(Phú Yên ) MT(Miền trung)-->BD(Bình Định ) ``` ## 3. Miền nam ```mermaid flowchart TD MN(Miền Nam)-->BT(Bình Thuận ) MN(Miền Nam)-->NT(Ninh Thuận ) MN(Miền Nam)-->DL(Đắk Lắk ) MN(Miền Nam)-->LD(Lâm Đồng ) MN(Miền Nam)-->BD(Bình Dương ) MN(Miền Nam)-->BP(Bình Phước ) MN(Miền Nam)-->BT(Bến Tre ) MN(Miền Nam)-->DN(Đắk Nông ) MN(Miền Nam)-->ĐN(Đồng Nai ) MN(Miền Nam)-->LA(Long An ) MN(Miền Nam)-->TG(Tiền Giang ) MN(Miền Nam)-->TN(Tây Ninh ) MN(Miền Nam)-->BRVT(Bà Rịa-Vũng Tàu) MN(Miền Nam)-->HCM(Hồ Chí Minh ) MN(Miền Nam)-->TV(Trà Vinh ) MN(Miền Nam)-->VL(Vĩnh Long ) MN(Miền Nam)-->AG(An Giang ) MN(Miền Nam)-->BL(Bạc Liêu ) MN(Miền Nam)-->CM(Cà Mau ) MN(Miền Nam)-->CT(Cần Thơ ) MN(Miền Nam)-->DT(Đồng Tháp ) MN(Miền Nam)-->HG(Hậu Giang ) MN(Miền Nam)-->KG(Kiên Giang ) MN(Miền Nam)-->ST(Sóc Trăng ) ``` # IV. Khu vực miền bắc & Hồ Chí Minh ```mermaid flowchart TD KV(Khu vực)-->KV1(Khu vực 1) KV(Khu vực)-->KV2(Khu vực 2) KV(Khu vực)-->KV3(Khu vực 3) KV(Khu vực)-->KV4(Khu vực 4) ``` ## 1. Khu vực 1 ```mermaid flowchart TD KV1-->HN(Hà Nội) KV1-->HCM(Hồ Chí Minh) ``` ## 2. Khu vực 2 ```mermaid flowchart TD KV2-->Hải_Phòng(Hải Phòng ) KV2-->Hưng_Yên(Hưng Yên ) KV2-->Gia_Lai(Gia Lai ) KV2-->Bắc_Ninh(Bắc Ninh ) KV2-->Nam_Định(Nam Định ) KV2-->Thái_Nguyên(Thái Nguyên) KV2-->Hải_Dương(Hải Dương ) KV2-->Bắc_Giang(Bắc Giang ) KV2-->Thanh_Hóa(Thanh Hóa ) KV2-->Nghệ_An(Nghệ An ) KV2-->Đà_Nẵng(Đà Nẵng ) KV2-->Vĩnh_Phúc(Vĩnh Phúc ) ``` ## 3. Khu vực 3 ```mermaid flowchart TD KV3-->Quảng_Ninh KV3-->Hòa_Bình KV3-->Quảng_Nam KV3-->Hà_Tĩnh KV3-->Quảng_Trị KV3-->Khánh_Hòa KV3-->Quảng_Ngãi KV3-->Phú_Thọ KV3-->Hà_Nam KV3-->Thái_Bình KV3-->Thừa_Thiên_Huế KV3-->Ninh_Bình ``` ## 4. Khu vực 4 ```mermaid flowchart TD KV4-->Cao_Bằng KV4-->Bắc_Kạn KV4-->Hà_Giang KV4-->Sơn_La KV4-->Lai_Châu KV4-->Điện_Biên KV4-->Quảng_Bình KV4-->Lào_Cai KV4-->Kon_Tum KV4-->Phú_Yên KV4-->Lạng_Sơn KV4-->Tuyên_Quang KV4-->Bình_Định KV4-->Yên_Bái ``` # IV. Khu vực miền nam ```mermaid flowchart TD KV(Khu vực)-->KV1(Khu vực 1) KV(Khu vực)-->KV2(Khu vực 2) KV(Khu vực)-->KV3(Khu vực 3) ``` ## 1. Khu vực 1 ```mermaid flowchart TD KV1-->BD(Bình Dương) KV1-->DN(Đồng Nai) ``` ## 2. Khu vực 2 ```mermaid flowchart TD KV2-->Bình_Thuận KV2-->Long_An KV2-->Đắk_Lắk KV2-->Cần_Thơ ``` ## 3. Khu vực 3 ```mermaid flowchart TD KV3-->Tiền_Giang KV3-->Bến_Tre KV3-->Tây_Ninh KV3-->Hậu_Giang KV3-->Trà_Vinh KV3-->Ninh_Thuận KV3-->Vĩnh_Long KV3-->Bà_Rịa_Vũng_Tàu KV3-->Cà_Mau KV3-->An_Giang KV3-->Kiên_Giang KV3-->Bạc_Liêu KV3-->Lâm_Đồng KV3-->Bình_Phước KV3-->Đăk_Nông KV3-->Sóc_Trăng KV3-->Đồng_Tháp ```