PRD: Màn chọn món
| Module | Sale (CORE-07) | PRD ID | PRD-PCK-001 |
| Trạng thái | Planned | Owner | Hải Cao · Khoa Nguyễn · Phát Nguyễn |
| Ngày | 2026-06-11 | Phiên bản | v0.1 (draft) |
| Packages | @nx/commerce · apps/sale-renderer | URD | PCK |
| Epic | BANA-1326 | Khung thời gian | Tháng 6/2026 (Theo tháng) |
TL;DR
Thu ngân chọn bất kỳ món nào trong tối đa 3 chạm. Options của sản phẩm (size, đá, đường…) resolve về đúng một ProductVariant với giá cập nhật trực tiếp; món 1-variant bỏ qua bước chọn. Phía sau là API ma trận variant - POS không còn phải đoán từ danh sách variant phẳng.
1. Bối cảnh & Vấn đề
POS hôm nay liệt kê variant phẳng - mỗi size/màu là một dòng riêng. Không có bước resolve Options→Variant, không có API ma trận: chọn đúng variant của món nhiều option vừa chậm vừa dễ sai, modal add-on/bundle chỉ phủ một phần. Chọn món là thao tác lặp nhiều nhất tại quầy - mỗi chạm thừa bị trả giá hàng nghìn lần mỗi ngày.
2. Mục tiêu & Loại trừ
Mục tiêu - ≤3 chạm cho mọi món (URD-PCK-001) · options resolve về đúng một variant (002) · món 1-variant bỏ chooser (003) · giá live (004) · tổ hợp sai không chọn được (005) · mặc định hợp lý (006) · quét barcode bỏ qua picker (007).
Loại trừ - công cụ dọn dữ liệu catalog (việc riêng) · chế độ quầy bán lẻ (PRD-RTL-001) · thiết kế lại bundle/combo.
3. Thước đo thành công
| Thước đo | Mục tiêu |
|---|---|
| Số chạm cho món có option | ≤3 (đo trên menu thật) |
| Chọn nhầm món do nhân viên pilot báo | Gần như 0 |
4. Persona & Tình huống
Thu ngân/phục vụ giờ cao điểm: cần đúng variant thật nhanh, không đọc danh sách dài.
5. User Story
- Là thu ngân, tôi chạm món trà sữa, chọn size L và ít đá - đúng variant đúng giá vào giỏ, 3 chạm.
- Là thu ngân, tôi chạm chai nước suối và nó vào giỏ ngay.
6. Yêu cầu chức năng
Giao URD PCK URD-PCK-001…007 (Must 001-004; Should 005-007).
7. Yêu cầu phi chức năng
- Picker mở và resolve tức thì trên phần cứng POS hiện có; không làm chậm tìm kiếm/quét.
8. UX & Luồng
Thiết kế trước: chip option (size/đá/đường) chọn sẵn mặc định, giá nhảy theo lựa chọn, ảnh + tên luôn hiển thị. Một chạm xác nhận là vào giỏ.
- Chạm món → sheet option (mặc định sẵn) → xác nhận → giỏ.
- Món 1-variant → vào giỏ thẳng.
- Quét barcode → vào giỏ thẳng (không qua picker).
9. Dữ liệu & Miền nghiệp vụ
- API ma trận variant mới phía commerce: tổ hợp option → variantId, giá, tồn theo kênh; tổ hợp sai bị loại từ server.
- Không đổi schema - variant và option đã có; thiếu là API resolve + UI.
10. Phụ thuộc & Giả định
| Phụ thuộc | Vì sao |
|---|---|
| Nhập liệu Options/Variants sạch (form client) | Chất lượng picker = chất lượng dữ liệu catalog |
| Thiết kế (T6) | Chặn build |
11. Rủi ro & Câu hỏi mở
- Menu cũ dữ liệu bẩn có thể resolve kém → cần audit dữ liệu merchant pilot.
- Số chiều option tối đa hỗ trợ trong v1 (đề xuất: 3).
12. Kế hoạch phát hành & Tiêu chí
Build tháng 6 (WK24-26) · ship trong màn bán hiện tại. Ra mắt: AC-PCK-01 pass trên menu merchant thật; không chậm hơn hiện tại.
13. FAQ
- Có thay modal bundle không? Không - bundle/add-on giữ nguyên; đây là fix resolve variant cho món đơn.
Tham chiếu
URD PCK · Giai đoạn 2 - Theo tháng · Epic BANA-1326