Skip to content

PRD: Đơn sản xuất & phân rã BOM

ModuleKho (CORE-06)PRD IDPRD-PRO-001
Trạng tháiShippedChủ sở hữuInventory squad
Ngày2026-06-15Phiên bảnv1.0
Packages@nx/inventory · @nx/coreURDPRO · REC · TRK

TL;DR

Mang lại cho merchant kiểu sản xuất một đơn sản xuất rõ ràng - chứng từ nói "sản xuất bấy nhiêu của thành phẩm này từ công thức này, tại địa điểm này". Mỗi đơn nhắm tới một thành phẩm (biến thể bán được hoặc nguyên vật liệu bán thành phẩm), gắn với một công thức đã kích hoạt (BOM), và mang số lượng kế hoạch / thực tế / hao hụt, một vòng đời (DRAFT → IN_PROGRESS → DONE / CANCELLED), cửa sổ lịch và truy vết lô đầu ra cho thu hồi. Phía sau là engine phân rã BOM đa cấp làm phẳng công thức gắn kèm qua các bán thành phẩm lồng nhau xuống tận nguyên vật liệu lá thực sự rút khỏi tồn - với hệ số số lượng nhân dọc theo từng nhánh, một độ sâu lồng tối đa, và phát hiện chu trình - cùng một bộ từ vựng tracking chuyên dụng (PRODUCTION_CONSUME / PRODUCTION_OUTPUT) ghi nhận tiêu hao và đầu ra theo đơn.

1. Bối cảnh & Vấn đề

Mô hình công thức (REC) cho phép merchant F&B đính một định mức nguyên vật liệu có phiên bản vào một biến thể, và đường runtime tự trừ nguyên liệu khi một phiếu bếp tiến triển. Việc đó lo bán-rồi-trừ, nhưng không lo sản xuất-vào-kho: một tiệm bánh nướng 200 ổ lúc 6h sáng, một bếp trung tâm nấu mẻ sốt, một xưởng lắp bộ kit. Những merchant này lên kế hoạch một lượt sản xuất trước khi bán, theo một công thức, và cần một chứng từ theo dõi cái gì được lên kế hoạch, cái gì thực sự làm ra, và cái gì bị hao hụt.

Không có đơn sản xuất thì không có chỗ cho một lượt đã lên kế hoạch: không có số liệu kế hoạch-vs-thực tế-vs-hao hụt, không có số sản xuất để tham chiếu, không có vòng đời để đưa một lượt từ nháp sang xong, và không có lô đầu ra để truy thu hồi về. Cũng không có cách tổng quát để mở rộng một công thức mà bản thân nó chứa bán thành phẩm (một khối bột vốn cũng là một công thức) xuống tận nguyên vật liệu thô mà một lượt tiêu hao.

Increment này cung cấp chứng từ đơn sản xuất, mô hình vòng đời và định danh của nó, engine phân rã BOM đa cấp làm phẳng công thức lồng nhau xuống nguyên vật liệu lá, và bộ từ vựng tracking sản xuất ghi nhận tiêu hao và đầu ra - nền tảng mà một lượt sản xuất-vào-kho dựng trên đó.

2. Mục tiêu & Không-mục-tiêu

Mục tiêu

  • Một chứng từ đơn sản xuất nhắm tới thành phẩm (biến thể hoặc nguyên vật liệu), gắn với công thức đã kích hoạt, phạm vi theo merchant.
  • Mang số lượng kế hoạch / thực tế / hao hụt theo đơn vị đo của đơn ở độ chính xác thập phân.
  • Một trạng thái vòng đời với chuyển đổi xác định (DRAFT → IN_PROGRESS → DONE / CANCELLED) và một số sản xuất sinh tự động, duy nhất.
  • Một địa điểm sản xuất có tên, cửa sổ lịch tuỳ chọn, và lô / hạn dùng đầu ra cho truy vết thu hồi.
  • Một engine phân rã BOM đa cấp làm phẳng công thức gắn kèm qua bán thành phẩm lồng nhau xuống nguyên vật liệu lá, lan truyền hệ số số lượng, dùng phiên bản công thức đã kích hoạt mới nhất, và chốt chặn độ sâu chạy loạn lẫn chu trình.
  • Một bộ từ vựng tracking chuyên dụng (PRODUCTION_CONSUME / PRODUCTION_OUTPUT, reference type ProductionOrder) để tiêu hao thành phần và đầu ra thành phẩm được ghi như biến động bất biến theo đơn.

Không-mục-tiêu

  • Thực thi vòng đời tự động - các hành động start/complete vật lý rút thành phần và ghi thành phẩm khi hoàn thành là một increment sắp tới; PRD này cung cấp chứng từ, engine phân rã, và từ vựng tracking chúng sẽ dùng.
  • Hoạch định công suất, lập lịch trung tâm sản xuất, hay chi phí nhân công/khấu hao.
  • Mô hình hoá tỷ lệ yield và hao hụt của công thức (phạm vi URD) - hao hụt được ghi như số lượng tuyệt đối trên đơn, không suy từ tỷ lệ yield.
  • Tính giá sản xuất đa tiền tệ hay định giá tồn kho.
  • Bản thân quy tắc soạn công thức (phiên bản, kích hoạt, tính duy nhất của mục) - đặc tả tại Công thức / BOM (REC).

3. Số liệu Thành công

Số liệuMục tiêu / tín hiệu
Phủ chứng từ sản xuấtMột lượt được biểu diễn bởi một đơn mang kế hoạch / thực tế / hao hụt và một số sản xuất duy nhất
Toàn vẹn vòng đờiTrạng thái chỉ đi theo chuyển đổi hợp lệ; DONECANCELLED là tận cùng
Tính đúng phân rãMột công thức gắn kèm phân rã đúng ra nguyên vật liệu lá của nó, với số lượng từng nhánh = tích của đường đi
An toàn phân rãMột chuỗi công thức có chu trình hay cây sâu hơn tối đa bị từ chối, không bao giờ lặp
Từ vựng auditBiến động sản xuất là mục bất biến kiểu PRODUCTION_CONSUME / PRODUCTION_OUTPUT và tham chiếu tới đơn

4. Chân dung & Tình huống

Chân dungMục tiêu trong tính năng
Chủ / Quản lýLên kế hoạch một lượt sản xuất theo công thức và theo dõi kế hoạch vs. thực tế vs. hao hụt
Nhân viên sản xuấtĐưa một đơn qua vòng đời và ghi cái gì thực sự làm ra
Cán bộ chất lượng / thu hồiTruy một lô đã sản xuất về đơn và các thành phần nó rút

Tình huống cốt lõi: chủ tiệm bánh tạo một đơn sản xuất để nướng 200 ổ baguette từ công thức đã kích hoạt "Baguette - chuẩn" tại bếp chính, lên lịch 06:00 ngày mai. Hệ thống gán một số sản xuất và mở đơn ở DRAFT. Công thức gắn kèm - mà khối bột của nó vốn là một công thức con gồm bột mì, nước và men - được làm phẳng xuống nguyên vật liệu lá, với mỗi số lượng lá được nhân theo 200 đơn vị kế hoạch. Khi lượt sau đó được làm và hoàn thành, tiêu hao thành phần và đầu ra thành phẩm được ghi như mục tracking bất biến theo đơn.

5. Câu chuyện Người dùng

  • Là một chủ, tôi lên kế hoạch một lượt bằng cách nêu thành phẩm, công thức, số lượng và địa điểm, để một đơn sản xuất tồn tại theo dõi nó.
  • Là một chủ, tôi ghi số lượng kế hoạch, thực tế và hao hụt, để thấy một lượt hoạt động ra sao.
  • nhân viên sản xuất, tôi đưa một đơn DRAFT → IN_PROGRESS → DONE, hoặc huỷ nó, để trạng thái phản ánh thực tế.
  • Là một chủ, tôi muốn một công thức có bán thành phẩm được mở rộng tới nguyên vật liệu thô mà một lượt tiêu hao, để thấy lượng rút thật trên tồn.
  • Là một chủ, tôi muốn một công thức tham chiếu chính nó thành vòng lặp bị từ chối, để một lượt không bao giờ tính một danh sách thành phần vô tận.
  • Là một cán bộ thu hồi, tôi truy một lô đã sản xuất về đơn và đọc các thành phần nó tiêu hao, để khoanh vùng một đợt thu hồi.

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

#Yêu cầuURD ref
FR-1Một đơn sản xuất nhắm tới thành phẩm (ProductVariant hoặc Material) và gắn với một công thức nguyên vật liệuURD-PRO-001..002
FR-2Đơn mang số lượng kế hoạch / thực tế / hao hụt theo đơn vị đo của nó ở độ chính xác thập phânURD-PRO-003
FR-3Đơn đi qua DRAFT → IN_PROGRESS → DONE / CANCELLED; DONECANCELLED là tận cùngURD-PRO-004
FR-4Mỗi đơn có một số sản xuất sinh tự động, duy nhất, không sửa bởi người dùngURD-PRO-005
FR-5Đơn nêu một địa điểm sản xuất nơi thành phần được rút và thành phẩm được làm raURD-PRO-006
FR-6Đơn hỗ trợ cửa sổ lịch và ghi mốc thời gian bắt đầu / hoàn thành / huỷURD-PRO-007..008
FR-7Đơn có thể mang một số lô đầu ra và hạn dùng cho truy vết thu hồiURD-PRO-009
FR-8Đơn sản xuất cô lập theo merchant và soft-deleteURD-PRO-010 · URD-CON-002
FR-9Một công thức gắn kèm được làm phẳng qua bán thành phẩm lồng nhau xuống nguyên vật liệu lá, dùng phiên bản công thức đã kích hoạt mới nhất mỗi principalURD-PRO-011..012
FR-10Làm phẳng bị chốt bởi độ sâu lồng tối đa và từ chối chuỗi công thức chu trình; mỗi số lượng lá là tích của các số lượng dọc đường đi của nóURD-PRO-013..014
FR-11Một thành phần biến thể không có công thức con đã kích hoạt bị bỏ qua; một nguyên vật liệu không có công thức con là một lá tiêu hao trực tiếpURD-PRO-015
FR-12Tiêu hao thành phần và đầu ra thành phẩm được ghi như mục tracking bất biến tham chiếu tới đơn, kiểu PRODUCTION_CONSUME / PRODUCTION_OUTPUTURD-PRO-016 · URD-TRK-001..005

Toàn văn yêu cầu và tiêu chí nghiệm thu nằm tại URD Kho - PRO. PRD này tham chiếu thay vì lặp lại chúng.

7. Yêu cầu Phi chức năng

Lĩnh vựcYêu cầu
Tenancy & authzMọi thao tác phạm vi theo merchant (x-merchant-id) và gated bởi quyền đơn sản xuất
Toàn vẹn định danhSố sản xuất là duy nhất và sinh tự động; không bao giờ do người dùng cấp
Độ chính xácSố lượng kế hoạch / thực tế / hao hụt và thành phần dùng độ chính xác thập phân (4 chữ số)
An toàn phân rãLàm phẳng bị chốt độ sâu và canh chu trình - một đồ thị công thức méo lỗi nhanh, không bao giờ lặp
Hiệu năng phân rãĐồ thị BOM được nạp trước theo truy vấn theo lô, theo từng cấp để làm phẳng chạy trong bộ nhớ không round-trip mỗi node
Bất biếnBiến động sản xuất là mục tracking chỉ-thêm; sửa chữa qua mục mới, không bao giờ sửa
i18nTrạng thái và nhãn lý do hướng người dùng là song ngữ ({ en, vi })

8. Trải nghiệm & Luồng

Vòng đời

Phân rã BOM đa cấp

Bề mặt sản xuất cho chủ chọn thành phẩm và công thức, đặt số lượng kế hoạch và đơn vị, chọn địa điểm, tuỳ chọn lên lịch lượt và gán nhãn lô đầu ra, rồi đưa đơn qua vòng đời. Engine phân rã mở rộng công thức gắn kèm tới nguyên vật liệu lá mà một lượt tiêu hao.

9. Dữ liệu & Miền

Thực thểVai trò
ProductionOrderChứng từ sản xuất - thành phẩm nhắm tới, công thức gắn kèm, kế hoạch/thực tế/hao hụt, trạng thái, địa điểm, số sản xuất, lịch, lô đầu ra
MaterialRecipeĐịnh mức đã kích hoạt mà đơn gắn vào; công thức bán thành phẩm được đệ quy khi phân rã
MaterialRecipeItemMột dòng thành phần - một nguyên vật liệu lá tiêu hao trực tiếp, hoặc một principal có công thức con đã kích hoạt riêng
InventoryTrackingBiến động bất biến phía sau tiêu hao / đầu ra sản xuất, kiểu bởi các lý do sản xuất

Chỉ khái niệm - schema và bất biến đầy đủ nằm trong domain model kho. Quan hệ là tham chiếu mềm; toàn vẹn được thực thi trong service, không bởi ràng buộc CSDL.

10. Phụ thuộc & Giả định

Phụ thuộc vào

  • Công thức / BOM (REC, PRD-REC-001) - một đơn sản xuất gắn với một công thức đã kích hoạt, mà engine phân rã làm phẳng.
  • Nguyên vật liệu (MAT, PRD-MAT-001) - thành phần lá của một công thức đã phân rã là nguyên vật liệu.
  • Địa điểm kho (LOC) - một đơn nêu địa điểm nó sản xuất tại.
  • Audit trail biến động (TRK) - tiêu hao / đầu ra sản xuất được ghi như mục tracking bất biến.
  • @nx/core - mô hình đơn sản xuất, từ vựng trạng thái, và các lý do sản xuất.

Giả định

  • Một thành phẩm có ít nhất một phiên bản công thức đã kích hoạt để gắn vào.
  • Địa điểm nhắm tới tồn tại trong merchant.
  • Một thành phần biến thể nên phân rã thì mang công thức con đã kích hoạt riêng; nếu không nó bị bỏ qua khi phân rã.

11. Rủi ro & Câu hỏi mở

Rủi ro / câu hỏiGiảm thiểu / trạng thái
Một công thức tham chiếu chính nó, lặp danh sách thành phầnPhân rã phát hiện chu trình và từ chối đồ thị
Một cây công thức lồng sâu chạy loạnPhân rã bị chốt bởi độ sâu lồng tối đa và lỗi nhanh vượt mức
Dùng phiên bản công thức con cũPhân rã luôn giải phiên bản đã kích hoạt mới nhất mỗi principal
Thành phần biến thể không phân rã đượcMột biến thể không có công thức con đã kích hoạt bị bỏ qua (nó không phải nguyên vật liệu), được warn, không bao giờ phát như lá
Thực thi vòng đời chưa tự độngCó chủ ý - hành động start/complete rút thành phần và ghi đầu ra đến trong một increment sắp tới; chứng từ, engine và từ vựng tracking đã sẵn

12. Kế hoạch Phát hành & Tiêu chí Ra mắt

Khía cạnhKế hoạch
PhaseP3 (BOM + nâng cao) - PRO trong catalog tính năng URD, bên cạnh MATREC
Triển khaiMerchant ngành sản xuất / F&B; không feature flag
Di trúKhông - bảng đơn sản xuất và các lý do sản xuất ship cùng schema kho
Tiêu chí ra mắtMột đơn có thể tạo với target, công thức, số lượng kế hoạch và địa điểm; một số sản xuất được gán và trạng thái mở ở DRAFT; trạng thái chỉ đi theo chuyển đổi hợp lệ; một công thức gắn kèm phân rã ra nguyên vật liệu lá với số lượng đã nhân; đồ thị chu trình / quá sâu bị từ chối; biến động sản xuất mang các lý do sản xuất và tham chiếu tới đơn
Giám sátLỗi phân rã theo lý do (chu trình, độ sâu), số đơn sản xuất theo trạng thái, tỷ lệ giải nguyên vật liệu lá

13. FAQ

Đơn sản xuất khác trừ tồn theo công thức bếp ra sao? Trừ tồn bếp là bán-rồi-trừ - nó nổ khi một mục phiếu tiến triển. Đơn sản xuất là làm-vào-kho - một lượt đã lên kế hoạch theo công thức, với kế hoạch/thực tế/hao hụt và vòng đời riêng, ghi trước (hoặc độc lập với) bất kỳ giao dịch bán nào.

"BOM đa cấp" ở đây nghĩa là gì? Một thành phần công thức có thể tự nó là một principal có công thức đã kích hoạt riêng (một khối bột bên trong một ổ baguette). Phân rã đệ quy vào những bán thành phẩm đó tới khi đạt nguyên vật liệu lá, nhân số lượng dọc đường đi.

Cái gì ngăn một vòng lặp công thức treo hệ thống? Phân rã theo dõi công thức đã thăm và áp một độ sâu lồng tối đa - một chu trình hay một cây quá sâu bị từ chối ngay thay vì lặp.

Phiên bản công thức nào được dùng? Luôn là phiên bản đã kích hoạt mới nhất cho mỗi principal; bản nháp hoặc đã vô hiệu bị bỏ qua.

Hoàn thành một đơn có rút tồn tự động hôm nay không? Chưa - chứng từ, gắn công thức, engine phân rã và từ vựng tracking sản xuất (PRODUCTION_CONSUME / PRODUCTION_OUTPUT) đã sẵn; việc thực thi tự động ghi các biến động đó khi hoàn thành là một increment sắp tới.

Tham chiếu

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