Skip to content

Test Cases: Kho

ModuleCORE-06URDURD Kho

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

Lĩnh vựcYêu cầu URDTest caseĐã phủ
Địa điểm (LOC)1020
Mục (ITM)610
Tồn (STK)711
Tracking (TRK)1013
Vendor (VEN)57
Đơn mua hàng (PO)1226
Mục PO (POI)512
Nguyên vật liệu (MAT)1313
Công thức / BOM (REC)2421⚠️
Ràng buộc (CON)48

Mức ưu tiên bên dưới = P1 (nghiêm trọng / Must) · P2 (lớn / Should) · P3 (nhỏ / Could). Một khoảng trống đang mở: TC-REC-206 (địa điểm bếp không-mặc-định) bị chặn bởi một code TODO.

2. Test Cases

TC-<AREA>-NNN khớp với URD-<AREA>-NNN.

Địa điểm (LOC)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-LOC-001URD-LOC-001, 007, 010Tạo địa điểm với tên i18nMerchant đã xác thực tạo một địa điểm với tên hợp lệĐịa điểm được tạo; LOC_YYYYMMDD_id được gán; liên kết với đúng một merchantP1
TC-LOC-002URD-LOC-001Tạo không tênThử tạo một địa điểm không tênBị từ chối; lỗi "bắt buộc tên"P1
TC-LOC-003URD-LOC-001Tên đa ngôn ngữCung cấp tên bằng en + viĐược tạo với mọi locale được lưu và lấy lại đượcP1
TC-LOC-004URD-LOC-007Định dạng định danhTạo bất kỳ địa điểm nàoĐịnh danh khớp LOC_YYYYMMDD_id; duy nhất; không sửa đượcP1
TC-LOC-005URD-LOC-007Duy nhất cùng-ngàyTạo hai địa điểm cùng một ngàyCùng đoạn ngày, id đuôi khác nhau; cả hai duy nhất toàn cụcP1
TC-LOC-006URD-LOC-002Tự-tạo mặc địnhHoàn tất commerce initializationĐúng một địa điểm mặc định tự tạo và dùng đượcP1
TC-LOC-007URD-LOC-003Đổi mặc địnhĐánh dấu một địa điểm thứ hai là mặc địnhĐịa điểm mới thành mặc định; mặc định trước bị xóaP1
TC-LOC-008URD-LOC-003Xóa mặc định duy nhấtXóa/vô hiệu hóa mặc định duy nhất mà không thay thếBị từ chối; merchant luôn phải có một mặc địnhP1
TC-LOC-009URD-LOC-004Địa điểm conTạo một con dưới một chaCon tham chiếu cha; cha liệt kê conP2
TC-LOC-010URD-LOC-004Xóa cha có conXóa một cha có conBị từ chối hoặc cascade; không có orphan; toàn vẹn được giữP2
TC-LOC-011URD-LOC-005Lưu dữ liệu địa lýCập nhật địa điểm với địa chỉ + GPSDữ liệu địa lý được lưu và lấy lại đượcP2
TC-LOC-012URD-LOC-005Thiếu dữ liệu địa lýTạo địa điểm không có địa chỉ/tọa độĐược tạo; trường địa lý null; không lỗi validationP2
TC-LOC-013URD-LOC-006Kích hoạtKích hoạt một địa điểm NEWTrạng thái NEW → ACTIVATED; dùng được cho tồnP1
TC-LOC-014URD-LOC-006Vô hiệu hóaVô hiệu hóa một địa điểm ACTIVATEDTrạng thái → DEACTIVATED; không gán mới; tồn được giữP1
TC-LOC-015URD-LOC-006Lưu trữLưu trữ một địa điểm DEACTIVATEDTrạng thái → ARCHIVED; dữ liệu được giữ; gỡ khỏi list hoạt độngP1
TC-LOC-016URD-LOC-006Nhảy không hợp lệNEW → ARCHIVED trực tiếpBị từ chối; chuyển không hợp lệP1
TC-LOC-017URD-LOC-006Kích hoạt lại đã lưu trữKích hoạt lại một địa điểm ARCHIVEDBị từ chối; ARCHIVED là cuốiP1
TC-LOC-018URD-LOC-008Soft deleteSoft-delete một địa điểmGắn cờ đã xóa; vắng khỏi list hoạt động; dữ liệu được giữ; admin lấy đượcP1
TC-LOC-019URD-LOC-009Lọc theo trạng tháiList lọc theo ACTIVATED (3 hoạt động, 2 không)Chỉ 3 cái ACTIVATED được trả vềP2
TC-LOC-020URD-LOC-009, 010Cô lập merchantMerchant A liệt kê địa điểmChỉ địa điểm của A trả về; của B bị ẩnP2

Mục kho (ITM)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-ITM-001URD-ITM-001, 006Tự-tạo theo biến thểTạo một biến thể sản phẩmMục tự tạo, liên kết với địa điểm mặc định, định danh hệ thốngP1
TC-ITM-002URD-ITM-002Duy nhấtTạo mục thứ 2 cho cùng (biến thể, địa điểm, đơn vị)Bị từ chối; duy nhất được áp; mục có sẵn không đổiP1
TC-ITM-003URD-ITM-002Đơn vị khác cùng tồn tạiTạo mục cho cùng biến thể+địa điểm, đơn vị BOX vs PCSMục mới được tạo; cả hai cùng tồn tại; duy nhất là theo (biến thể, địa điểm, đơn vị)P1
TC-ITM-004URD-ITM-004Định dạng định danhTạo bất kỳ mục nàoĐịnh danh SKU_YYYYMMDD_id; duy nhất; không sửa đượcP1
TC-ITM-005URD-ITM-005Vô hiệu hóaVô hiệu hóa một mục ACTIVATEDTrạng thái → DEACTIVATED; loại khỏi query tồn hoạt độngP1
TC-ITM-006URD-ITM-005Lưu trữLưu trữ một mục DEACTIVATEDTrạng thái → ARCHIVED; dữ liệu được giữ; gỡ khỏi listingP1
TC-ITM-007URD-ITM-005Kích hoạt lại đã lưu trữKích hoạt lại một mục ARCHIVEDBị từ chối; ARCHIVED là cuốiP1
TC-ITM-008URD-ITM-003Đặt ngưỡngĐặt min=10, max=500Cả hai ngưỡng được lưu và lấy lại đượcP2
TC-ITM-009URD-ITM-003Kích tồn thấpOn-hand rớt xuống 9 (dưới min 10)Điều kiện tồn thấp được phát hiện; event được kích/logP2
TC-ITM-010URD-ITM-003Ngưỡng không hợp lệĐặt min > maxBị từ chối; min phải ≤ maxP2

Tồn (STK)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-STK-001URD-STK-001, 002Công thức availableQuery tồn với on-hand 100, reserved 30Available = 70 (on-hand − reserved)P1
TC-STK-002URD-STK-002Available bằng khôngReserved bằng on-handAvailable = 0; không phải lỗiP1
TC-STK-003URD-STK-003Độ chính xác thập phânLưu số lượng 10.12345Làm tròn/cắt về 4 chữ số thập phânP1
TC-STK-004URD-STK-003Biên tối đaLưu 999999999999999.9999Lưu không trànP1
TC-STK-005URD-STK-004Nhận hàng đầu tiênNhận tồn đầu tiên cho một mục mớiBản ghi tồn được tạo; on-hand = đã nhận; reserved 0; available = on-handP1
TC-STK-006URD-STK-004Trừ trước khi nhậnTrừ từ một mục không có tồnHoặc bị từ chối (không đủ) hoặc âm được dung thứ theo URD-CON-003; hành vi nhất quánP1
TC-STK-007URD-STK-005Timestamp đã đếmHoàn tất một lần đếm vật lýlastCountedAt cập nhật về nowP2
TC-STK-008URD-STK-005Timestamp đã nhập tồnHoàn tất một lần nhận tồnlastStockedAt cập nhật về nowP2
TC-STK-009URD-STK-006Trừ đồng thờiHai lần bán đồng thời trừ 5 mỗi cái từ on-hand 10Tổng trừ đúng 10; không đếm đôi; on-hand cuối 0P1
TC-STK-010URD-STK-006Rollback nguyên tửCập nhật tồn thất bại giữa chừngToàn bộ cập nhật rollback; tracking orphan không lưuP1
TC-STK-011URD-CON-003Available âmBán 8 từ on-hand 5Available thành −3; không bị từ chối; lưu và hiển thị; warning được logP1

Phát hiện QE (TC-STK-011): service cố tình dung thứ quantityAvailable âm ("refactor khi business logic rõ hơn"). Đây là một ràng buộc nghiệp vụ có ghi tài liệu (URD-CON-003), không phải bug — nhưng checkout POS downstream phải ngăn hoặc bộc lộ nó, hoặc nó trở thành rủi ro toàn vẹn dữ liệu.

Tracking (TRK)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-TRK-001URD-TRK-001, 002Mục vàoPO nhận 20 đơn vịMục bất biến: before/change (+20)/after; không sửa hoặc xóa đượcP1
TC-TRK-002URD-TRK-001, 002Mục raTrừ bán 3 đơn vịMục: before/change (−3)/after; hướng OUT; được lưuP1
TC-TRK-003URD-TRK-002Biên từ khôngPURCHASE_IN 50 từ on-hand 0before 0, change +50, after 50P1
TC-TRK-004URD-TRK-003Tham chiếu POBiến động kích bởi một POMục lưu referenceType=PURCHASE_ORDER + PO id; truy vết đượcP1
TC-TRK-005URD-TRK-003Tham chiếu bánBiến động kích bởi thanh toán bánMục lưu referenceType=SALE_ORDER + order idP1
TC-TRK-006URD-TRK-003Thiếu tham chiếuBiến động không có tham chiếu hợp lệBị từ chối, hoặc mục gắn cờ; truy vết audit không mất âm thầmP1
TC-TRK-007URD-TRK-004Replay idempotentReplay một event payment-success đã xử lýKhông trừ lần hai; on-hand không đổi; không mục trùng; trả về successP1
TC-TRK-008URD-TRK-004Đồng thời khác biệtHai sale order khác nhau trừ cùng mục gần như đồng thờiMỗi cái xử lý đúng một lần; không bỏ qua cũng không nhân đôiP1
TC-TRK-009URD-TRK-005Hướng INXử lý một PURCHASE_INHướng IN; on-hand tăngP1
TC-TRK-010URD-TRK-005Hướng OUTXử lý một SALE_OUTHướng OUT; on-hand giảmP1
TC-TRK-011URD-TRK-005Hướng NEUTRALXử lý ADJUSTMENT_NEUTRALHướng NEUTRAL; không thay đổi ròng; mục được lưu để auditP1
TC-TRK-012URD-TRK-005Loại không hợp lệTạo mục với loại không nhận dạngBị từ chối; "không phải loại tracking hợp lệ" (19 + tùy chỉnh được liệt kê)P1
TC-TRK-013URD-TRK-006Trường auditNgười dùng kích một biến độngMục lưu createdBy/modifiedBy của người dùng đã xác thựcP2

Lưu ý (TC-TRK-007): đường sync và queue payment-success nhân đôi logic trừ với thông báo lỗi khác nhau. Cả hai phải pass idempotency độc lập; một refactor tương lai nên hợp nhất chúng.

Vendor (VEN)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-VEN-001URD-VEN-001, 002, 005Tạo vendorTạo một vendor với tên + liên hệĐược tạo; VEN_YYYYMMDD_id được gán; liên kết với một merchantP1
TC-VEN-002URD-VEN-001Tạo không tênTạo một vendor không tênBị từ chối; "bắt buộc tên"P1
TC-VEN-003URD-VEN-003Mã số thuếCung cấp một mã số thuếĐược lưu và lấy lại đượcP2
TC-VEN-004URD-VEN-002Định dạng định danhTạo bất kỳ vendor nàoĐịnh danh VEN_YYYYMMDD_id; duy nhấtP1
TC-VEN-005URD-VEN-004Soft delete (chưa dùng)Soft-delete một vendor không có PO hoạt độngGắn cờ đã xóa; vắng khỏi list hoạt động; dữ liệu được giữP1
TC-VEN-006URD-VEN-004Soft delete (đang dùng)Xóa một vendor được tham chiếu bởi PO hoạt độngBị từ chối (đang dùng) hoặc tiến hành giữ tham chiếu PO; không có orphanP1
TC-VEN-007URD-VEN-005Cô lập merchantMerchant A liệt kê vendorChỉ vendor của A trả về; của B bị ẩnP1

Đơn mua hàng (PO)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-PO-001URD-PO-001, 012Tạo với mụcTạo PO với vendor + mục trong một callDRAFT; số PO được gán; mục + merchant liên kếtP1
TC-PO-002URD-PO-001Tạo không vendorTạo một PO không vendorBị từ chối; "bắt buộc vendor"P1
TC-PO-003URD-PO-009Địa điểm mặc địnhTạo PO không có địa điểmGán cho địa điểm mặc định của merchantP1
TC-PO-004URD-PO-009Địa điểm rõ ràngTạo PO với một địa điểm không-mặc-địnhGán cho địa điểm chỉ định; mặc định không bị ghi đèP1
TC-PO-005URD-PO-002Xác nhậnXác nhận một PO DRAFT với ≥1 mụcDRAFT → PROCESSINGP1
TC-PO-006URD-PO-002, 004RevertRevert một PO PROCESSINGPROCESSING → DRAFT; mục nguyên vẹnP1
TC-PO-007URD-PO-002, 007Nhận hàngNhận một PO PROCESSINGPROCESSING → RECEIVED; tồn cập nhật qua trackingP1
TC-PO-008URD-PO-002Hoàn tấtHoàn tất một PO RECEIVEDRECEIVED → COMPLETEDP1
TC-PO-009URD-PO-002ĐóngĐóng một PO COMPLETEDCOMPLETED → CLOSEDP1
TC-PO-010URD-PO-003Cancel DRAFTCancel một PO DRAFT→ CANCELLED; dữ liệu được giữ; không biến động tồnP1
TC-PO-011URD-PO-003Cancel PROCESSINGCancel một PO PROCESSING→ CANCELLED; không biến động tồnP1
TC-PO-012URD-PO-003Cancel RECEIVEDCancel một PO RECEIVED→ CANCELLED; tồn đã nhận KHÔNG tự đảo ngượcP1
TC-PO-013URD-PO-003Cancel CLOSEDCancel một PO CLOSEDBị từ chối; CLOSED là cuốiP1
TC-PO-014URD-PO-003Cancel lạiCancel một PO CANCELLEDBị từ chối; đã cancelP1
TC-PO-015URD-PO-002Nhảy không hợp lệDRAFT → RECEIVED trực tiếpBị từ chối; chuyển không hợp lệP1
TC-PO-016URD-PO-002Từ cuốiCLOSED → bất kỳ không-cuốiBị từ chối; CLOSED là cuốiP1
TC-PO-017URD-PO-002LùiCOMPLETED → RECEIVEDBị từ chối; chuyển lùi không cho phépP1
TC-PO-018URD-PO-002Endpoint hoàn tấtGọi complete trên một PO RECEIVED→ COMPLETED, không lỗiP1
TC-PO-019URD-PO-006Xác nhận PO rỗngXác nhận một PO DRAFT với zero mụcBị từ chối; "phải có ít nhất một mục"P1
TC-PO-020URD-PO-008Nhận OVERRIDENhận 50 ở OVERRIDE trên on-hand 20On-hand đặt thành 50; số dư trước bỏ; PURCHASE_IN được trackingP1
TC-PO-021URD-PO-008Nhận ACCUMULATIVENhận 50 ở ACCUMULATIVE trên on-hand 20On-hand 70; số dư trước được giữ; change +50P1
TC-PO-022URD-PO-008Chế độ từ khôngNhận 50 cả hai chế độ trên on-hand 0Cả hai cho ra 50P1
TC-PO-023URD-PO-010Tính tổngsubtotal 1,000,000; discount 50,000; tax 50,000total = 1,000,000; mọi trường tóm tắt nhất quánP1
TC-PO-024URD-PO-010Discount/tax bằng khôngsubtotal 100,000; discount 0; tax 0total = 100,000P1
TC-PO-025URD-PO-011Cờ discount thủ côngNhập discount thủ côngMetadata gắn cờ discount là thủ côngP2
TC-PO-026URD-PO-011Cờ tax tự độngHệ thống tính taxMetadata gắn cờ tax là tự-tínhP2

Phát hiện QE (TC-PO-018): completePurchaseOrder có một guard bị đảo — nó hiện throw khi PO ĐANG ở RECEIVED/COMPLETED, ngược với chủ ý. Như đang viết, chỉ PO ở trạng thái khác mới "complete" được. TC-PO-018 fail với implementation hiện tại — một defect chặn flow complete.

Mục Đơn mua hàng (POI)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-POI-001URD-POI-001Cộng dồnThêm lại cùng (type, id, uom), qty +5Line có sẵn tăng lên 15; không hàng trùngP1
TC-POI-002URD-POI-001Mục khác biệtThêm biến thể V1 và V2Hai line riêng; theo dõi độc lậpP1
TC-POI-003URD-POI-001uom khácThêm cùng biến thể, uom BOX vs PCSLine mới; không cộng dồn xuyên uom khác nhauP1
TC-POI-004URD-POI-002Tổng lineunitPrice 10,000 × qty 5 × mult 1 + tax 500 − disc 200itemTotal = 50,300; tính bởi DBP1
TC-POI-005URD-POI-002Giá bằng khôngunitPrice 0, qty 1itemTotal = 0; không lỗiP1
TC-POI-006URD-POI-003Số lượng không gỡ bỏĐặt qty mục DRAFT thành 0Soft-delete; vắng khỏi list; tổng PO tính lạiP1
TC-POI-007URD-POI-003Âm gỡ bỏĐặt qty mục DRAFT thành −1Soft-delete (qty ≤ 0 kích xóa)P1
TC-POI-008URD-POI-003, PO-005Sửa sau xác nhậnĐặt qty mục 0 trên một PO PROCESSINGBị từ chối; mục chỉ sửa được ở DRAFTP1
TC-POI-009URD-PO-005Thêm sau nhậnThêm một mục mới vào một PO RECEIVEDBị từ chối; mục chỉ sửa được ở DRAFTP1
TC-POI-010URD-PO-005Sửa ở DRAFTThêm/cập nhật/gỡ mục trên một PO DRAFTTất cả thành công; tóm tắt tính lại mỗi thay đổiP1
TC-POI-011URD-POI-004Giá mặc địnhThêm mục không có đơn giá (giá vốn biến thể 8,000)unitPrice mặc định về 8,000P2
TC-POI-012URD-POI-005UOM mặc địnhThêm mục không có uom (đơn vị cơ sở PCS)uom mặc định về PCSP2

Nguyên vật liệu (MAT)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-MAT-001URD-MAT-001, 002Tạo nguyên vật liệuTạo nguyên vật liệu với tên i18nĐược lưu; MAT_YYYYMMDD_id; trạng thái ACTIVATEDP1
TC-MAT-002URD-MAT-002Định danh duy nhấtTạo nhanh nhiều nguyên vật liệuMỗi cái có một MAT_YYYYMMDD_id duy nhấtP1
TC-MAT-003URD-MAT-003Tên đa ngôn ngữCung cấp tên bằng en + viMọi locale được lưu và lấy lại đượcP1
TC-MAT-004URD-MAT-004Cập nhật mô tảCập nhật mô tả của một nguyên vật liệuĐược lưu; modifiedAt cập nhậtP1
TC-MAT-005URD-MAT-005Vô hiệu hóaVô hiệu hóa một nguyên vật liệu đã kích hoạtTrạng thái DEACTIVATED; vẫn đọc được; không thêm vào công thức mớiP1
TC-MAT-006URD-MAT-006Lưu trữLưu trữ một nguyên vật liệuTrạng thái ARCHIVED; chỉ đọc vĩnh viễnP1
TC-MAT-007URD-MAT-007Định danh trùngTạo nguyên vật liệu với định danh trùngRàng buộc duy nhất từ chối insertP1
TC-MAT-101URD-MAT-101Đính barcodeĐính một định danh BARCODEHàng định danh được lưu với scheme BARCODEP1
TC-MAT-102URD-MAT-102Mọi lược đồĐính SYSTEM, SLUG, SKU, BARCODE, QRCODECả năm lưu và lấy lại đượcP1
TC-MAT-103URD-MAT-103Trùng (scheme, code)Đăng ký một (BARCODE, code) có sẵn trên nguyên vật liệu khácBị từ chối bởi unique indexP1
TC-MAT-104URD-MAT-104Scheme mặc địnhTạo định danh không có schemeScheme mặc định về SYSTEMP1
TC-MAT-105URD-MAT-105Nhiều lược đồThêm một định danh thứ 2 của một scheme khácCả hai cùng tồn tại; không cái nào thay cái kiaP2
TC-MAT-106URD-MAT-106Tìm theo barcodeTìm theo một barcode đã đăng kýNguyên vật liệu trả về như match duy nhấtP2

Công thức / BOM (REC)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-REC-001URD-REC-001, 002Tạo công thứcTạo một công thức cho PV_X với 3 mụcĐược lưu với version 1.0; 3 mục liên kếtP1
TC-REC-002URD-REC-002Version mặc địnhTạo một công thức không versionVersion mặc định về 1.0P1
TC-REC-003URD-REC-003Trùng (principal, version)Tạo một công thức thứ 2 với cùng tripleBị từ chối bởi ràng buộc duy nhấtP1
TC-REC-004URD-REC-004, 005Thêm mụcThêm một mục công thức (nguyên vật liệu, qty, đơn vị)Hàng mới được lưu với mọi trườngP1
TC-REC-005URD-REC-006Nguyên vật liệu trùngThêm một nguyên vật liệu đã có trong công thứcBị từ chối bởi ràng buộc duy nhấtP1
TC-REC-006URD-REC-007Kích hoạtKích hoạt một công thức DRAFTTrạng thái ACTIVATEDP1
TC-REC-007URD-REC-008Vô hiệu hóaVô hiệu hóa một công thức ACTIVATEDTrạng thái DEACTIVATEDP1
TC-REC-008URD-REC-009Version mớiThêm một hàng mới cùng principal version 1.1Bản gốc được giữ; hàng mới được insertP2
TC-REC-009URD-REC-010List versionQuery công thức theo principal (1.0, 1.1, 2.0)Cả ba version trả vềP2
TC-REC-010URD-REC-011Runtime giải quyết đã kích hoạtQuery theo (principal, status=ACTIVATED) với chỉ 2.0 hoạt độngChỉ công thức 2.0 trả vềP1
TC-REC-101URD-REC-101FK nguyên vật liệu hợp lệTạo một mục công thứcFK giải quyết về một nguyên vật liệu có sẵnP1
TC-REC-102URD-REC-102Độ chính xác số lượngTạo mục với qty 0.0125Được lưu ở độ chính xác 4 chữ sốP1
TC-REC-103URD-REC-103Đơn vị được lưuTạo mục với đơn vị 'ml'Đơn vị được lưu là mlP1
TC-REC-104URD-REC-104Sửa số lượngCập nhật qty mục 200 → 250Số lượng được cập nhật; modifiedAt nhảyP1
TC-REC-105URD-REC-105Soft-delete thêm lạiGỡ một mục rồi thêm lại cùng nguyên vật liệuHàng soft-delete; thêm lại được phépP1
TC-REC-201URD-REC-201, 204Kích explosionMục phiếu bếp đổi trạng thái cho PV_X với công thức đã kích hoạtWorker tra cứu công thức, tìm địa điểm mặc định, chuẩn bị giảmP1
TC-REC-202URD-REC-202, 203Giảm thành phầnCho mỗi mục công thức khi explosionTồn nguyên vật liệu tại địa điểm mặc định được giảm; tracking USED_AS_MATERIAL được tạoP1
TC-REC-203URD-REC-205Phát eventExplosion hoàn tấtEvent material.stock-changed được phátP1
TC-REC-204URD-REC-206Không địa điểm mặc địnhĐổi trạng thái bếp, merchant không có địa điểm mặc địnhWarning được log, giảm bị bỏ qua, không lỗi cứngP2
TC-REC-205URD-REC-207Không công thức đã kích hoạtĐổi trạng thái bếp, biến thể không có công thức đã kích hoạt"Recipe Not Found" được log; không giảmP2
TC-REC-206URD-REC-208Địa điểm bếp không-mặc-địnhExplosion chạy cho một bếp ở địa điểm không-mặc-địnhGAP — code dùng địa điểm mặc định của merchant (TODO); chặn tới khi giải quyếtP3

Ràng buộc (CON)

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-CON-001URD-CON-001Không tokenGọi bất kỳ endpoint nào không authHTTP 401; không dữ liệuP1
TC-CON-002URD-CON-001Token hết hạnGọi bất kỳ endpoint nào với một JWT hết hạnHTTP 401; không dữ liệuP1
TC-CON-003URD-CON-001JWT hợp lệGọi bất kỳ endpoint nào với một JWT hợp lệĐã xác thực; phản hồi với dữ liệuP1
TC-CON-004URD-CON-001Basic authGọi bất kỳ endpoint nào với basic auth hợp lệĐã xác thực; phản hồi bình thườngP1
TC-CON-005URD-CON-002Admin lấy đã xóaAdmin query bao gồm bản ghi soft-deleteBản ghi lấy được; trường nguyên vẹn; cờ xóa được đặt; loại khỏi list chuẩnP1
TC-CON-006URD-CON-002List chuẩn loại đã xóaList chuẩn của một địa điểm soft-deleteLoại trừ; không lỗiP1
TC-CON-007URD-CON-004Replay idempotentReplay payment-success cho SO-001Không trừ lần hai; on-hand không đổi; trùng được xác nhận âm thầmP1
TC-CON-008URD-CON-004Idempotency đồng thờiKiểm tra idempotency trong khi trừ đang chạy cho cùng orderĐúng một lần trừ; lần hai bỏ qua; không trừ đôi do raceP1

3. Truy vết

Mỗi yêu cầu Must ánh xạ tới ≥1 test case. Một khoảng trống được gắn cờ bên dưới.

Yêu cầu URDTest caseTrạng thái
URD-LOC-001…010TC-LOC-001…020✅ Đã phủ
URD-ITM-001…006TC-ITM-001…010✅ Đã phủ
URD-STK-001…006TC-STK-001…010✅ Đã phủ
URD-STK-007⚠️ Chưa phủ (Could — xem tồn lịch sử)
URD-TRK-001…010TC-TRK-001…013✅ Đã phủ
URD-VEN-001…005TC-VEN-001…007✅ Đã phủ
URD-TKT-001…006⚠️ Chưa phủ (flow phiếu đang chờ xây)
URD-PO-001…012TC-PO-001…026✅ Đã phủ
URD-POI-001…005TC-POI-001…012✅ Đã phủ
URD-MAT-001…106TC-MAT-001…106✅ Đã phủ
URD-REC-001…207TC-REC-001…205✅ Đã phủ
URD-REC-208TC-REC-206⚠️ Gap — đang chờ code TODO trong MaterialWorkerService
URD-CON-001…004TC-CON-001…008, TC-STK-011, TC-TRK-007✅ Đã phủ

Tóm tắt: ~96 yêu cầu URD → 131 test case · 1 gap đã biết (TC-REC-206) · độ phủ mức-Must hoàn chỉnh trừ phiếu kho (TKT), vốn chưa được xây (xem URD §5.5).

4. Tài liệu Tham khảo

Tài liệuMô tả
URD KhoNguồn yêu cầu cho mọi truy vết TC
Tổng quan KhoĐịnh danh module, năng lực, luồng
Tài liệu lập trình viên — @nx/inventoryChi tiết triển khai và hành vi đã xác minh

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