Skip to content

URD: Commerce

ModuleCORE-03Phiên bảnv0.4
Trạng tháiBuiltNgày2026-05-30

1. Mục đích

Commerce cho phép chủ doanh nghiệp dựng lên và vận hành cấu trúc doanh nghiệp: một Tổ chức duy nhất (thương hiệu) và một hoặc nhiều Merchant (các đơn vị điểm bán hợp pháp), mỗi đơn vị có kênh bán và danh mục sản phẩm riêng. Module cung cấp onboarding một bước tạo toàn bộ cấu trúc một cách nguyên tử, cộng với quản lý vòng đời đầy đủ của từng thực thể sau đó.

2. Phạm vi

Bao gồmLoại trừ
Tạo tổ chức qua onboardingVòng đời & đăng nhập nhân viên (→ Quản lý Người dùng)
Hồ sơ tổ chức, phân cấp, cài đặt, đính kèmĐịnh nghĩa vai trò/quyền (→ Quyền hạn)
Tạo merchant (đơn, hàng loạt, aggregate)Nội dung catalog sản phẩm (→ Sản phẩm)
Phân loại loại hình kinh doanhMức tồn kho (→ Tồn kho)
Quản lý kênh bánXử lý đơn hàng / checkout (→ Đơn hàng)
Quản lý danh mục với cờ add-onXử lý thanh toán (→ Thanh toán)
Chính sách xóa theo từng merchantPhát hành hóa đơn điện tử (→ Thuế & Hóa đơn)
Cấu hình merchant mã hóaĐặc tả API kỹ thuật (→ tài liệu developer)
Lọc dữ liệu theo vai trò

3. Định nghĩa

Thuật ngữĐịnh nghĩa
OrganizationThực thể thương hiệu ảo cấp cao nhất. Container cha cho merchant, người dùng và thiết bị. Mang thương hiệu, không mang định danh pháp lý.
MerchantMột đơn vị điểm bán vật lý/pháp lý dưới một tổ chức nơi giao dịch diễn ra. Nắm thông tin thuế, hồ sơ hóa đơn và ví.
Sale ChannelMột kênh bán trong một merchant (vd ăn tại chỗ, mang đi, giao hàng). Hỗ trợ phân cấp.
CategoryMột nhóm sản phẩm trong một merchant. Có thể được đánh dấu là add-on.
Business TypePhân loại điều khiển giao diện POS: DEFAULT, TICKET, FNB, THEATER.
Aggregate OperationMột yêu cầu duy nhất tạo hoặc cập nhật một merchant cùng với danh mục và kênh bán của nó, một cách nguyên tử.
Deletion PolicyCấu hình theo từng merchant điều khiển hành vi cascade khi xóa thực thể.
ConfigurationCài đặt khóa-giá trị mã hóa cho một merchant (nhà cung cấp thanh toán, tích hợp).
SlugĐịnh danh thân thiện URL. Duy nhất toàn cục cho tổ chức; duy nhất theo tổ chức cho merchant; duy nhất theo merchant cho kênh bán.

4. Mô hình Khái niệm

Chỉ mang tính khái niệm — schema đầy đủ nằm trong mô hình miền developer.

5. Yêu cầu Chức năng

Mỗi vùng chức năng một bảng. Mã <AREA> khớp với ID test-case. Mức ưu tiên = MoSCoW (Must / Should / Could / Won't).

5.1 Tổ chức (ORG)

IDPYêu cầu
URD-ORG-001MNgười dùng có thể tạo một tổ chức qua onboarding
URD-ORG-002MOnboarding tạo nguyên tử tổ chức + merchant mặc định + kênh bán + truy cập
URD-ORG-003MNgười dùng tạo được tự gán là Owner
URD-ORG-004MTên (đa ngôn ngữ) và slug là bắt buộc; mọi trường khác tùy chọn
URD-ORG-005MMột định danh hệ thống duy nhất được sinh khi tạo và không sửa được
URD-ORG-006MTổ chức tìm được theo ID hoặc theo slug (tra cứu cascade)
URD-ORG-007MOwner có thể cập nhật hồ sơ tổ chức
URD-ORG-008MTạo/cập nhật aggregate hỗ trợ tệp đính kèm
URD-ORG-009SList/count tổ chức được lọc theo vai trò của người dùng
URD-ORG-010STổ chức có thể bị vô hiệu hóa (dữ liệu được bảo toàn, đảo ngược được)
URD-ORG-011STổ chức có thể chỉ định một merchant trụ sở
URD-ORG-012STổ chức có thể được lưu trữ (chỉ đọc vĩnh viễn)
URD-ORG-013CTổ chức có thể có tổ chức con (phân cấp)

5.2 Merchant (MER)

IDPYêu cầu
URD-MER-001MMerchant mặc định được tạo trong khi onboarding
URD-MER-002MOwner có thể tạo thêm merchant
URD-MER-003MOwner có thể tạo hàng loạt nhiều merchant
URD-MER-004MOwner có thể tạo aggregate một merchant với danh mục + kênh bán
URD-MER-005MSlug merchant duy nhất trong cùng một tổ chức
URD-MER-006MMerchant có thể được xem cùng kênh và danh mục của nó
URD-MER-007MOwner có thể cập nhật thông tin merchant
URD-MER-008MCập nhật aggregate: chỉ-ID = xóa, ID+dữ liệu = cập nhật, không ID = tạo
URD-MER-009MMerchant tìm được theo ID hoặc theo slug (tra cứu cascade)
URD-MER-010MList merchant được lọc theo vai trò của người dùng
URD-MER-011MCount merchant tôn trọng cùng cách lọc như list
URD-MER-012SMerchant có thể bị vô hiệu hóa (đảo ngược được)
URD-MER-013SMerchant có thể được lưu trữ (chỉ đọc vĩnh viễn)
URD-MER-014CPhân cấp merchant (cha-con)
URD-MER-015SCờ xóa rõ ràng phân biệt "xóa" với "giữ nguyên" trong cập nhật aggregate

5.3 Kênh Bán (SC)

IDPYêu cầu
URD-SC-001M(Các) kênh mặc định được tạo trong khi onboarding
URD-SC-002MKênh được quản lý như một phần của thao tác aggregate merchant
URD-SC-003MKênh có thể được tạo hàng loạt cho một merchant hiện có
URD-SC-004MSlug kênh duy nhất trong cùng một merchant
URD-SC-005MMột định danh hệ thống duy nhất được sinh khi tạo và không sửa được
URD-SC-006CPhân cấp kênh (cha-con)
URD-SC-007SKênh có thể bị vô hiệu hóa hoặc lưu trữ

5.4 Danh mục (CAT)

IDPYêu cầu
URD-CAT-001MDanh mục được quản lý như một phần của thao tác aggregate merchant
URD-CAT-002MDanh mục có thể được đổi tên qua cập nhật aggregate mà không ảnh hưởng sản phẩm của nó
URD-CAT-003MDanh mục có thể được xóa qua cập nhật aggregate (soft-delete)
URD-CAT-004SDanh mục có thể được đánh dấu là add-on (và bỏ đánh dấu)

5.5 Chính sách Xóa (DEL)

IDPYêu cầu
URD-DEL-001SMỗi merchant có một chính sách xóa cấu hình được
URD-DEL-002SstrictCategoryDeletion: khi true, bị chặn nếu danh mục có sản phẩm liên kết
URD-DEL-003ScascadeProductDeletion: khi true, xóa một danh mục cascade tới sản phẩm của nó
URD-DEL-004SOwner có thể xem và cập nhật chính sách xóa

5.6 Cấu hình (CFG)

IDPYêu cầu
URD-CFG-001SMerchant có thể lưu thông tin xác thực nhà cung cấp thanh toán và cài đặt tích hợp
URD-CFG-002SThông tin xác thực nhạy cảm được mã hóa khi lưu
URD-CFG-003SCấu hình được tổ chức theo nhóm (system, table, integration)

5.7 Truy cập (ACC)

IDPYêu cầu
URD-ACC-001MTruy cập người dùng được quản lý qua chính sách theo vai trò (cấp org hoặc cấp merchant)
URD-ACC-002MNhân viên có thể được gán cho các merchant cụ thể
URD-ACC-003MMột người dùng có thể được cấp quyền truy cập nhiều tổ chức
URD-ACC-004MOwner chỉ thấy tổ chức và merchant của mình
URD-ACC-005MMọi thao tác list/count được lọc theo vai trò của người dùng (Admin bỏ qua)
URD-ACC-006MOwner có thể tạo, xem và cập nhật tổ chức của mình
URD-ACC-007MOwner có thể tạo, cập nhật và vô hiệu hóa merchant
URD-ACC-008MOwner có thể quản lý kênh và danh mục qua thao tác aggregate
URD-ACC-009MOwner có thể gán một nhân viên cho một merchant cụ thể
URD-ACC-010MNhân viên chỉ thấy merchant được gán
URD-ACC-011MNhân viên không thể truy cập merchant chưa được gán
URD-ACC-012MMột người dùng có vai trò không nhận diện được sẽ bị từ chối (không có kết quả rỗng âm thầm)

6. Tiêu chí Chấp nhận

AC-ORG-01: Onboarding là nguyên tử
ChoKhiThì
Một người dùng đã xác thực, chưa có tổ chứcOnboarding hoàn tất với tên + slug hợp lệTổ chức (Activated) + merchant mặc định + (các) kênh mặc định được tạo; truy cập của chủ sở hữu được cấp; định danh hệ thống & slug tự sinh
Bất kỳ bước nào thất bạiTrong khi onboardingToàn bộ thao tác roll back — không có gì được lưu
AC-ORG-02: Tính duy nhất slug
ChoKhiThì
Một tổ chức đã dùng slug "my-business"Người dùng khác thử cùng slugTạo bị từ chối — slug đã được sử dụng
AC-MER-01: Tạo aggregate
ChoKhiThì
Một chủ sở hữu có tổ chức hiện cóTạo một merchant với danh mục + kênhMerchant, danh mục, kênh đều được tạo nguyên tử; định danh được sinh
Bất kỳ con nào không hợp lệTrong khi tạo aggregateToàn bộ thao tác roll back
AC-MER-02: Cập nhật aggregate thông minh
ChoKhiThì
Item con chỉ có IDCập nhật aggregateItem bị xóa
Item con có ID + dữ liệuCập nhật aggregateItem được cập nhật
Item con không có IDCập nhật aggregateItem được tạo
AC-DEL-01: Chính sách xóa
ChoKhiThì
strictCategoryDeletion = trueXóa một danh mục có sản phẩmBị chặn
cascadeProductDeletion = trueXóa một danh mụcSản phẩm của nó cũng bị xóa
AC-ACC-01: Cô lập theo vai trò
ChoKhiThì
Owner A (Org X) và Owner B (Org Y)Owner A yêu cầu dữ liệu tổ chức/merchantChỉ trả dữ liệu Org X; Org Y không hiển thị
Nhân viên chỉ được gán Merchant XYêu cầu list merchantChỉ trả Merchant X

7. Ràng buộc & Mục tiêu Loại trừ

Ràng buộc

IDRàng buộc
C-01Tổ chức phải tồn tại trước khi tạo merchant
C-02Thao tác aggregate là nguyên tử — tất cả hoặc không
C-03Mọi thực thể dùng soft-delete; không có gì bị xóa vật lý
C-04Tính duy nhất slug: toàn cục cho tổ chức, theo org cho merchant, theo merchant cho kênh
C-05Mọi thao tác yêu cầu xác thực
C-06Thông tin xác thực thanh toán được mã hóa khi lưu

Mục tiêu Loại trừ

  • Truy cập liên-tổ-chức hoặc chia sẻ merchant giữa các tổ chức
  • Chuyển quyền sở hữu (Dự kiến)
  • Hard-delete bất kỳ thực thể nào
  • CRUD kênh bán / danh mục độc lập ngoài aggregate merchant (Dự kiến)

8. Lịch sử Phiên bản

NgàyTác giảMô tảVer
2026-05-30P. NguyenChuyển sang quy ước module-docs; hòa hợp ID/vùng yêu cầu với test casev0.4
2026-04-17P. NguyenGộp Organization + Merchant vào module Commercev0.3
2026-02-27QE AssessmentPhát hiện QEv0.2
2026-02-26P. Do — Product OwnerKhởi tạov0.1

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.