PRD: Tùy chọn sản phẩm & biến thể
| Module | Product (CORE-05) | PRD ID | PRD-OPT-001 |
| Trạng thái | Shipped | Owner | Product squad |
| Ngày | 2026-06-12 | Phiên bản | v1.0 |
| Packages | @nx/commerce · @nx/core | URD | OPT · VAR |
TL;DR
Cho merchant mô tả điều gì làm mỗi biến thể khác nhau. Chủ cửa hàng thiết lập các tùy chọn mà sản phẩm biến đổi theo - size, mức đá, màu sắc - mỗi tùy chọn có danh sách giá trị của nó. Mỗi biến thể bán được sau đó chọn một giá trị cho mỗi tùy chọn nó dùng. Hệ thống giữ các tổ hợp này trung thực: một giá trị phải thuộc về sản phẩm, và không có hai biến thể nào dùng chung một tổ hợp - nhờ đó POS, kênh bán online, và báo cáo đều có thể coi tổ hợp của một biến thể là danh tính của nó.
1. Bối cảnh & Vấn đề
Biến thể chỉ nói một sản phẩm có nhiều dạng bán được, chứ không nói vì sao chúng khác nhau. Với chỉ tên dạng chữ tự do, không gì ngăn hai biến thể trùng nhau, POS không biết size và mức đá là hai lựa chọn riêng, và không có tổ hợp ổn định nào để đối chiếu với một listing bên ngoài. Feature này làm cho tùy chọn, giá trị của chúng, và tổ hợp mỗi biến thể trở nên tường minh - do chủ cửa hàng khai báo và được hệ thống giữ nhất quán.
2. Mục tiêu & Ngoài phạm vi
Mục tiêu
- Tùy chọn theo từng sản phẩm, mỗi tùy chọn có danh sách giá trị được sắp thứ tự, hiển thị theo thứ tự chủ cửa hàng chọn.
- Mỗi biến thể chọn một giá trị cho mỗi tùy chọn nó dùng.
- Hệ thống đảm bảo tổ hợp của một biến thể hợp lệ và duy nhất giữa các biến thể của sản phẩm.
- Một cài đặt của merchant quyết định mọi biến thể có buộc phải dùng tùy chọn, hay biến thể không tùy chọn được phép tồn tại.
Ngoài phạm vi
- Không tự sinh mọi tổ hợp khả dĩ - chủ cửa hàng chỉ khai báo những biến thể thực bán.
- Không có giá hay tồn kho trên một giá trị - giá nằm ở fare (FAR), tồn kho nằm ở Inventory.
3. Chỉ số Thành công
| Chỉ số | Mục tiêu |
|---|---|
| Tổ hợp trùng | Bằng không - biến thể lặp lại tổ hợp đã có luôn bị từ chối |
| Tổ hợp không hợp lệ | Bằng không - giá trị không thuộc sản phẩm không bao giờ được chấp nhận |
| Thực thi bắt buộc tùy chọn | Khi cài đặt bật, không biến thể không tùy chọn nào có thể được tạo |
4. Persona & Tình huống Sử dụng
| Persona | Mục tiêu |
|---|---|
| Chủ cửa hàng / Quản lý | Định nghĩa cách một sản phẩm biến đổi và các lựa chọn cung cấp, theo thứ tự hiển thị |
| Thu ngân | Chọn một biến thể bằng cách bấm size rồi mức đá - không từ một danh sách dài |
| Tích hợp kênh bán | Đối chiếu một listing bên ngoài về đúng biến thể bằng tổ hợp của nó |
Tình huống lõi: chủ cửa hàng thiết lập một món trà sữa với size (S/M/L) và mức đá (100/50/0), rồi khai báo năm tổ hợp thực bán. Thêm biến thể "Lớn, 50%" thứ hai bị từ chối; chọn hai size cho một biến thể cũng bị từ chối.
5. User Story
- Là chủ cửa hàng, tôi định nghĩa tùy chọn và giá trị của sản phẩm một lần, để mọi biến thể chỉ việc chọn từ đó.
- Là chủ cửa hàng, tôi muốn một tổ hợp đã tồn tại bị từ chối, để danh mục không bao giờ có hai mục cho cùng một thứ.
- Là chủ cửa hàng, tôi chọn việc biến thể không tùy chọn có được phép hay không, để sản phẩm đơn giản vẫn đơn giản và menu phức tạp vẫn kỷ luật.
- Là thu ngân, tôi thấy biến thể nhóm theo tùy chọn, để đặt món chỉ vài lần bấm.
6. Yêu cầu Chức năng
| # | Yêu cầu | URD |
|---|---|---|
| FR-1 | Chủ định nghĩa các tùy chọn của sản phẩm, mỗi tùy chọn hiển thị theo thứ tự đã chọn | URD-OPT-001 |
| FR-2 | Mỗi tùy chọn mang một danh sách giá trị được sắp thứ tự | URD-OPT-002 |
| FR-3 | Một tùy chọn và các giá trị của nó được tạo hoặc đổi cùng nhau trong một bước | URD-OPT-003 |
| FR-4 | Biến thể khai báo giá trị của nó trên mỗi tùy chọn nó dùng; tùy chọn hoặc giá trị lạ bị từ chối | URD-OPT-004 |
| FR-5 | Một biến thể chọn tối đa một giá trị mỗi tùy chọn | URD-OPT-005 |
| FR-6 | Mọi giá trị một biến thể dùng phải thuộc về sản phẩm và về tùy chọn của nó | URD-OPT-006 |
| FR-7 | Không có hai biến thể nào của một sản phẩm dùng chung một tổ hợp; biến thể không tùy chọn được miễn | URD-OPT-007 |
| FR-8 | Một cài đặt merchant có thể buộc mọi biến thể dùng tùy chọn, từ chối biến thể không tùy chọn | URD-OPT-008 |
| FR-9 | Chủ có thể đổi các tùy chọn mà một biến thể dùng | URD-OPT-009 |
| FR-10 | Một tùy chọn không có giá trị nào, hoặc một lựa chọn trùng, bị từ chối | URD-OPT-010 |
Mỗi lần từ chối trả về một lý do rõ ràng, cụ thể để chủ cửa hàng sửa.
7. Yêu cầu Phi chức năng
- Trọn gói - tùy chọn và giá trị của một biến thể được lưu cùng nhau: hoặc mọi thay đổi được lưu, hoặc không lưu gì cả.
- Tách biệt theo merchant - tùy chọn thuộc về một sản phẩm dưới một merchant; không bao giờ dùng chung giữa các sản phẩm hay merchant.
- Ngôn ngữ - tên tùy chọn và giá trị được hiển thị bằng nhiều ngôn ngữ.
- Không phụ thuộc thứ tự - một tổ hợp là như nhau bất kể thứ tự liệt kê các giá trị.
8. UX & Luồng
9. Dữ liệu & Miền
| Khái niệm | Vai trò |
|---|---|
| Tùy chọn (Option) | Một cách một sản phẩm biến đổi (size, mức đá), với một danh sách giá trị được sắp thứ tự |
| Giá trị tùy chọn (Option value) | Một lựa chọn trên một tùy chọn (S / M / L) |
| Tổ hợp (Combination) | Tập giá trị một biến thể chọn - danh tính của nó trong sản phẩm |
Tên một tùy chọn duy nhất trong sản phẩm của nó; một giá trị duy nhất trong tùy chọn của nó; tổ hợp của một biến thể duy nhất giữa các biến thể của sản phẩm.
10. Phụ thuộc & Giả định
- Biến thể tồn tại theo PRD-PRD-001 - tùy chọn gắn vào biến thể, không thay thế biến thể.
- Cài đặt bắt buộc tùy chọn được đọc khi một biến thể được lưu; bật nó sau đó không kiểm tra lại các biến thể đã tồn tại.
11. Rủi ro & Câu hỏi Mở
- Xóa một giá trị còn được một biến thể dùng tuân theo Chính sách xóa của Commerce.
- Bật cài đặt bắt buộc giữ nguyên các biến thể không tùy chọn đã có - chỉ các thay đổi mới bị kiểm tra.
12. Kế hoạch Phát hành & Tiêu chí Ra mắt
Phát hành cùng năng lực biến thể. Tiêu chí ra mắt: tổ hợp không hợp lệ và trùng bị từ chối kèm lý do rõ ràng; tính duy nhất giữ vững kể cả khi biến thể được tạo cùng lúc; POS hiển thị tùy chọn theo thứ tự của chủ cửa hàng.
13. FAQ
Vì sao không tự sinh mọi tổ hợp cho tôi? Phần lớn merchant không bán đủ ma trận. Khai báo chỉ những gì thực bán giữ danh mục đúng bằng những gì thực sự bán được - không có biến thể ma phải ẩn, định giá hay theo dõi tồn.
Hai sản phẩm có thể dùng chung tùy chọn không? Không - tùy chọn thuộc về một sản phẩm. Template dùng chung có thể đến sau nếu việc trùng lặp trở nên phiền toái.
Giá phụ thuộc tùy chọn đặt ở đâu? Trên fare của biến thể. Tổ hợp định danh biến thể; fare định giá nó.
Tham khảo
- URD: OPT - Tùy chọn Sản phẩm · VAR - Biến thể
- PRD anh em: Danh mục sản phẩm, biến thể & định danh · Hệ thống Fare & Định giá
- Developer: @nx/commerce