PRD: Kho & mức tồn
| Module | Kho | PRD ID | PRD-STK-001 |
| Trạng thái | Đã thay thế | FEAT | STK |
| Epic | — | Plane | — |
| Ngày | 2026-07-13 | Phiên bản | v1.0 |
| Gói | @nx/inventory | URD | STK |
| Surface | Client · Chủ/QLBO · Vận hành | ||
| Phụ trách | Phát Nguyễn | ||
Kho & mức tồn là gì
Một chi nhánh (Merchant) có thể có nhiều kho (InventoryLocation): kho tổng, quầy bar, bếp. Nhiều chi nhánh cùng nằm trong một tổ chức (Organizer). Các kho lồng vào nhau thành cây, và mỗi chi nhánh luôn có đúng một kho mặc định.
Mục kho (Stock Item) là một mặt hàng tại một kho. Đây là nơi tồn kho thật sự được ghi: mở một mục kho ra là thấy hàng đang nằm ở đâu, còn bao nhiêu, và bao nhiêu trong số đó còn bán được. PRD này dựng nền móng đó cho toàn bộ module Kho.
Bốn chỉ số trong tồn kho
Bốn con số này là chủ đề của chính PRD này, và mọi PRD Kho khác trích lại từ đây. Mỗi mặt hàng ở mỗi kho mang:
| Con số | Hệ thống gọi | Nghĩa |
|---|---|---|
| Thực có | on-hand | Hàng đang nằm trên kệ, sờ được, đếm được |
| Đang giữ | reserved | Đã hứa cho một đơn bán hoặc một phiếu chuyển; vẫn trên kệ nhưng không bán cho ai khác được nữa |
| Khả dụng | available | Phần còn bán được |
| Đang về | incoming | Đã rời kho gửi, chưa tới kho này; thấy được nhưng chưa bán được |
Bất biến, đúng ở mọi thời điểm:
Khả dụng = Thực có - Đang giữVì sao một con số tồn là không đủ
Một quán trà sữa có quầy pha chế phía trước và kho nguyên liệu phía sau. Một chuỗi bán lẻ có kho tổng và nhiều chi nhánh. Hệ thống chỉ giữ một con số "còn bao nhiêu hàng" cho cả chi nhánh thì thu ngân ở chi nhánh A không biết hàng nằm ở chi nhánh B, và người kiểm kê không biết phải đếm ở đâu.
Vấn đề thứ hai nằm ở chính con số tồn. Một con số duy nhất không trả lời được câu hỏi quan trọng nhất của người bán: tôi còn bán được bao nhiêu. Hàng trên kệ có thể đã hứa cho một đơn đang thanh toán, hoặc đã gói vào một phiếu chờ chuyển kho. Người bán hàng nhìn khả dụng, người kiểm kê nhìn thực có, và cả hai đều đúng.
Một mặt hàng, từ lúc nhập tới lúc bán
Coca tại Khu lạnh. Ngưỡng cảnh báo sắp hết hàng của mục kho này là 15.
| Việc xảy ra | Thực có | Đang giữ | Khả dụng | Đang về |
|---|---|---|---|---|
| Nhập 10 lon vào Khu lạnh | 10 | 0 | 10 | 0 |
| Thu ngân bấm 3 lon vào đơn | 10 | 3 | 7 | 0 |
| Khách thanh toán, đơn hoàn tất | 7 | 0 | 7 | 0 |
| Phiếu chuyển kho xuất 5 lon về Khu lạnh | 7 | 0 | 7 | 5 |
| Khu lạnh đếm đủ 5 lon và nhận | 12 | 0 | 12 | 0 |
- Bấm món vào đơn không làm thực có giảm. Hàng vẫn trên kệ; cái giảm là khả dụng.
- Khả dụng cuối cùng là 12, dưới ngưỡng 15, nên màn Tồn kho cảnh báo sắp hết hàng ngay trên dòng của mục kho này.
- Mở "Kho tổng" - cha của Khu lạnh - thì thấy tồn cộng dồn của chính nó và mọi khu con bên trong.
Chỗ dễ sai nhất
Khả dụng không phải một cột được cập nhật bằng tay
Khả dụng = Thực có - Đang giữ được ép trực tiếp ở tầng cơ sở dữ liệu. Mọi thao tác ghi làm sai đẳng thức này đều bị từ chối ngay tại tầng lưu trữ.
Một luồng ghi tồn mới viết sai thứ tự cập nhật cũng không thể để lại một mục kho có ba con số không khớp nhau. Hệ thống không trông vào việc từng luồng code nhớ tính đúng.
Hệ quả: giữ tồn cho một đơn bán làm khả dụng giảm ngay lập tức, trên mọi máy POS, mà thực có không đổi một đơn vị nào.
1. Mục tiêu & Loại trừ
Mục tiêu
- Cho merchant dựng cây địa điểm kho không giới hạn số tầng, phân biệt địa điểm vật lý với địa điểm mô phỏng.
- Đảm bảo mọi merchant luôn có đúng một địa điểm mặc định, kể cả merchant chưa từng mở màn cấu hình kho.
- Mang bốn con số tồn tới từng tổ hợp mặt hàng - địa điểm - lô - serial.
- Cảnh báo sắp hết hàng theo ba tầng ngưỡng, lấy tầng đầu tiên có khai.
- Cho merchant xem tồn cộng dồn theo nhánh cây địa điểm, và cộng dồn của một mặt hàng trên toàn bộ địa điểm.
- Ép bất biến khả dụng = thực có - đang giữ ngay ở tầng cơ sở dữ liệu.
Loại trừ
- Cơ chế giữ tồn theo từng người giữ và cờ cho bán âm - thuộc feature Giữ tồn.
- Giá vốn của mặt hàng - thuộc feature Giá vốn.
- Nội dung từng dòng sổ biến động, mã lý do và cơ chế chống ghi trùng - thuộc feature Sổ biến động.
- Vòng đời lô, hạn dùng và chiến lược xuất - thuộc feature Lô, hạn dùng & chiến lược xuất.
- Phiếu kho, chuyển kho, kiểm kê - thuộc các feature
TKT,TRF,CNT. - Ngưỡng đặt hàng lại và tồn an toàn - thuộc feature Bổ sung hàng.
2. Thước đo thành công
| Thước đo | Mục tiêu / tín hiệu |
|---|---|
| Độ đúng của khả dụng | Khả dụng khớp đúng thực có trừ đang giữ trên mọi mục kho, không dòng nào lệch |
| Độ phủ địa điểm mặc định | 100% merchant có đúng một địa điểm mặc định, kể cả merchant chưa mở màn cấu hình kho |
| Chặn bán quá tay | Số lần bán vượt tồn ngoài ý muốn giảm dần về 0 trên các merchant không bật cho bán âm |
| Hữu dụng của cảnh báo | Merchant phản hồi rằng danh sách sắp hết hàng đúng thứ cần nhập, ít mục nhiễu |
| Tin cậy của số tồn | Chênh lệch giữa số máy và số đếm thật khi kiểm kê thu hẹp dần theo thời gian |
3. Persona & Tình huống
| Persona | Mục tiêu trong tính năng này |
|---|---|
| Chủ merchant / Quản lý | Dựng cây địa điểm, chọn kho mặc định, đặt ngưỡng cảnh báo, sửa số tồn khi số máy lệch số thật |
| Nhân viên kho | Mở màn Tồn kho mỗi ngày để biết còn bao nhiêu, đang giữ cho ai, mục nào sắp hết - cảnh báo hiện ngay trên từng dòng |
| Thu ngân | Được chặn ngay tại giỏ hàng khi khả dụng không đủ, thay vì bán rồi mới biết hết hàng |
| Đội vận hành | Xem và sửa địa điểm, mục kho của mọi merchant tại Back Office khi merchant cần hỗ trợ |
| Hệ thống | Tự tạo địa điểm mặc định và mục kho ngay lần đầu cần ghi tồn, để không nghiệp vụ nào bị chặn vì chưa chọn kho |
Kịch bản cốt lõi: chủ merchant tạo Kho tổng rồi lồng Khu lạnh vào bên trong → nhập hàng vào Khu lạnh, mục kho được sinh ra với thực có tăng lên → thu ngân bấm món vào đơn, đang giữ tăng và khả dụng giảm ngay → nhân viên kho mở màn Tồn kho, thấy mục kho giảm dưới ngưỡng và được cảnh báo sắp hết hàng → chủ merchant xem tồn cộng dồn của Kho tổng, thấy đúng tổng của mọi khu con.
4. User Stories
| # | Là một | Tôi muốn | Để |
|---|---|---|---|
| 01 | chủ merchant | dựng cây địa điểm kho phản ánh đúng mặt bằng của mình (kho tổng, quầy bar, bếp) | biết hàng đang nằm ở đâu |
| 02 | chủ merchant | hệ thống luôn có sẵn một kho mặc định | bán được hàng ngay ngày đầu mà không phải vào cấu hình kho trước |
| 03 | nhân viên kho | nhìn một mục kho là thấy đủ bốn con số | biết cái gì đang trên kệ và cái gì thật sự bán được |
| 04 | nhân viên kho | hệ thống báo mặt hàng nào sắp hết theo ngưỡng tôi đặt | nhập hàng trước khi đứt hàng |
| 05 | quản lý | xem tồn cộng dồn của cả một nhánh kho | không phải mở từng khu con và cộng tay |
| 06 | quản lý | sửa thẳng số thực có khi số máy lệch số thật, và mỗi lần sửa đều có dấu vết ai sửa vì lý do gì | số máy về đúng số thật mà vẫn truy lại được |
| 07 | thu ngân | con số khả dụng luôn đúng | tôi không bán món đã bị giữ cho một đơn khác |
5. Yêu cầu chức năng
| # | Yêu cầu | Trạng thái | URD ref |
|---|---|---|---|
FR-001 | Merchant tạo một địa điểm kho tại trang Client với tên hiển thị và loại địa điểm. • Loại vật lý: chỗ chứa hàng có thật như kho tổng, quầy bar, bếp. • Loại mô phỏng: chỉ để nhóm hoặc lập kế hoạch. Tồn ghi tại địa điểm mô phỏng không tính vào tổng tồn vật lý của merchant. | 🔶 | URD-LOC-001 |
FR-002 | Một địa điểm lồng vào một địa điểm cha để tạo cây phân cấp (vd Kho tổng > Khu A > Kệ lạnh), không giới hạn số tầng. | 🔶 | URD-LOC-002 |
FR-003 | Mỗi merchant có đúng một địa điểm mặc định tại một thời điểm. Chỉ định một địa điểm khác làm mặc định thì địa điểm cũ tự thôi làm mặc định, merchant không phải gỡ cờ cũ. | ✅ | URD-LOC-003 |
FR-004 | Merchant chưa từng tạo địa điểm nào vẫn bán hàng và nhập hàng bình thường. Hệ thống tự tạo một địa điểm mặc định ngay lần đầu cần ghi tồn, không báo lỗi chưa chọn kho. | ✅ | URD-LOC-004 |
FR-005 | Địa điểm đi qua bốn trạng thái: Mới tạo → Đang hoạt động → Ngừng hoạt động → Lưu trữ. • Không cho lưu trữ hay xóa địa điểm đang là mặc định. • Tồn và lịch sử của địa điểm đã ngừng hoạt động vẫn giữ nguyên, tra cứu lại được. • Địa điểm ngừng hoạt động biến mất khỏi danh sách chọn nơi nhập, xuất, chuyển hàng. | 🔶 | URD-LOC-005 |
FR-006 | Merchant nhập địa chỉ cho một địa điểm vật lý. • Nhập và lưu địa chỉ, mở lại địa điểm là thấy đúng địa chỉ đã nhập. • Địa chỉ đó in lên chứng từ nhập hàng và dùng để phối hợp giao nhận. | 🔶 | URD-LOC-006 |
FR-007 | Merchant xem tồn cộng dồn của một nhánh trong cây địa điểm: mở "Kho tổng" là thấy tồn của chính nó cộng mọi khu con bên trong, không phải mở từng khu và cộng tay. | 🚧 | URD-LOC-007 |
FR-008 | Đội vận hành xem và quản lý địa điểm kho của mọi merchant tại Back Office, cùng cấu trúc cây và cùng vòng đời như merchant tự quản lý trên Client. | ✅ | URD-LOC-008 |
FR-009 | Một mặt hàng bật theo dõi tồn thì tự có mục kho ngay lần đầu hệ thống cần ghi tồn cho nó. • Mặt hàng là một biến thể sản phẩm, hoặc một nguyên vật liệu. • Mục kho sinh ra khi biến thể được đồng bộ từ danh mục sản phẩm, hoặc khi hàng về lần đầu qua một lần nhập hàng. • Merchant không phải tự tạo mục kho bằng tay trước khi nhập hàng. | ✅ | URD-STK-001 |
FR-010 | Mỗi mục kho tại một địa điểm mang bốn con số tồn. • Thực có: số hàng đang nằm trên kệ, sờ được. • Đang giữ: phần đã hứa cho một đơn bán hoặc một phiếu chuyển, còn trên kệ nhưng không bán tiếp được. • Khả dụng: thực có trừ đang giữ, là con số quyết định có bán được hay không. • Đang về: hàng đã rời kho gửi, đang trên đường tới địa điểm này, thấy được nhưng chưa bán được. | 🔶 | URD-STK-002 |
FR-011 | Khả dụng luôn bằng thực có trừ đang giữ, đúng ở mọi thời điểm đọc được, kể cả khi nhiều thao tác ghi tồn cùng xảy ra đồng thời trên cùng một mục kho. | 🔶 | URD-STK-003 |
FR-012 | Mặt hàng bật theo dõi lô hoặc serial thì mục kho được tách nhỏ hơn nữa. • Theo dõi lô: cùng mặt hàng, cùng địa điểm nhưng khác lô là hai bản ghi tồn riêng. • Theo dõi serial: tách tới từng đơn vị serial. • Cộng các bản ghi con lại đúng bằng tổng tồn của mặt hàng đó tại địa điểm đó. | 🚧 | URD-STK-004 |
FR-013 | Cảnh báo sắp hết hàng chạy theo ba tầng ngưỡng, lấy tầng đầu tiên có khai. • Tầng 1: ngưỡng riêng khai cho chính mục kho đó. • Tầng 2: ngưỡng chung khai cho mặt hàng, áp cho mọi địa điểm. • Tầng 3: ngưỡng mặc định của hệ thống, dùng khi hai tầng trên đều bỏ trống. • Màn Tồn kho hiện cảnh báo ngay trên dòng của từng mục kho; màn Nguyên vật liệu hiện thêm một con số đếm mặt hàng sắp hết. | 🔶 | URD-STK-005 |
FR-014 | Merchant xem tồn của một mặt hàng theo hai cách: cộng dồn trên toàn bộ địa điểm, hoặc bóc riêng từng địa điểm. | ✅ | URD-STK-006 |
FR-015 | Merchant hoặc đội vận hành sửa thẳng số thực có của một mục kho qua màn quản trị, không cần lập phiếu kho. • Dùng khi số máy lệch số thật và cần chỉnh gấp. • Người sửa chọn lý do ngay trên ô lý do của form. Bỏ trống thì dòng sổ mang lý do "điều chỉnh tồn". • Mỗi lần sửa để lại một dòng sổ biến động kèm số cũ và số mới. • Màn xem sổ biến động có ở cả Client lẫn Back Office để tra lại các dòng đó. | 🔶 | URD-STK-007 |
FR-016 | Mỗi mục kho ghi lại thời điểm gần nhất được kiểm kê và thời điểm gần nhất được nhập hàng, để merchant biết mục kho nào lâu chưa kiểm lại. | 🚧 | URD-STK-008 |
FR-017 | Bất biến khả dụng = thực có - đang giữ được ép trực tiếp ở tầng cơ sở dữ liệu. • Cơ sở dữ liệu từ chối mọi thao tác ghi làm sai đẳng thức này. • Một luồng ghi tồn mới viết sai thứ tự cập nhật cũng không thể để lại một mục kho có ba con số không khớp nhau. | 🚧 | URD-STK-009 |
5.1 Tiêu chí nghiệm thu
- Tạo địa điểm "Kho tổng" loại vật lý, rồi tạo "Khu lạnh" chọn cha là "Kho tổng" → "Khu lạnh" hiện ra là con của "Kho tổng" trong cây địa điểm.
- Tạo một địa điểm loại mô phỏng để nhóm hàng đang lên kế hoạch nhập → địa điểm hiện trong cây với đúng nhãn loại mô phỏng, phân biệt rõ với địa điểm vật lý. Ghi tồn vào đó rồi xem tổng tồn vật lý của merchant → phần tồn tại địa điểm mô phỏng không cộng vào tổng.
- Đang có "Quầy bar" là mặc định, chỉ định "Kho tổng" làm mặc định → "Kho tổng" thành mặc định, "Quầy bar" tự thôi mặc định, không phải gỡ tay.
- Merchant mới hoàn toàn, chưa từng mở màn Địa điểm kho, bán món hàng đầu tiên trên POS → đơn bán xong bình thường, hệ thống tự tạo một địa điểm mặc định và trừ tồn tại đó.
- Chuyển một địa điểm sang Ngừng hoạt động → trạng thái đổi ngay trên danh sách, mở lại lịch sử tồn của nó thì số cũ vẫn nguyên. Thử lưu trữ hoặc xóa chính địa điểm đang là mặc định → hệ thống chặn lại. Mở form nhập hàng → địa điểm đã ngừng hoạt động không còn trong danh sách chọn kho nhập.
- Nhập địa chỉ cho một địa điểm vật lý, lưu rồi mở lại địa điểm đó → thấy đúng địa chỉ vừa nhập. In chứng từ nhập hàng tại địa điểm đó → địa chỉ hiện trên chứng từ.
- Có tồn 30 ở "Khu A" và 20 ở "Khu B", cả hai đều là con của "Kho tổng" → mở tồn cộng dồn của "Kho tổng" → thấy 50.
- Đăng nhập Back Office, mở địa điểm kho của một merchant bất kỳ → thấy đúng cây địa điểm và đổi được trạng thái vòng đời như merchant làm trên Client.
- Tạo một biến thể sản phẩm mới có bật theo dõi tồn → mở màn Tồn kho → mục kho của biến thể đó đã có sẵn với thực có 0, không phải tạo tay.
- Mở màn chi tiết một mục kho có thực có 10 và đang giữ 3 → khả dụng hiển thị 7; sau khi một phiếu chuyển kho đưa 5 đơn vị về địa điểm này, đang về hiển thị 5 và khả dụng vẫn là 7.
- Hai thu ngân cùng bấm mặt hàng còn khả dụng 1 vào hai đơn khác nhau cùng lúc → đúng một người giữ được, người còn lại bị từ chối ngay tại giỏ; đọc lại mục kho thấy khả dụng đúng bằng thực có trừ đang giữ.
- Bật theo dõi lô cho một mặt hàng, nhập hai đợt tạo lô A (10 đơn vị) và lô B (5 đơn vị) tại cùng một địa điểm → màn chi tiết tồn hiện hai dòng riêng, cộng lại đúng 15.
- Một nguyên vật liệu khai ngưỡng chung 20, tồn của nó giảm còn 15 → mở màn Nguyên vật liệu, con số đếm "sắp hết hàng" tăng thêm một. Một nguyên vật liệu khác không khai ngưỡng nào, tồn giảm dưới ngưỡng mặc định của hệ thống → cũng được đếm vào con số đó.
- Mục kho A không khai ngưỡng riêng, mặt hàng của nó khai ngưỡng chung 20; khả dụng của A còn 15 → màn Tồn kho cảnh báo sắp hết hàng ngay trên dòng của A, theo ngưỡng 20.
- Mục kho B khai riêng ngưỡng 5, mặt hàng của nó khai ngưỡng chung 20; khả dụng của B còn 15 → màn Tồn kho không cảnh báo, vì ngưỡng riêng 5 thắng và 15 vẫn trên 5.
- Mở màn tồn của một mặt hàng có mặt ở ba địa điểm → xem được một dòng tổng cộng dồn cả ba, và bung ra được ba dòng riêng theo từng địa điểm.
- Sửa thực có của một mục kho từ 12 xuống 10 và chọn lý do → số tồn đổi ngay trên màn Tồn kho, và mở màn sổ biến động thì đọc lại được đúng dòng đó với trước 12, sau 10, kèm lý do đã chọn.
- Kiểm kê xong một mục kho, rồi nhập hàng vào chính mục đó → màn chi tiết mục kho hiện thời điểm kiểm kê gần nhất và thời điểm nhập hàng gần nhất, khớp với hai thao tác vừa làm.
- Chạy nhiều thao tác ghi tồn đồng thời trên cùng một mục kho, trong đó có một thao tác cố tình cập nhật sai thứ tự → thao tác sai bị cơ sở dữ liệu từ chối, mục kho không bao giờ đọc ra được ba con số lệch nhau.
6. Yêu cầu phi chức năng
| Khía cạnh | Yêu cầu |
|---|---|
| Toàn vẹn dữ liệu | Bất biến khả dụng = thực có - đang giữ được ép ở tầng cơ sở dữ liệu, không phụ thuộc kỷ luật của từng luồng ghi |
| Đồng thời | Nhiều thao tác ghi tồn trên cùng một mục kho cho ra kết quả như thể chúng chạy lần lượt; không thao tác nào ghi đè mất phần của thao tác khác |
| Duy nhất | Đúng một địa điểm mặc định cho mỗi merchant, và đúng một mục kho cho mỗi tổ hợp mặt hàng - địa điểm - lô - serial |
| Phân quyền theo merchant | Địa điểm và mục kho là dữ liệu riêng của từng merchant; xóa là xóa mềm, khôi phục được |
| Độ chính xác | Số lượng tồn giữ 4 chữ số thập phân, đủ cho nguyên liệu cân đong theo gram và mililít |
| Hiệu năng | Màn Tồn kho tải danh sách mục kho kèm cảnh báo sắp hết hàng trong một lần đọc, không gọi thêm cho từng dòng |
| i18n | Tên địa điểm và nhãn hiển thị là song ngữ |
7. UX & Luồng
Luồng dựng địa điểm và ghi tồn lần đầu:
Luồng bốn con số khi bán một món:
Luồng cộng dồn tồn theo nhánh cây:
8. Dữ liệu & Miền nghiệp vụ
| Khái niệm | Vai trò |
|---|---|
| Địa điểm kho | Một nơi chứa hàng, loại vật lý hoặc mô phỏng; lồng vào nhau thành cây; đúng một địa điểm là mặc định cho mỗi merchant |
| Mục kho | Một mặt hàng được theo dõi tồn - một biến thể sản phẩm hoặc một nguyên vật liệu |
| Bản ghi tồn | Bốn con số của một mục kho tại một địa điểm, tách thêm theo lô và serial nếu mặt hàng bật theo dõi |
| Thực có | Số hàng đang nằm trên kệ |
| Đang giữ | Phần đã hứa cho một đơn bán, một phiếu chuyển hoặc một lệnh sản xuất |
| Khả dụng | Thực có trừ đang giữ; con số quyết định có bán được hay không |
| Đang về | Hàng đã rời kho gửi, đang trên đường tới địa điểm này; chỉ dùng cho chuyển kho nội bộ |
| Ngưỡng tồn thấp | Con số dưới đó thì cảnh báo sắp hết hàng; khai được ở mục kho, ở mặt hàng, hoặc lấy mặc định hệ thống |
Chỉ ở mức khái niệm - schema và bất biến đầy đủ nằm trong inventory domain model.
9. Phụ thuộc & Giả định
Phụ thuộc vào
| # | Feature | Phụ thuộc điều gì |
|---|---|---|
| 01 | Danh mục sản phẩm | biến thể sản phẩm bật theo dõi tồn là nguồn sinh ra mục kho; cờ theo dõi tồn khai tại đó. |
| 02 | MAT Nguyên vật liệu | nguyên liệu bật theo dõi tồn cũng thành mục kho, cùng cấu trúc với biến thể sản phẩm. |
| 03 | UOM Đơn vị tính & quy đổi | tồn luôn lưu theo đơn vị gốc của mặt hàng. |
| 04 | RSV Giữ tồn | con số đang giữ do cơ chế giữ tồn ghi vào; PRD này chỉ định nghĩa con số và bất biến của nó. |
| 05 | LDG Sổ biến động | mọi lần sửa tồn đều để lại một dòng sổ. |
| 06 | TRF Chuyển kho | con số đang về do phiếu chuyển kho ghi vào. |
| 07 | Merchant | địa điểm và mục kho đều thuộc về một merchant. |
Giả định
| # | Giả định | Sai thì sao |
|---|---|---|
| 01 | Mỗi mặt hàng có đúng một đơn vị gốc, và toàn bộ tồn của nó quy về đơn vị đó. | Tồn của cùng một mặt hàng nằm ở hai đơn vị khác nhau thì cộng lại ra số vô nghĩa, và cảnh báo sắp hết hàng so ngưỡng với một con số không cùng thang đo. |
| 02 | Merchant chấp nhận một địa điểm mặc định do hệ thống tự tạo cho tới khi họ tự dựng cây địa điểm của mình. | Merchant từ chối địa điểm tự tạo thì mọi nghiệp vụ chạm tồn phải chặn lại chờ cấu hình kho, và merchant mới không bán được ngày đầu. |
| 03 | Tồn ghi tại địa điểm mô phỏng không phải hàng thật, nên không cộng vào tổng tồn vật lý và không dùng để tính khả dụng ngoài thực tế. | Địa điểm mô phỏng bị dùng như kho thật thì tổng tồn vật lý phồng lên bằng hàng không có trên kệ, và kiểm kê gánh toàn bộ phần lệch đó. |
10. Kế hoạch phát hành & Tiêu chí
| Khía cạnh | Kế hoạch |
|---|---|
| Phase | P2 (nền móng Kho) - xem danh mục feature URD |
| Rollout | Mọi merchant; không feature flag |
| Migration | Sinh địa điểm mặc định cho merchant chưa có; dựng lại con số khả dụng từ thực có trừ đang giữ trước khi bật ràng buộc ở tầng cơ sở dữ liệu; mục kho hiện có được bổ sung con số đang về với giá trị khởi tạo 0 |
| Tiêu chí phát hành | Mọi merchant có đúng một địa điểm mặc định; không mục kho nào có khả dụng lệch thực có trừ đang giữ; cảnh báo sắp hết hàng chạy đúng ba tầng ngưỡng trên dữ liệu mẫu |
| Theo dõi | Số mục kho có khả dụng âm ngoài ý muốn, số lần bán bị từ chối vì hết hàng, số merchant đã dựng cây địa điểm nhiều tầng |
Tham chiếu
- URD: Địa điểm kho · Mục kho & mức tồn
- Liên quan: Giữ tồn & chặn bán quá tay · Sổ biến động · Chuyển kho · Đơn vị tính & quy đổi
- Module: Kho - URD
- Developer: @nx/inventory · domain model
Rủi ro & Câu hỏi mở
| # | Rủi ro / câu hỏi | Giảm thiểu / trạng thái |
|---|---|---|
| 01 | Nhiều thao tác ghi tồn đồng thời có thể để lại một mục kho có khả dụng không khớp thực có trừ đang giữ | Ép bất biến ở tầng cơ sở dữ liệu; cơ sở dữ liệu từ chối thao tác ghi làm sai (FR-017) |
| 02 | Merchant có cây địa điểm sâu, cộng dồn theo nhánh có thể chậm khi số địa điểm lớn | Mở: chốt ngưỡng số địa điểm và cách đọc cộng dồn cho merchant chuỗi nhiều địa điểm (FR-007) |
| 03 | Địa điểm mô phỏng bị dùng nhầm như kho thật, làm sai tổng tồn vật lý | Mở: luật loại tồn của địa điểm mô phỏng ra khỏi tổng tồn vật lý phải chạy trước khi khuyến khích merchant dùng loại địa điểm này; trên màn danh sách, nhãn loại địa điểm giúp phân biệt hai loại (FR-001) |
| 04 | Ngưỡng mặc định của hệ thống có thể quá thấp hoặc quá cao với một số ngành hàng | Merchant khai đè ở tầng mặt hàng hoặc tầng mục kho (FR-013) |
| 05 | Con số đang về chỉ có nghĩa cho chuyển kho nội bộ, dễ bị nhầm với hàng đã đặt nhà cung cấp nhưng chưa về | Hai khái niệm tách bạch: đang về chỉ nhận từ phiếu chuyển kho; hàng đặt nhà cung cấp thuộc đơn mua hàng (PO) |
Câu hỏi thường gặp
| # | Câu hỏi | Trả lời |
|---|---|---|
| 01 | Vì sao tồn kho phải là bốn con số mà không phải một? | Vì một con số không trả lời được câu quan trọng nhất: tôi còn bán được bao nhiêu. Hàng trên kệ có thể đã bị hứa cho một đơn đang thanh toán. Người bán hàng nhìn khả dụng, người kiểm kê nhìn thực có; hai người ra hai số khác nhau và cả hai đều đúng. |
| 02 | Đang về khác gì hàng đã đặt nhà cung cấp? | Đang về là hàng đã rời kho gửi của chính merchant và đang trên đường tới địa điểm này, tức chuyển kho nội bộ. Hàng đã đặt nhà cung cấp mà chưa giao nằm ở đơn mua hàng, và không cộng vào đang về. |
| 03 | Địa điểm mô phỏng để làm gì? | Để nhóm hàng hoặc lập kế hoạch, khi phần hàng đó chưa nằm trên kệ. Tồn ghi tại đó không cộng vào tổng tồn vật lý của merchant. |
| 04 | Tôi chưa cấu hình kho, bán hàng có bị chặn không? | Không. Hệ thống tự tạo một địa điểm mặc định ngay lần đầu cần ghi tồn, và trừ tồn tại đó. |
| 05 | Ngưỡng cảnh báo lấy ở đâu nếu tôi không khai gì? | Lấy ngưỡng mặc định của hệ thống. Khai ngưỡng cho mặt hàng thì ngưỡng đó thắng ngưỡng mặc định; khai riêng cho một mục kho thì ngưỡng riêng thắng cả hai (FR-013). |
| 06 | Sửa thẳng số thực có có mất dấu vết không? | Không. Mỗi lần sửa để lại một dòng trong sổ biến động ghi số cũ và số mới, nên luôn tra được ai đổi gì. Người sửa chọn lý do cho lần sửa, và màn hình sổ biến động cho đọc lại các dòng đó (FR-015). |
| 07 | Chuyển hàng giữa hai kho có làm đổi giá vốn không? | Không. Số lượng đếm theo từng kho, còn giá vốn là một con số cho cả merchant; chuyển kho chỉ dịch chuyển số lượng. |