Skip to content

Test Cases: Sản phẩm

ModuleCORE-05URDURD Sản phẩm

Kịch bản dùng Given / When / Then. TC-<AREA>-NNN khớp với URD-<AREA>-NNN. Mức ưu tiên = P1 (nghiêm trọng) / P2 (lớn) / P3 (nhỏ).

1. Tóm tắt Độ phủ

Lĩnh vựcYêu cầu URDTest caseĐã phủ
Sản phẩm (PRD)1631
Nhóm hàng (CAT)48
Biến thể (VAR)1224
Fare / Định giá (FAR)717
Định danh (PID)48
Khuyến mãi (CMP)35⚠️ (tính toán Planned)
Truy cập (ACC)411
Ràng buộc (CON)713

Endpoint đọc giá biến thể (URD-VAR-011), nhập CSV (URD-PRD-019), và tính chiết khấu khuyến mãi (URD-CMP-003) là Planned / In-progress; test case của chúng kiểm tra hành vi hiện tại (lỗi / không-áp-dụng), không phải chức năng đầy đủ.

2. Test Cases

2.1 Sản phẩm (PRD)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-PRD-001URD-PRD-001, -002, -004Tạo sản phẩm (happy path)Chủ tạo sản phẩm với tên + nhóm hàngĐã tạo; sinh SYSTEM id + slug; biến thể mặc định được tạo; trạng thái ActivatedP1
TC-PRD-002URD-PRD-001Tạo không tênGửi không có tênBị từ chối; bắt buộc tênP1
TC-PRD-003URD-PRD-001Tạo không nhóm hàngGửi không có nhóm hàngBị từ chối; bắt buộc nhóm hàngP1
TC-PRD-004URD-PRD-003Tên đa ngôn ngữCung cấp tên bằng EN + VIMọi ngôn ngữ được lưu & lấy lại đượcP1
TC-PRD-005URD-PRD-003Ngôn ngữ một phầnChỉ tên chính, các tên khác rỗngĐã tạo; ngôn ngữ rỗng lưu là rỗng (không lỗi)P2
TC-PRD-006URD-PRD-005Cập nhật infoChủ cập nhật tên & mô tảĐã cập nhật; biến thể/fares không đổiP1
TC-PRD-007URD-PRD-005Cập nhật thành tên rỗngChủ xóa tênBị từ chối; bản gốc được giữP1
TC-PRD-008URD-PRD-006Vô hiệu hóaChủ vô hiệu hóa một sản phẩm đang hoạt độngTrạng thái Deactivated; dữ liệu được giữ; ẩn khỏi POSP1
TC-PRD-009URD-PRD-006Xem đã vô hiệu hóaChủ mở một sản phẩm đã vô hiệu hóaMọi dữ liệu nguyên vẹn; trạng thái hiển thị DeactivatedP2
TC-PRD-010URD-PRD-007Trùng slug cùng merchantTạo sản phẩm sẽ dùng lại một slug đã tồn tạiHệ thống đảm bảo duy nhất (slug khác nhau)P1
TC-PRD-011URD-PRD-007Slug xuyên merchantHai merchant cùng tạo "coffee-latte"Cả hai thành công; slug duy nhất theo merchant, có thể trùng nhau giữa các merchantP2
TC-PRD-012URD-PRD-008Tra cứu theo IDTìm theo ID đã biếtSản phẩm trả về với tên, nhóm hàng, trạng thái, biến thểP1
TC-PRD-013URD-PRD-008Tra cứu theo slugTìm theo slug đã biếtSản phẩm được trả vềP1
TC-PRD-014URD-PRD-008Tra cứu ID thiếuTìm theo ID không tồn tạiKhông tìm thấy; không trả về gìP2
TC-PRD-015URD-PRD-009Danh sách (lọc theo vai trò)Chủ yêu cầu danh sách sản phẩmChỉ sản phẩm dưới merchant của mình được trả vềP1
TC-PRD-016URD-PRD-009Nhất quán đếmChủ yêu cầu đếm sản phẩmSố đếm tôn trọng cùng bộ lọc vai trò như danh sáchP2
TC-PRD-017URD-PRD-013Đính kèm hình ảnhChủ đính kèm hình ảnhHình ảnh được liên kết & lấy lại đượcP2
TC-PRD-018URD-PRD-013Định dạng ảnh xấuChủ tải lên định dạng không hỗ trợBị từ chối; chỉ ra định dạng cho phépP3
TC-PRD-019URD-PRD-014Gán kênh bánChủ gán sản phẩm cho các kênh cụ thểChỉ khả dụng trong các kênh được gánP2
TC-PRD-020URD-PRD-014Gỡ khỏi kênhGỡ sản phẩm khỏi kênh BCòn ở A; mất khỏi BP2
TC-PRD-021URD-PRD-016Cha-conTạo một sản phẩm con dưới một sản phẩm chaCon tham chiếu cha; cha liệt kê conP2
TC-PRD-023URD-PRD-006Lưu trữChủ lưu trữ một sản phẩmTrạng thái Archived; dữ liệu được giữ; ẩn khỏi POS & danh sáchP1
TC-PRD-024URD-PRD-008Tra cứu slug thiếuTìm theo slug không tồn tạiKhông tìm thấy; không trả về gìP2
TC-PRD-025URD-PRD-006Kích hoạt lạiChủ kích hoạt lại một sản phẩm đã vô hiệu hóaTrạng thái Activated; hiển thị lại; dữ liệu không đổiP1
TC-PRD-026URD-PRD-001Tạo không merchantChủ tạo không có ngữ cảnh merchantBị từ chối; bắt buộc merchantP1
TC-PRD-027URD-PRD-007Slug chuỗi rỗngChủ gửi "" làm slugHệ thống tự sinh một slug hợp lệ; sản phẩm tìm đượcP2
TC-PRD-028URD-PRD-014Cập nhật diff kênhCập nhật kênh [A,B,C] → [B,D]A & C bị gỡ, D thêm vào, B giữ — nguyên tửP2
TC-PRD-029URD-PRD-005, -014Cập nhật chỉ kênhCập nhật aggregate không đổi sản phẩm, kênh mớiSản phẩm không đổi; kênh được cập nhật; không ghi thừa sản phẩmP2
TC-PRD-030URD-PRD-017Tìm theo tênTìm "Cafe" trong các sản phẩmKhớp một phần không phân biệt hoa thường được trả vềP1
TC-PRD-031URD-PRD-017Tìm có dấuTìm "ca phe" với tên có dấuTrả về nếu tìm i18n chuẩn hóa dấu; hành vi được ghi tài liệuP2
TC-PRD-032URD-PRD-018Lọc theo nhóm hàngLọc danh sách theo "Beverages"Chỉ sản phẩm Beverages được trả vềP1
TC-PRD-033URD-PRD-015Đã lưu trữ là chỉ đọcCập nhật một sản phẩm đã lưu trữBị từ chối; đã lưu trữ là chỉ đọcP1
TC-PRD-034URD-PRD-015Lưu trữ là cuốiKích hoạt lại một sản phẩm đã lưu trữBị từ chối; Archived là cuốiP1
TC-PRD-022URD-PRD-019Nhập CSV (Planned)Tải lên một file danh mụcTính năng Planned — test mở rộng khi triển khaiP3

2.2 Nhóm hàng (CAT)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-CAT-001URD-CAT-001Tạo nhóm hàngChủ tạo một nhóm hàng với tênĐã tạo trong merchant; sẵn để gánP1
TC-CAT-002URD-CAT-001Tạo không tênGửi không có tênBị từ chối; bắt buộc tênP1
TC-CAT-003URD-CAT-002Tên đa ngôn ngữCung cấp tên bằng nhiều ngôn ngữMọi ngôn ngữ được lưu & lấy lại đượcP2
TC-CAT-004URD-CAT-003Cập nhật nhóm hàngChủ cập nhật tênĐã cập nhật; sản phẩm không bị ảnh hưởngP2
TC-CAT-005URD-CAT-003Xóa nhóm hàng rỗngXóa một nhóm hàng không có sản phẩmSoft-delete; mất khỏi danh sáchP2
TC-CAT-006URD-CAT-003Xóa nhóm hàng đang dùngXóa một nhóm hàng có sản phẩmBị từ chối; nhóm hàng đang dùng; sản phẩm giữ phân loạiP1
TC-CAT-007URD-CAT-004Đánh cờ add-onĐánh dấu nhóm hàng là add-onĐã đánh cờ; sản phẩm được xử lý như add-onP2
TC-CAT-008URD-CAT-004Bỏ cờ add-onGỡ cờ add-onTrở về hành vi nhóm hàng chuẩnP3

2.3 Biến thể (VAR)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-VAR-001URD-VAR-001Biến thể mặc định tồn tạiTạo một sản phẩmBiến thể mặc định tồn tại với một định danh hệ thốngP1
TC-VAR-002URD-VAR-001Không thể xóa biến thể cuốiXóa biến thể duy nhấtBị từ chối; luôn còn ít nhất một biến thểP1
TC-VAR-003URD-VAR-002Thêm biến thểTạo một biến thể "Large" bổ sungĐã liên kết; sản phẩm giờ có hai biến thểP1
TC-VAR-004URD-VAR-003, -005Tạo aggregateTạo biến thể + info + fares + định danhTất cả tạo nguyên tử; định danh được sinhP1
TC-VAR-005URD-VAR-003Rollback tạo aggregateTạo aggregate với một fare âmToàn bộ thao tác bị từ chối; không tạo gìP1
TC-VAR-006URD-VAR-004Cập nhật aggregateCập nhật tên, fare, định danh trong một bướcTất cả cập nhật nguyên tửP1
TC-VAR-007URD-VAR-004Rollback cập nhật aggregateTên hợp lệ nhưng fare không hợp lệToàn bộ cập nhật bị từ chối; bản gốc được giữP1
TC-VAR-008URD-VAR-005Định danh hệ thốngTạo một biến thểĐịnh danh hệ thống duy nhất; không sửa được bởi người dùngP2
TC-VAR-009URD-VAR-007Khoảng hiệu lựcĐặt ngày từ/đếnChỉ khả dụng trong cửa sổP2
TC-VAR-010URD-VAR-007Khoảng đã hết hạnNgày kết thúc trong quá khứ, thêm vào giỏKhông khả dụng để bánP2
TC-VAR-011URD-VAR-006Đặt loại biến thểĐặt loại thành SERVICE / KIT / COMBO v.v.Loại được lưu; điều khiển hành vi quản lý tồn & bundleP2
TC-VAR-012URD-VAR-008Gán SKUGán một SKUĐã liên kết; tìm được theo SKUP2
TC-VAR-013URD-VAR-008Gán barcodeGán một barcodeĐã liên kết; tìm được theo barcodeP2
TC-VAR-014URD-VAR-001Vô hiệu hóa biến thểVô hiệu hóa một biến thể không phải duy nhấtTrạng thái Deactivated; dữ liệu được giữ; ẩn khỏi POSP1
TC-VAR-015URD-VAR-001Lưu trữ biến thểLưu trữ một biến thểTrạng thái Archived; dữ liệu được giữ; ẩn khỏi POS & danh sáchP1
TC-VAR-016URD-VAR-001Trạng thái NewTạo một biến thểTrạng thái New; không bán được tới khi kích hoạtP2
TC-VAR-017URD-VAR-001Kích hoạt biến thểKích hoạt một biến thể NewTrạng thái Activated; bán đượcP2
TC-VAR-018URD-VAR-001Kích hoạt lại biến thểKích hoạt lại một biến thể đã vô hiệu hóaTrạng thái Activated; dữ liệu không đổiP2
TC-VAR-019URD-VAR-011Đọc giá (Planned)Gọi endpoint giá biến thểTrả về một lỗi "chưa triển khai" có cấu trúc, không phải 500 thôP2
TC-VAR-020URD-VAR-004Bảo vệ thiếu-merchantCập nhật aggregate trên một biến thể thiếu metadata merchantIdBị từ chối (500 theo thiết kế); giao dịch rollbackP2
TC-VAR-021URD-VAR-004Chỉ cập nhật fareChỉ cập nhật số tiền fareTên không đổi (không ghi thừa); fare được cập nhật; commitP2
TC-VAR-022URD-VAR-008, URD-PID-004SKU lần đầu khi cập nhậtBiến thể không có SKU; cập nhật gán SKUSKU được tạo & liên kết, HOẶC một lỗi rõ ràng — không bao giờ bị bỏ qua âm thầmP2
TC-VAR-023URD-VAR-001Cuối đã lưu trữChuyển Archived → ActivatedBị từ chối; Archived là cuốiP1
TC-VAR-024URD-VAR-001Nhảy không hợp lệChuyển New → Archived trực tiếpBị từ chối; không phải chuyển hợp lệP2

2.4 Fare / Định giá (FAR)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-FAR-001URD-FAR-001Một bộ fareTạo một biến thểĐúng một bộ fare liên kết; không thể gỡP1
TC-FAR-002URD-FAR-001Không bộ fare thứ haiTạo một bộ fare thứ haiBị từ chối; một bộ fare cho mỗi biến thểP1
TC-FAR-003URD-FAR-002Có fare cơ bảnXem bộ fare của một biến thểÍt nhất một fare (mặc định) tồn tạiP1
TC-FAR-004URD-FAR-002Không thể xóa fare cuốiXóa fare duy nhấtBị từ chối; luôn phải tồn tại một fareP1
TC-FAR-005URD-FAR-003Cho phép số 0Tạo một fare số tiền 0Đã tạo (cho phép số 0)P2
TC-FAR-006URD-FAR-003Từ chối âmTạo một fare số tiền -100Bị từ chối; số tiền phải ≥ 0P1
TC-FAR-007URD-FAR-004Áp fare cơ bảnThêm biến thể chỉ có một fare cơ bảnFare cơ bản được áp & hiển thịP1
TC-FAR-008URD-FAR-004Override thắngBiến thể với cơ bản + override đang hoạt độngGiá override được chọnP1
TC-FAR-009URD-FAR-004Tất cả hết hạnMọi fares đều có ngày hết hạnQuay về fare mặc định; không dùng giá hết hạnP1
TC-FAR-010URD-FAR-005Ngày trong cửa sổFare hiệu lực 1–31 Mar, bán 15 MarFare đang hoạt động & được ápP2
TC-FAR-011URD-FAR-005Ngày ngoài cửa sổCùng fare, bán 1 AprKhông áp; dùng fare áp dụng kế tiếpP2
TC-FAR-012URD-FAR-006Trong khoảng số lượngFare min 10 / max 50, thêm 20Fare được ápP2
TC-FAR-013URD-FAR-006Dưới tối thiểuFare min 10, thêm 5Không áp; dùng fare kế tiếpP2
TC-FAR-014URD-FAR-006Trên tối đaFare max 50, thêm 100Không áp; dùng fare kế tiếpP2
TC-FAR-015URD-FAR-007Phân cấp nhóm fareFare cha với các conCha-con được giữ; số con đúngP2
TC-FAR-016URD-FAR-004Tạo overrideThêm một fare OVERRIDE vào một bộOverride được tạo; ưu tiên hơn cơ bản khi giải quyếtP1
TC-FAR-017URD-FAR-004, -005, -006Giải quyết đa yếu tốCơ bản + số lượng + override theo mùa, thêm 15 vào 15 MarOverride theo mùa được chọn (ưu tiên override); tổng = 15 × số tiền overrideP1

2.5 Định danh (PID)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-PID-001URD-PID-001Duy nhất theo lược đồDùng lại một mã SKU trên sản phẩm khácBị từ chối; định danh đã dùng cho lược đồ đóP1
TC-PID-002URD-PID-001Cùng mã, khác lược đồCùng mã dưới SKU và BarcodeCả hai được chấp nhận; duy nhất là theo lược đồP2
TC-PID-003URD-PID-002Nhiều định danhGán qua SYSTEM, SLUG, SKU, BarcodeTất cả được lưu; tìm được theo bất kỳP1
TC-PID-004URD-PID-003Tự sinhTạo một sản phẩm / biến thểSYSTEM và SLUG tự sinh, duy nhất, không sửa đượcP1
TC-PID-005URD-PID-003Không cung cấp định danhTạo không cung cấp một định danhSYSTEM & SLUG vẫn được sinh; không lỗiP2
TC-PID-006URD-PID-004Gán SKU + barcodeGán cả hai cho một biến thểCả hai được liên kết; tìm được theo bất kỳP2
TC-PID-007URD-PID-001, -004Trùng SKUGán một SKU đang dùng cho một biến thể khácBị từ chối; SKU đã được dùngP1
TC-PID-008URD-PID-004Gán mã QRGán một mã QR cho một biến thểĐã liên kết; tìm được theo mã QRP2

2.6 Khuyến mãi (CMP)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-CMP-001URD-CMP-001Tạo khuyến mãiTạo với tên + khoảng ngàyĐã tạo; liên kết với merchantP2
TC-CMP-002URD-CMP-001Không khoảng ngàyTạo không có ngàyBị từ chối; bắt buộc khoảng ngàyP2
TC-CMP-003URD-CMP-001Khoảng không hợp lệNgày kết thúc trước ngày bắt đầuBị từ chối; khoảng không hợp lệP2
TC-CMP-004URD-CMP-002Phạm vi merchantXem khuyến mãi của Merchant A dưới Merchant BKhông hiển thị dưới BP2
TC-CMP-005URD-CMP-003Áp chiết khấu (Planned)Áp một khuyến mãi khi định giáTính chiết khấu đang tắt hiện tại — trả về 0; test mở rộng khi engine ra mắtP3

2.7 Truy cập (ACC)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-ACC-001URD-ACC-001Danh sách được lọcBất kỳ người dùng nào liệt kê sản phẩmLọc theo vai trò; không gì ngoài phạm viP1
TC-ACC-002URD-ACC-001Đếm được lọcBất kỳ người dùng nào đếm sản phẩmSố đếm chỉ phản ánh sản phẩm trong phạm viP1
TC-ACC-003URD-ACC-002Phạm vi chủChủ A liệt kê sản phẩmChỉ merchant của A trả về; của B bị ẩnP1
TC-ACC-004URD-ACC-002Chặn liên-chủChủ A truy cập sản phẩm của Chủ BBị từ chốiP1
TC-ACC-005URD-ACC-003Phạm vi nhân viênNhân viên của X liệt kê sản phẩmChỉ sản phẩm của X trả vềP1
TC-ACC-006URD-ACC-003Chặn nhân viênNhân viên của X truy cập sản phẩm của YBị từ chốiP1
TC-ACC-007URD-ACC-004Super Admin tất cảSuper Admin liệt kê sản phẩmMọi sản phẩm trả về; không lọcP1
TC-ACC-008URD-ACC-004Admin tất cảAdmin liệt kê sản phẩmMọi sản phẩm; bỏ qua lọcP1
TC-ACC-009URD-ACC-001Danh sách nhóm hàng được lọcChủ liệt kê nhóm hàngChỉ nhóm hàng của merchant mình trả vềP1
TC-ACC-010URD-PRD-018Phạm vi lọc nhóm hàngLọc sản phẩm theo nhóm hàngChỉ sản phẩm của nhóm hàng đó trả vềP2
TC-ACC-011URD-ACC-001Vai trò không nhận dạngVai trò chưa xử lý liệt kê sản phẩm403 HOẶC rỗng với tín hiệu thiếu-quyền rõ ràng — không bao giờ là danh sách rỗng âm thầmP1

2.8 Ràng buộc (CON)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-CON-001C-01Một merchantGán một sản phẩm cho một merchant thứ haiBị từ chốiP1
TC-CON-002C-01Khớp nhóm hàng-merchantGán một sản phẩm của merchant khác cho một nhóm hàngBị từ chối; phải cùng merchantP1
TC-CON-003C-06Soft-deleteTìm bao gồm không hoạt động sau khi xóaBản ghi vẫn lấy được; dữ liệu được giữP1
TC-CON-004URD-PID-003Tự sinh định danhTạo không có SYSTEM/SLUGCả hai tự sinh, duy nhất, nhất quánP1
TC-CON-005C-05Tạo aggregate nguyên tửTạo aggregate với fare không hợp lệToàn bộ thao tác thất bại; không tạo gìP1
TC-CON-006C-05Cập nhật aggregate nguyên tửTên hợp lệ + fare không hợp lệ khi cập nhậtToàn bộ cập nhật thất bại; bản gốc được giữP1
TC-CON-007C-07Lọc vai trò trên danh sáchChủ liệt kê sản phẩmLọc trước khi trả về; số đếm khớpP1
TC-CON-008C-07Đếm khớp danh sáchChủ với 5 sản phẩm đếmTrả về 5, không phải tổng toàn cụcP1
TC-CON-009URD-PRD-003Lưu trữ i18nTạo với tên EN/VI/JATất cả được lưu; trả về theo locale yêu cầuP1
TC-CON-010C-04Một bộ fareXem định giá của một biến thể mớiĐúng một bộ fare, tự tạoP1
TC-CON-011C-04Tối thiểu một fareXem một bộ fareÍt nhất một fare; fare cuối không thể gỡP1
TC-CON-012C-05Rollback thao tác conMột bước con của tạo aggregate sản phẩm thất bạiToàn bộ giao dịch rollback; không có orphanP1
TC-CON-013C-05Quyền sở hữu giao dịch của callerMột caller truyền giao dịch của chính nó vào một lookupLookup không commit cũng không rollback; caller giữ quyền kiểm soátP2

3. Truy vết

Mỗi yêu cầu Must ánh xạ tới ≥1 test case. Các mục Planned / In-progress được gắn cờ.

Yêu cầu URDTest caseTrạng thái
URD-PRD-001TC-PRD-001, -002, -003, -026✅ Đã phủ
URD-PRD-002TC-PRD-001✅ Đã phủ
URD-PRD-003TC-PRD-004, -005, TC-CON-009✅ Đã phủ
URD-PRD-004TC-PRD-001✅ Đã phủ
URD-PRD-005TC-PRD-006, -007, -029✅ Đã phủ
URD-PRD-006TC-PRD-008, -009, -023, -025✅ Đã phủ
URD-PRD-007TC-PRD-010, -011, -027✅ Đã phủ
URD-PRD-008TC-PRD-012, -013, -014, -024✅ Đã phủ
URD-PRD-009TC-PRD-015, -016, TC-ACC-009✅ Đã phủ
URD-PRD-013TC-PRD-017, -018✅ Đã phủ
URD-PRD-014TC-PRD-019, -020, -028, -029✅ Đã phủ
URD-PRD-015TC-PRD-033, -034✅ Đã phủ
URD-PRD-016TC-PRD-021✅ Đã phủ
URD-PRD-017TC-PRD-030, -031✅ Đã phủ
URD-PRD-018TC-PRD-032, TC-ACC-010✅ Đã phủ
URD-PRD-019TC-PRD-022⚠️ Planned (Could)
URD-CAT-001TC-CAT-001, -002✅ Đã phủ
URD-CAT-002TC-CAT-003✅ Đã phủ
URD-CAT-003TC-CAT-004, -005, -006✅ Đã phủ
URD-CAT-004TC-CAT-007, -008✅ Đã phủ
URD-VAR-001TC-VAR-001, -002, -014, -015, -016, -017, -018, -023, -024✅ Đã phủ
URD-VAR-002TC-VAR-003✅ Đã phủ
URD-VAR-003TC-VAR-004, -005✅ Đã phủ
URD-VAR-004TC-VAR-006, -007, -020, -021✅ Đã phủ
URD-VAR-005TC-VAR-004, -008✅ Đã phủ
URD-VAR-006TC-VAR-011✅ Đã phủ
URD-VAR-007TC-VAR-009, -010✅ Đã phủ
URD-VAR-008TC-VAR-012, -013, -022✅ Đã phủ
URD-VAR-009⚠️ Lưu trữ UOM đã xây; chưa có TC riêng
URD-VAR-010⚠️ Bundle đã xây; phủ trong tài liệu dev, chưa có TC module
URD-VAR-011TC-VAR-019⚠️ Planned (kiểm tra lỗi chưa-triển-khai)
URD-VAR-012⚠️ Planned (không TC)
URD-FAR-001TC-FAR-001, -002, TC-CON-010✅ Đã phủ
URD-FAR-002TC-FAR-003, -004, TC-CON-011✅ Đã phủ
URD-FAR-003TC-FAR-005, -006✅ Đã phủ
URD-FAR-004TC-FAR-007, -008, -009, -016, -017✅ Đã phủ
URD-FAR-005TC-FAR-010, -011✅ Đã phủ
URD-FAR-006TC-FAR-012, -013, -014✅ Đã phủ
URD-FAR-007TC-FAR-015✅ Đã phủ
URD-PID-001TC-PID-001, -002, -007✅ Đã phủ
URD-PID-002TC-PID-003✅ Đã phủ
URD-PID-003TC-PID-004, -005, TC-CON-004✅ Đã phủ
URD-PID-004TC-PID-006, -007, -008, TC-VAR-022✅ Đã phủ
URD-CMP-001TC-CMP-001, -002, -003⚠️ In-progress (chỉ CRUD)
URD-CMP-002TC-CMP-004⚠️ In-progress
URD-CMP-003TC-CMP-005⚠️ Planned (tính toán bị tắt)
URD-ACC-001TC-ACC-001, -002, -009, -011✅ Đã phủ
URD-ACC-002TC-ACC-003, -004✅ Đã phủ
URD-ACC-003TC-ACC-005, -006✅ Đã phủ
URD-ACC-004TC-ACC-007, -008✅ Đã phủ

Tóm tắt: mọi yêu cầu Must đã được phủ. Các khoảng trống chỉ giới hạn ở các mục Planned / In-progress (URD-PRD-019, URD-VAR-011/012, URD-CMP-003) và hai mục Should đã-xây-nhưng-chưa-test (URD-VAR-009 UOM, URD-VAR-010 bundle) được gắn cờ cho việc viết test tương lai.

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