# OQ — Sổ Open Question — e-commerce | | | |---|---| | **Version** | 1.3 | | **Date** | 2026-09-08 | | **Author** | BA (qua skill ba-1-discovery / ba-2-analysis / ba-3-specification) | | **Status** | 🟡 Draft — cập nhật liên tục qua các giai đoạn | | **Approved by** | — *(sổ theo dõi, không cần baseline riêng)* | | **Source** | `01-discovery/BRIEF_CartCheckout_v1.0.md` · `01-discovery/STAKEHOLDER_CartCheckout_v1.0.md` · `01-discovery/ELICITATION_CartCheckout_2026-09-08.md` · `01-discovery/RISK_CartCheckout_v1.0.md` · `02-analysis/PROCESS_CartCheckout_v1.0.md` · `02-analysis/BACKLOG_CartCheckout_v1.0.md` · `02-analysis/BR_CartCheckout_v1.0.md` · `02-analysis/RBAC_CartCheckout_v1.0.md` · `02-analysis/IMPACT_CartCheckout_v1.0.md` · `00-index/UICONV_e-commerce_v1.0.md` · `03-specification/SRS_US002-003_v1.0.md` · `03-specification/API_US002-003_v1.0.md` · `03-specification/NFR_US002-003_v1.0.md` · `03-specification/WF_US002-003_v1.0.md` | | **Scope** | Toàn dự án e-commerce — module Giỏ hàng & Checkout (GĐ1 + GĐ2) + quy ước giao diện cấp project (GĐ3 `uiconv`) + đặc tả US-002/US-003 (GĐ3 `srs`/`ac`/`nfr`/`api`/`wf`) | ## Change Log | Version | Date | Người sửa | Thay đổi | CR | |---|---|---|---|---| | 1.0 | 2026-09-08 | BA (qua skill ba-1-discovery) | Khởi tạo sổ OQ, nhập 8 câu hỏi từ GĐ1 module Giỏ hàng & Checkout | — | | 1.1 | 2026-09-08 | BA (qua skill ba-2-analysis) | Đóng `OQ-004`, `OQ-008` (đã có trả lời của PO, xem `DEC-03`/`DEC-04`); thêm 9 câu hỏi mới phát sinh từ GĐ2 (`OQ-009`…`OQ-017`) | — | | 1.2 | 2026-09-08 | BA (qua skill ba-3-specification, activity `uiconv`) | Thêm 10 câu hỏi phát sinh từ `UICONV_e-commerce_v1.0.md` (`OQ-018`…`OQ-027`) — chủ yếu các ô "chọn một" mà SAD §7 không nói, cộng ngoại lệ gate G2 (`OQ-027`, xem `DEC-05`) | — | | 1.3 | 2026-09-08 | BA (qua skill ba-3-specification, activity `srs`/`ac`/`nfr`/`api`/`wf`) | Thêm 7 câu hỏi phát sinh từ đặc tả US-002/US-003 (`OQ-028`…`OQ-034`) — số lượng về 0, nguồn giá hiển thị, giới hạn tồn kho tại màn Giỏ hàng, checkout một phần giỏ, ownership Guest, ngưỡng hiệu năng, schema `GET /v1/cart` | — | --- ## Open Question đang mở | ID | Nội dung | Hỏi ai | Từ ngày | Chặn gì | Nguồn | |---|---|---|---|---|---| | OQ-001 | Tên thật + đầu mối liên lạc của STK-01…STK-06 (PO sàn, Khách hàng đại diện, Seller đại diện, Kế toán đối soát, Trưởng vận hành, Tech Lead) là gì? | Điều phối dự án / PO | 2026-09-08 | Ký G1 module Giỏ hàng & Checkout một cách hợp lệ | `STAKEHOLDER_CartCheckout_v1.0.md` §7 | | OQ-002 | Mức Quan tâm × Ảnh hưởng của từng stakeholder (đánh giá sơ bộ của BA) có đúng không? | STK-01…STK-06 | 2026-09-08 | Chiến lược tiếp cận stakeholder | `STAKEHOLDER_CartCheckout_v1.0.md` §2, §7 | | OQ-003 | Ai là đại diện Pháp chế/Bảo mật cho dự án e-commerce? Cần rà soát phạm vi lưu/chia sẻ PII (địa chỉ, SĐT) khi tách đơn theo seller. | PO sàn | 2026-09-08 | RISK-03, RQ-003, RACI mục tuân thủ PII | `STAKEHOLDER_CartCheckout_v1.0.md` §3, §7; `BRIEF_CartCheckout_v1.0.md` §10; `RISK_CartCheckout_v1.0.md` §2 | | OQ-005 | Cần tổ chức phỏng vấn thật với Khách hàng đại diện (STK-02) và Seller đại diện (STK-03) cho module này — ai làm đầu mối sắp xếp? | Điều phối dự án / PO sàn | 2026-09-08 | Chất lượng RQ, phát hiện ngoại lệ thực tế trước GĐ2 | `ELICITATION_CartCheckout_2026-09-08.md` §5; `BRIEF_CartCheckout_v1.0.md` §10 | | OQ-006 | Chính sách giới hạn giá trị đơn COD (nếu có) là gì, để giảm rủi ro bùng hàng khi giỏ đa seller bị tách thành nhiều đơn COD độc lập? | PO sàn, Kế toán đối soát | 2026-09-08 | `ASM-05`, `RISK-01`, `BR-CART-03` (GĐ2) | `RISK_CartCheckout_v1.0.md` §1, §2; `BR_CartCheckout_v1.0.md` | | OQ-007 | Baseline thật cho GOAL-01 (tỷ lệ bỏ giỏ hàng ở checkout đa seller) và GOAL-02 (tỷ lệ thanh toán thành công theo kênh) là bao nhiêu? | PO sàn | 2026-09-08 | Đo lường hiệu quả ở GĐ5, xác nhận mục tiêu ở GĐ1 | `BRIEF_CartCheckout_v1.0.md` §4, §10 | | OQ-009 | Khi giá/tồn kho thay đổi giữa lúc thêm giỏ và lúc checkout (`ASM-06`), hệ thống tự động cập nhật giá mới và thông báo, hay chặn checkout yêu cầu khách xác nhận lại? | PO + Tech Lead | 2026-09-08 | US-003, US-004, `PROCESS` bước B3/B5 | `PROCESS_CartCheckout_v1.0.md` A5 (E2); `BACKLOG_CartCheckout_v1.0.md` | | OQ-010 | Xác nhận khả thi kỹ thuật `ASM-01` (webhook VNPay/Momo gần thời gian thực) | Tech Lead | 2026-09-08 | `BR-CART-06`, US-008 | `PROCESS_CartCheckout_v1.0.md` A3 (P2); `RISK_CartCheckout_v1.0.md` ASM-01 | | OQ-011 | Xác nhận `ASM-03` — giỏ hàng N seller luôn tách thành đúng N đơn con, không có trường hợp gộp 2 seller vào 1 đơn con | PO | 2026-09-08 | `BR-CART-01`, US-004 | `RISK_CartCheckout_v1.0.md` ASM-03; `BR_CartCheckout_v1.0.md` | | OQ-012 | Guest (chưa xác thực) có cần giới hạn giá trị đơn hoặc xác thực OTP cho đơn giá trị cao không (liên quan `RISK-01` phương án (b))? | PO, Bảo mật *(chưa có người — `OQ-003`)* | 2026-09-08 | `RBAC_CartCheckout_v1.0.md` §2, `BR-CART-03` | `RBAC_CartCheckout_v1.0.md` | | OQ-013 | Với thanh toán COD, `Payment.status` được ghi nhận "success" ngay khi đơn được xác nhận, hay giữ "pending" cho tới khi thực thu tiền lúc giao hàng? | Kế toán đối soát, PO | 2026-09-08 | US-007, `BR_CartCheckout_v1.0.md` §3 (vòng đời `PAYMENT`) | `BR_CartCheckout_v1.0.md` | | OQ-014 | `Order.total_amount`/`OrderSeller.subtotal_amount` có gồm phí vận chuyển ước tính (US-005) không? Coupon/điểm thưởng áp giảm giá ở cấp `Order` hay từng `OrderSeller`? | PO, Tech Lead | 2026-09-08 | `BR-CART-08`/`09`, US-005, `AC` ở GĐ3 | `BR_CartCheckout_v1.0.md` §5 | | OQ-015 | Có cần cơ chế chống lạm dụng (rate limit/CAPTCHA) cho Guest checkout để tránh spam tạo đơn giả không? | Tech Lead, Bảo mật | 2026-09-08 | `RBAC_CartCheckout_v1.0.md` §5, thiết kế kỹ thuật GĐ3 | `RBAC_CartCheckout_v1.0.md` | | OQ-016 | Mức che dữ liệu PII (địa chỉ/SĐT) khi truyền cho seller lúc tách đơn là gì? | Pháp chế/Bảo mật *(chưa có người — `OQ-003`)*, PO | 2026-09-08 | `RBAC_CartCheckout_v1.0.md` §4, `RISK-03` | `RBAC_CartCheckout_v1.0.md` | | OQ-017 | Nếu API "áp dụng mã/điểm" của module Khuyến mãi & Loyalty lỗi/chậm lúc checkout, hệ thống bỏ qua và cho tiếp tục hay chặn checkout hoàn toàn? | PO, Tech Lead | 2026-09-08 | `IMPACT_CartCheckout_v1.0.md` §1.5 dòng Khuyến mãi & Loyalty | `IMPACT_CartCheckout_v1.0.md` | | OQ-018 | Ngưỡng breakpoint theo px cho desktop/tablet/mobile-web, và grid layout (số cột, gutter px, max-width px) toàn site — SAD §7.0 chỉ nêu 3 tier tên gọi, không cho ngưỡng cụ thể | Dev FE / Tech Lead | 2026-09-08 | `UICONV` §1 (Khung layout) | `UICONV_e-commerce_v1.0.md` §1 | | OQ-019 | Kiểu phân trang (offset/cursor/cuộn vô hạn), số dòng-sản phẩm mỗi trang, và tiêu chí sắp xếp mặc định cho danh sách sản phẩm (SCR-02) và lịch sử đơn hàng (SCR-10) — SCR-02 chỉ nêu "phân trang hoặc infinite-scroll", chưa chọn 1 | PO, Dev FE | 2026-09-08 | `UICONV` §3 (Danh sách) | `UICONV_e-commerce_v1.0.md` §3 | | OQ-020 | Vị trí và thời lượng hiển thị toast thông báo — SAD §7 không mô tả cơ chế toast (chỉ có banner trong vùng, inline dưới field, trang trạng thái) | PO, Dev FE | 2026-09-08 | `UICONV` §5 (Phản hồi hệ thống) | `UICONV_e-commerce_v1.0.md` §5 | | OQ-021 | Nút CTA chính khi form chưa hợp lệ: bấm được rồi hiện lỗi, hay khoá (disable) tới khi hợp lệ? — SAD chỉ nói rõ hành vi này ở cấp wizard (SCR-16, chặn "Next"), không nói cho form thường | PO, Dev FE | 2026-09-08 | `UICONV` §4 (Form) | `UICONV_e-commerce_v1.0.md` §4 | | OQ-022 | Chọn design system cụ thể — Material Design hay Ant Design? NFR-07 ghi "dev chọn", chưa có quyết định chính thức | Tech Lead | 2026-09-08 | `UICONV` §0, §11 (Từ vựng thành phần) | `UICONV_e-commerce_v1.0.md` §0, §11 | | OQ-023 | Ngôn ngữ hiển thị khi thiếu bản dịch (EN/ZH/KO/JA): hiện khoá i18n hay fallback VI? Độ dài nhãn tối đa (ký tự) để không vỡ layout ở ZH/KO/JA? SAD §7.0 chỉ cảnh báo định tính "cần co giãn được, không fix-width" | PO, Dev FE | 2026-09-08 | `UICONV` §9 (Ngôn ngữ và giọng văn) | `UICONV_e-commerce_v1.0.md` §9 | | OQ-024 | Độ trễ debounce (ms) cho gợi ý autocomplete ở ô tìm kiếm (SCR-01) — SAD chỉ chốt ngưỡng tối thiểu 1 ký tự trước khi gợi ý, không chốt độ trễ | Dev FE | 2026-09-08 | `UICONV` §3 (Danh sách — Tìm kiếm) | `UICONV_e-commerce_v1.0.md` §3 | | OQ-025 | Quy tắc quy đổi tiền tệ tham khảo (`CurrencyToggle`/`PriceDisplay`, FR-16/NFR-06): nguồn tỷ giá, tần suất cập nhật, quy tắc làm tròn — SAD chỉ xác nhận VND là tiền giao dịch chính, giá quy đổi chỉ tham khảo | PO, Tech Lead | 2026-09-08 | `UICONV` §8 (Định dạng hiển thị) | `UICONV_e-commerce_v1.0.md` §8 | | OQ-026 | Xưng hô trong toàn bộ text hệ thống ("bạn" hay không xưng hô) — SAD §7 không đề cập giọng văn | PO | 2026-09-08 | `UICONV` §9 (Ngôn ngữ và giọng văn) | `UICONV_e-commerce_v1.0.md` §9 | | OQ-027 | 🔴 Ngoại lệ gate: `UICONV_e-commerce_v1.0.md` được sinh trong khi Gate G2 module Giỏ hàng & Checkout chưa được PO + Tech Lead ký chính thức (xem `DEC-02`). Nếu `BACKLOG_CartCheckout`/`BR_CartCheckout` đổi khi G2 ký thật, `UICONV` (đặc biệt §11 phần liên quan Guest checkout, `BR-CART-07`) có cần rà lại không? | PO, Tech Lead | 2026-09-08 | Baseline `UICONV` và mọi `WF` phụ thuộc | `DECISION_e-commerce.md` DEC-05 | | OQ-028 | Sửa số lượng `CartItem` về 0 (nhập tay hoặc bấm `-` khi đang ở 1, màn Giỏ hàng US-003) → hệ thống tự mở modal xoá dòng, hay chặn không cho giảm dưới 1? | PO | 2026-09-08 | `SRS_US002-003` F01, `AC-US003-08` | `SRS_US002-003_v1.0.md` §8 | | OQ-029 | Giá hiển thị ở màn Giỏ hàng (US-002, C06) là giá snapshot lúc thêm giỏ (`cart_item.unit_price_snapshot`) hay giá hiện tại real-time từ Catalog? Ảnh hưởng badge "Giá đã thay đổi" mà SAD SCR-04 mô tả nhưng `BACKLOG` không xác nhận thuộc scope US-002 | PO, Tech Lead | 2026-09-08 | `SRS_US002-003` C06, `WF_US002-003` §5 #3 | `SRS_US002-003_v1.0.md` §8 | | OQ-030 | Sửa số lượng tại màn Giỏ hàng (US-003) có kiểm tra giới hạn trên theo tồn kho hiện tại ngay lúc sửa không, hay chỉ kiểm tra ở checkout (US-004) như `BACKLOG` đã khoanh phạm vi? SAD SCR-04 mô tả "≤ tồn kho hiện tại" nhưng `BACKLOG` loại trừ việc này khỏi US-002/US-003 | PO, Tech Lead | 2026-09-08 | `SRS_US002-003` F01, `WF_US002-003` §5 #2/#4 | `SRS_US002-003_v1.0.md` §8 | | OQ-031 | Nút "Tiến hành Checkout" (SCR-04) áp dụng cho toàn bộ giỏ hàng, hay chỉ cho các dòng được tick chọn (checkbox mà SAD SCR-04 mô tả nhưng không `US` nào trong `BACKLOG` định nghĩa)? Ảnh hưởng cả phạm vi US-004 | PO | 2026-09-08 | `SRS_US002-003` C11, `WF_US002-003` §5 #1 | `SRS_US002-003_v1.0.md` §8 | | OQ-032 | Với Guest, cơ chế kiểm tra quyền sở hữu `CartItem` khi gọi `PATCH`/`DELETE /v1/cart/items/{cartItemId}` có tương đương cơ chế ownership theo JWT (`403 ERR_FORBIDDEN_OWNERSHIP`) không? SAD §4.1.1/§4.2 chỉ mô tả rõ cho `customerId`/`sellerId` trong JWT | Tech Lead | 2026-09-08 | `AC-US003-13`, `E-CART-0005` | `SRS_US002-003_v1.0.md` §8, `API_US002-003_v1.0.md` §5 | | OQ-033 | Ngưỡng thời gian phản hồi (p95) cho `GET /v1/cart` và cho `PATCH`/`DELETE /v1/cart/items` là bao nhiêu giây? SAD NFR-01 chỉ có ngưỡng cho danh mục/tìm kiếm (<2s) và checkout (<3s) | PO, Tech Lead | 2026-09-08 | `NFR_US002-003` §1 | `NFR_US002-003_v1.0.md` §9 | | OQ-034 | `GET /v1/cart` trả về cấu trúc đã nhóm theo seller sẵn (`sellers[].items[]`) hay danh sách phẳng cart items kèm `sellerId` để FE tự nhóm? SAD §4.1.5 không có ví dụ JSON cho endpoint này | BE Lead, Tech Lead | 2026-09-08 | `API_US002-003` §1 endpoint 3.1, C02 nguồn dữ liệu (không chặn G3 — đã đánh dấu ⚠️ BA đề xuất) | `API_US002-003_v1.0.md` §5 | ## Open Question đã đóng | ID | Nội dung | Trả lời | Ngày đóng | Người trả lời | |---|---|---|---|---| | OQ-004 | Áp coupon (FR-13) và dùng điểm thưởng (FR-14) ngay trong màn hình checkout có thuộc phạm vi module Giỏ hàng & Checkout không, hay là điểm tích hợp với module Khuyến mãi/Loyalty? | Là điểm tích hợp: module Khuyến mãi/Loyalty sở hữu logic tính, module Giỏ hàng & Checkout chỉ hiển thị kết quả đã tính và gọi API áp dụng — xem `DEC-03` | 2026-09-08 | PO sàn (qua người điều phối) | | OQ-008 | Xác nhận lại: cả 4 RQ của module này (RQ-001…RQ-004) đều Must — nếu chỉ kịp một nửa thời gian, PO sẽ cắt cái nào? | Giữ RQ-001 (giỏ hàng đa seller) và RQ-002 (tách đơn) trước; RQ-003 phần ví điện tử (VNPay/Momo) có thể lùi sau COD — xem `DEC-04` | 2026-09-08 | PO sàn (qua người điều phối) |