PRD: Màn chọn món
| Module | Bán hàng | PRD ID | PRD-PCK-001 |
| Trạng thái | Sẵn sàng dev | FEAT | PCK · BANA-1420 |
| Epic | BANA-1326 | Plane | BANA-1558 |
| Ngày | 2026-06-11 | Phiên bản | v0.1 |
| Gói | @nx/sale · @nx/commerce | URD | PCK |
| Surface | Sale · POS | ||
| Phụ trách | Hải Cao · Khoa Nguyễn · Phát Nguyễn | ||
TL;DR
≤3 chạm để gọi món và vào giỏ - đủ cho đại đa số sản phẩm. Options (size, đá, đường…) resolve về đúng một variant với giá live; món chỉ có một variant đi thẳng vào giỏ, không qua picker.
1. Bối cảnh & Vấn đề
POS hiện tại liệt kê variant theo danh sách phẳng - mỗi size hay màu là một dòng. Với món nhiều option, tìm đúng variant vừa chậm vừa dễ nhầm; modal add-on chỉ giải quyết được một phần. Đây là thao tác lặp lại nhiều nhất tại quầy - mỗi chạm thừa nhân lên hàng nghìn giao dịch mỗi ngày.
Tình trạng hiện tại: Backend đã có khả năng resolve option value → variant và POS đã có option picker - chọn option trả về danh sách variant khớp, tổ hợp không hợp lệ trả về rỗng, quét barcode đi thẳng đến variant. Khoảng trống còn lại so với spec này: resolve về đúng một variant (không phải danh sách đã lọc), tồn kho theo từng channel, giá live theo channel tại bước resolve, và ma trận option chủ động - làm mờ giá trị không dẫn đến variant nào.
2. Mục tiêu & Loại trừ
Mục tiêu - ≤3 chạm cho món thông thường (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, xác nhận - đúng variant đúng giá vào giỏ, 3 chạm. (Đổi thêm option thứ 2, vd ít đá, là chạm thứ 4.)
- 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).
Ngân sách chạm: món + mỗi option đổi khác mặc định + xác nhận. 1-variant = 1 · nhận mặc định = 2 · đổi 1 option = 3. Món cần đổi 2+ option vượt quá 3 - mục tiêu ≤3 là cho món thông thường (thước đo §3), không phải trần cứng cho mọi món.
9. Dữ liệu & Miền nghiệp vụ
- Khả năng resolve option → variant đã có một phần: chọn option trả về danh sách variant khớp, tổ hợp sai trả về rỗng. Phần còn thiếu là thu hẹp về đúng một variant kèm giá live và tồn kho theo channel.
- Không cần thay đổi data model - variant và option đã có sẵn; việc cần làm là single-variant resolution + giá/tồn theo channel + hoàn thiện UX của picker.
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 và add-on giữ nguyên; tính năng này chỉ giải quyết việc chọn đúng variant cho món đơn.
Tham chiếu
URD PCK · Giai đoạn 2 - Theo tháng · Epic BANA-1326