Files
Canhchimlac 343ad8bbbc save
2026-09-15 16:02:30 +07:00

357 lines
71 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CTX — Solution Context & Drivers — e-commerce
| | |
|---|---|
| **Version** | 1.2 |
| **Date** | 2026-09-12 |
| **Author** | SA (skill sa-1-context, chế độ `go`, hoạt động `as-is`) |
| **Status** | 🟡 Draft *(duyệt tạm/từng phần — xem `Approved by`; §2 Driver và §3 Ràng buộc/§5 Giả định đã duyệt tạm ở v1.0/v1.1; **§4 Hiện trạng (AS-IS) vừa bổ sung ở v1.2** theo ghi chú người duyệt — chưa được PO/Tech Lead ký riêng, sẽ ký cùng đợt AG1 toàn phần; Bước 4–5 (`OPT`/`TCO`/`ARISK`) vẫn chưa làm; AG1 toàn phần **chưa** đủ điều kiện, xem "Tự chấm" §① bên dưới, 3/7 tiêu chí ✅)* |
| **Approved by** | PO (uỷ quyền, chế độ chạy thử): **Điều phối dự án** — duyệt **§2 Driver (`DRV-01`…`DRV-09`)** của bản v1.0 · 2026-09-12; và duyệt **§3 Ràng buộc (`CON-01`…`CON-09`) + §5 Giả định (`ASM-01`…`ASM-06`)** của bản v1.1 · 2026-09-12, cùng cách và cùng ngoại lệ như đã áp dụng cho §2. Ký thay PO theo mô hình ngoại lệ `DEC-01` (SA) / `DEC-01` (BA); **không phải chữ ký PO thật** — `OQ-004` giữ mở cho tới khi PO sàn thật xác nhận lại. `Confidence` của `CTX` giữ 🔴 cho tới khi BA ký G1 thật (không đổi bởi phê duyệt này — phê duyệt không phải bằng chứng nguồn mới, đặc biệt vì phần lớn `CON` neo theo hồ sơ thầu Draft chưa hợp đồng). Duyệt này vẫn là duyệt **từng phần**, không phải AG1 toàn phần. · Tech Lead: — *(chưa ký)* · **§4 Hiện trạng (AS-IS, v1.2) chưa được ai duyệt** — chờ cùng đợt duyệt AG1 toàn phần với Bước 4–5 |
| **Source** | `ba-output/e-commerce/01-discovery/BRIEF_CartCheckout_v1.0.md` (Draft) · `ba-output/e-commerce/01-discovery/STAKEHOLDER_CartCheckout_v1.0.md` · `ba-output/e-commerce/01-discovery/RISK_CartCheckout_v1.0.md` · `ba-output/e-commerce/02-analysis/PROCESS_CartCheckout_v1.0.md` §0 (khẳng định greenfield, AS-IS rút gọn) · `ba-output/e-commerce/02-analysis/IMPACT_CartCheckout_v1.0.md` · `ba-output/e-commerce/00-index/PROFILE_e-commerce.md` (LIFECYCLE=greenfield) · `e-commerce/docs/SAD.md` v0.2 (§0–§3, §5.3.6, §8, §9.5.2) · `e-commerce/docs/00-project-brief.md` (v3) · `e-commerce/docs/sections/01-tong-quan.md` · `e-commerce/docs/sections/02-phan-tich-yeu-cau.md` · `e-commerce/docs/sections/03-kien-truc.md` §3.3–§3.4 (môi trường, tích hợp bên thứ ba) · `e-commerce/docs/sections/09-van-hanh-kiem-thu.md` §9.5.2 (RTO/RPO kế thừa) · `e-commerce/bid/bid-config.md` (Draft — hồ sơ thầu, chưa hợp đồng) · `e-commerce/bid/30-implementation-plan.md` (Draft) · `e-commerce/bid/estimate.computed.json` (Draft, `priceComplete: false`) |
| **Scope** | Toàn sàn e-commerce (marketplace đa seller) theo `SAD.md` v0.2. Trọng tâm chi tiết nhất: module **Giỏ hàng & Checkout** (FR-05/06/07, US-002/003, RQ-001…004) — nguồn driver có Confidence cao nhất. Các module khác của sàn (Catalog, Seller/KYC, Commission & Payout, Loyalty, Notification…) suy driver từ `SAD.md`/`docs/sections/01,02` — chưa qua BRIEF/RISK cấp module riêng, Confidence thấp hơn. **Phạm vi hoạt động của lượt chạy này (v1.2): Bước 3 — Hiện trạng (AS-IS), §4**, tiếp nối Bước 1 (Driver, v1.0) và Bước 2 (Ràng buộc, v1.1) đã làm trước đó. Phương án (`OPT`)/Chi phí (`TCO`)/Rủi ro kiến trúc (`ARISK`) **vẫn chưa** thực hiện — xem §6 "Ngoài phạm vi". |
| **Confidence** | 🔴 Giả định chưa xác minh — *(bắt buộc theo ghi chú điều phối: BA chưa ký G1 chính thức cho `BRIEF_CartCheckout` — Draft, `OQ-001`/`OQ-007` (BA) còn mở; đồng thời AG1 (gate của chính GĐ1 SA) chưa từng chạy cho dự án này. Mọi `DRV` suy ra từ nguồn Draft giữ mức 🔴 cho tới khi BA ký G1 thật. §3/§5 (v1.1) dùng nhiều số liệu từ hồ sơ thầu `e-commerce/bid/` — đây là ƯỚC LƯỢNG DỰ THẦU (Draft, `priceComplete: false`, chưa PO ký hợp đồng), KHÔNG phải ràng buộc cứng đã duyệt. §4 (v1.2, mới) có phần **khẳng định greenfield** đủ tin cậy 🟢 (nguồn `PROFILE_e-commerce.md` đã PO chốt 2026-09-08) nhưng phần **tài sản thiết kế `SAD.md`/hồ sơ thầu dùng làm điểm khởi đầu OPT** và **trạng thái đối tác tích hợp** vẫn 🔴 (chưa sandbox/hợp đồng thật với bất kỳ đối tác nào — kế thừa `CON-04`). Header giữ mức thấp nhất toàn tài liệu: 🔴, cho tới khi PO/PM/Tech Lead xác nhận bằng số/tài liệu thật.)* |
## Change Log
| Version | Date | Người sửa | Thay đổi | ADR/DEC |
|---|---|---|---|---|
| 1.0 | 2026-09-12 | SA (qua skill sa-1-context) | Bản đầu — chỉ hoạt động **Driver** (Bước 1/5 của `sa-1-context`), theo yêu cầu phạm vi hẹp của lượt chạy này. Ràng buộc/Hiện trạng/Giả định/`OPT`/`TCO`/`ARISK` để lượt sau. Chạy dưới ngoại lệ gate (BA chưa ký G1, AG1 của chính GĐ1 SA cũng chưa có tiền lệ) theo yêu cầu điều phối viên. | `DEC-01` (SA) |
| 1.0 | 2026-09-12 | PO (uỷ quyền, Điều phối dự án) — tác vụ **sign/approve** | Duyệt **tạm/từng phần** §2 Driver (`DRV-01`…`DRV-09`) của bản v1.0. Không đổi nội dung chuyên môn. Ký thay PO theo ngoại lệ `DEC-01`; `OQ-004` (tính hợp lệ của ngoại lệ ký thay) **giữ mở**. `Confidence` giữ 🔴 (không nâng lên do phê duyệt này — phê duyệt không phải là bằng chứng mới về nguồn driver). Tech Lead **chưa ký** — theo "Tự chấm AG1" trong tài liệu, gate AG1 toàn phần (đủ 7 tiêu chí, cần cả PO + Tech Lead) **chưa đạt**; đây chỉ là ghi nhận đồng thuận tạm thời trên phần Driver để cho phép các bước sau của `sa-1-context` (Ràng buộc/Hiện trạng/Giả định/`OPT`/`TCO`/`ARISK`) tiếp tục dưới ngoại lệ đã có. Đồng thời, người dùng chốt hướng trả lời `OQ-002` (Bước 2 — ràng buộc Con người): dùng giả định "team MVP chuẩn" ở `Confidence` 🔴, ghi tại `DEC-02` (SA) và đóng `OQ-002` trong sổ `00-index/OQ_e-commerce.md` (giả định thật `ASM-nn` sẽ được lập khi `CON` Bước 2 chạy, tham chiếu `DEC-02`). | `DEC-01`, `DEC-02` (SA) |
| 1.1 | 2026-09-12 | SA (qua skill sa-1-context, chế độ `go`, hoạt động `constraints`) | Bổ sung §3 Ràng buộc — đủ 6 nhóm (`CON-01` Tiền; `CON-02` Thời gian; `CON-03`/`CON-04` Công nghệ; `CON-05` Con người; `CON-06`/`CON-07` Pháp lý; `CON-08`/`CON-09` Tổ chức/Vận hành) và §5 Giả định (`ASM-01`…`ASM-06`), theo ghi chú người duyệt. Ngân sách/deadline tham khảo `e-commerce/bid/` (hồ sơ thầu ước lượng, **không phải hợp đồng** — nêu rõ độ tin cậy thấp, không coi là ràng buộc cứng khi chưa có PO xác nhận). Pháp lý bổ sung chi tiết PCI-DSS (SAQ A, không lưu thẻ), NĐ13/2023 (residency/retention/quyền xoá dữ liệu, theo `SAD.md` §5.3.6/§8.2.4), hoá đơn điện tử (đã xác nhận hoãn phase 2, không phải khoảng trống). Tiếp tục ngoại lệ gate `DEC-01` (BA chưa qua G1) — người dùng tái khẳng định muốn tiếp tục, ghi nhận thêm tại `DEC-03` (SA); `Confidence` giữ 🔴 toàn bộ tài liệu. Thêm `OQ-005`…`OQ-009` (ngân sách, deadline, đại diện Pháp chế cho residency, đội vận hành sau go-live, có neo theo `SAD.md`/hồ sơ thầu cho Bước 4 hay không) vào §7 và sổ `00-index/OQ_e-commerce.md`. Không sửa §2 Driver đã duyệt từng phần. | `DEC-01`, `DEC-03` (SA) |
| 1.1 | 2026-09-12 | PO (uỷ quyền, Điều phối dự án) — tác vụ **sign/approve** | Duyệt **từng phần** §3 Ràng buộc (`CON-01`…`CON-09`) và §5 Giả định (`ASM-01`…`ASM-06`) của bản v1.1 — cùng cách ký thay PO theo ngoại lệ `DEC-01` (SA) đã dùng cho §2 Driver ở v1.0, **không phải chữ ký PO thật**. Không đổi nội dung chuyên môn. `OQ-004` (tính hợp lệ của ngoại lệ ký thay) giữ **mở**; Tech Lead **chưa ký**. `Confidence` giữ 🔴 (không nâng — phê duyệt không phải bằng chứng nguồn mới, và phần lớn `CON` vẫn neo theo hồ sơ thầu Draft/`priceComplete:false`, chưa PO xác nhận số thật). Status **giữ** 🟡 Draft — AG1 toàn phần vẫn chưa đủ điều kiện baseline (2/7 tiêu chí ✅, xem "Tự chấm" §①); §4 Hiện trạng và Bước 4–5 (`OPT`/`TCO`/`ARISK`) vẫn để lượt sau. | `DEC-01` (SA) |
| 1.2 | 2026-09-12 | SA (qua skill sa-1-context, chế độ `go`, hoạt động `as-is`) | Bổ sung §4 Hiện trạng (AS-IS) theo ghi chú người duyệt — bốn phần: (a) khẳng định greenfield + hệ quả (không dữ liệu migrate, không baseline tải/KPI thật); (b) hệ sinh thái bên ngoài phải tích hợp và trạng thái từng đối tác (VNPay, Momo, GHN, GHTK, Email/SMS, hoá đơn điện tử — hoãn phase 2); (c) tài sản thiết kế đã có (`SAD.md` v0.2 approved + hồ sơ thầu) — ghi rõ đây là **thiết kế đề xuất chưa thi công**, dùng làm điểm khởi đầu cho một phương án `OPT` theo trả lời `OQ-009`; (d) kỹ năng/tài sản tổ chức đã biết (AWS bắt buộc `CON-03`, team giả định `DEC-02`). Đóng `OQ-009` (chấp nhận `SAD.md` làm điểm khởi đầu tham khảo cho Bước 4, không phải phương án đã thắng sẵn) — ghi `DEC-04` (SA); `OQ-005`/`OQ-006` **giữ mở**, bổ sung ghi chú "câu trả lời tạm" (dùng số hồ sơ thầu làm mốc tham khảo, chưa PO xác nhận số thật) tại §7 và sổ `00-index/OQ_e-commerce.md`. Không sửa §2 Driver, §3 Ràng buộc, §5 Giả định đã duyệt từng phần trước đó. Tiếp tục ngoại lệ gate `DEC-01`/`DEC-03` (BA chưa qua G1, AG1 chưa từng chạy) — người dùng tái khẳng định muốn tiếp tục; `Confidence` giữ 🔴 cho phần lớn nội dung mới, riêng khẳng định greenfield (a) đạt 🟢 vì có nguồn `PROFILE_e-commerce.md` đã PO chốt. | `DEC-04` (SA) |
> Sơ đồ thắng về **quan hệ và luồng** (không có sơ đồ trong phần Driver của lượt chạy này).
> Bảng/văn bản thắng về **ràng buộc và con số**. Mâu thuẫn ngoài hai loại này là lỗi tài liệu.
---
## 0. Ghi chú Preflight & ngoại lệ gate — bắt buộc đọc trước
Đây là **GĐ1 đầu tiên của bộ SA** cho dự án e-commerce — không có gate SA nào trước nó
(`sa-lifecycle/workflow.md §4` chỉ yêu cầu điều kiện *ngoài bộ*: BA đã qua **G1** với `BRIEF`,
`GOAL`, `RQ`). Điều kiện đó **chưa đạt**:
- `BRIEF_CartCheckout_v1.0.md` — Status `🟡 Draft`, tự chấm G1 = **chưa đủ điều kiện ký chính
thức** (3/6 tiêu chí ☐: tên thật stakeholder `OQ-001`, buổi làm việc trực tiếp `OQ-005`,
baseline KPI thật `OQ-007`).
- Không có `BRIEF`/`RISK`/`STAKEHOLDER` cấp module cho các phần còn lại của sàn (Catalog,
Seller/KYC, Commission & Payout, Loyalty, Notification…) — driver các phần này chỉ suy được
từ `SAD.md` (đã "approved" ở cấp tài liệu BA nội bộ riêng, không đi qua pipeline `ba-*` module
hoá theo đúng quy trình).
**Người dùng (vai điều phối dự án chạy thử) đã được cảnh báo và khẳng định lại muốn tiếp tục**,
tham chiếu mô hình ngoại lệ đã dùng ở bộ BA (`DEC-02..07`, dự án e-commerce là dự án chạy thử,
không có Designer, PO ký thay). Quyết định ngoại lệ này được ghi tại `DEC-01` (SA) —
xem sổ `00-index/DEC_e-commerce.md` (sẽ đồng bộ khi chạy `/sa-lifecycle`).
> **DEC-01 (SA)** — Chạy `sa-1-context` (hoạt động Driver) cho dự án e-commerce trong khi BA
> chưa ký G1 chính thức và bản thân GĐ1 SA chưa có gate trước nó để chờ.
> **Quyết định:** Tiếp tục, gắn `Confidence 🔴` cho toàn bộ `DRV` cho tới khi BA ký G1 thật.
> **Người quyết:** Điều phối dự án (đại diện PO, theo ghi chú vận hành dự án chạy thử).
> **Radar (ước lượng):** chi phí đảo ngược thấp (viết lại phần Driver mất < 1 tuần nếu BA đổi
> phát biểu bài toán) · bán kính ảnh hưởng toàn bộ GĐ1 SA (một dự án) · không chạm trực tiếp một
> `QAS` cụ thể (chưa có `QAS` vì đây là GĐ1) · không ràng buộc dài hạn (là ngoại lệ tạm thời,
> không phải quyết định kiến trúc) · đã có tiền lệ ở bộ BA, ít tranh cãi. Tổng ước ~4 → **ghi
> `DEC-nn`, không cần `ADR`** theo `decision-radar.md §1–§2`.
> **Hệ quả nếu không chấp nhận ngoại lệ:** dừng toàn bộ GĐ1 SA cho tới khi BA ký G1 thật (cần
> tối thiểu: tên thật stakeholder, 1 buổi elicitation trực tiếp, baseline KPI đo được) — ước
> chậm tiến độ chạy thử ít nhất bằng thời gian BA hoàn tất các mục đó (không có con số cụ thể vì
> đây là dự án chạy thử không có lịch thật).
---
## 1. Tóm tắt cho người quyết định
Sàn marketplace đa seller (e-commerce) cần kiến trúc chịu được quy mô "lớn" (hàng trăm nghìn
SKU, hàng trăm nghìn–hàng triệu user, đỉnh hàng nghìn–chục nghìn concurrent user mùa flash sale)
trong khi vẫn giữ đúng luồng giao dịch lõi (giỏ hàng đa seller → tách đơn → thanh toán) không
mất tiền, không mất dữ liệu, và tách bạch dòng tiền giữa khách–sàn–seller. Áp lực lớn nhất
không nằm ở tính năng mà ở: (1) luồng giao dịch lõi là blocker của toàn bộ MVP, (2) đỉnh tải
flash sale, (3) tuân thủ pháp lý (PCI-DSS, NĐ13/2023) khi xử lý tiền và PII của hai loại chủ
thể (khách hàng và seller). Tài liệu này **chỉ chốt phần Driver** (`DRV-nn`) của GĐ1; Ràng buộc,
hiện trạng, phương án, chi phí và rủi ro sẽ chạy ở các lượt kế tiếp — xem `Ngoài phạm vi`.
---
## 2. Driver — `DRV-nn`
*Áp lực kinh doanh ép ra kiến trúc, không phải tính năng. Ưu tiên nguồn: `BRIEF_CartCheckout`
(GOAL-01/02, RQ-001…004) cho module Giỏ hàng & Checkout; `SAD.md` v0.2 §1–§2 (FR-01…27,
NFR-01…08) cho các module còn lại của sàn — Confidence thấp hơn vì chưa qua BRIEF module hoá.*
| ID | Áp lực (định lượng) | Nguồn | Ai xác nhận · ngày | Thuộc tính chất lượng bị ép | Ưu tiên |
|---|---|---|---|---|---|
| `DRV-01` | Chưa có luồng giỏ hàng–checkout–thanh toán đa seller hoạt động ⇒ sàn **không thể ra mắt MVP**: 0 giao dịch ghi nhận được, seller không nhận được đơn, mọi module phụ thuộc (quản lý đơn hàng, hoa hồng, payout, đánh giá) bị **chặn hoàn toàn** — đây là blocker, không phải cải tiến. | `BRIEF_CartCheckout` §3 "Điều gì xảy ra nếu không làm gì cả" · §5.1 RQ-001…004 (Must) | STK-01 (PO sàn) qua `00-project-brief.md` vòng 1 — **chưa có tên thật**, `OQ-001` (BA) còn mở | Tính đúng đắn giao dịch · tính nhất quán dữ liệu qua nhiều seller · thông lượng | Must |
| `DRV-02` | Giỏ hàng ≥2 seller có nguy cơ tỷ lệ bỏ giỏ ở bước checkout cao hơn giỏ 1 seller (phí ship tính riêng theo từng seller, `RISK-04` mức 🟠). `GOAL-01` đề xuất ngưỡng chấp nhận ≤ (tỷ lệ bỏ giỏ 1 seller) + 10 điểm phần trăm — **baseline thật chưa có** (greenfield, `OQ-007` BA còn mở). | `BRIEF_CartCheckout` §4 GOAL-01 · `RISK_CartCheckout` RISK-04 | STK-01 (PO sàn) — đề xuất đo baseline 4–6 tuần đầu soft-launch, **chưa xác nhận số thật** | Độ trễ hiển thị phí ship theo seller · trải nghiệm nhất quán khi tách đơn | Must (gắn RQ-001/002 Must) |
| `DRV-03` | Thanh toán phải chấp nhận VNPay/Momo/COD **không lưu thông tin thẻ** để giảm phạm vi tuân thủ PCI-DSS — nếu tự lưu/xử lý thẻ, phạm vi kiểm toán PCI-DSS đầy đủ (thay vì rút gọn qua bên thứ ba) kéo theo chi phí tuân thủ và rủi ro pháp lý cao hơn đáng kể (con số tuân thủ cụ thể chưa có — cần Legal, xem `OQ` mới ở §7). | `BRIEF_CartCheckout` §5.1 RQ-003 · `docs/sections/01-tong-quan.md` §1.5 · `docs/sections/02-phan-tich-yeu-cau.md` NFR-05 | STK-01 (PO sàn), STK-06 (Tech Lead — chưa xác nhận khả thi), qua `00-project-brief.md` vòng 1 | Bảo mật/tuân thủ (ranh giới phạm vi PCI-DSS) | Must |
| `DRV-04` | Quy mô mục tiêu "lớn": hàng trăm nghìn SKU trở lên, hàng trăm nghìn–hàng triệu user đăng ký, đỉnh **hàng nghìn–chục nghìn concurrent user** mùa flash sale. Không scale-out ngay từ đầu ⇒ hệ thống có nguy cơ sập đúng lúc doanh thu cao nhất trong năm (flash sale). | `00-project-brief.md` mục 3 (Q&A vòng 1) · `docs/sections/02-phan-tich-yeu-cau.md` NFR-02 | STK-01 (PO sàn) qua vòng 1 brief — **chưa có tên thật, chưa có số đo thật** (dự án chưa vận hành, đây là mục tiêu quy mô đã "chốt" ở mức mô tả định tính "lớn", không phải SLA hợp đồng) | Khả năng mở rộng (scale-out) · thông lượng · độ trễ dưới tải đỉnh | Must |
| `DRV-05` | Uptime mục tiêu 99.9% cho dịch vụ giao dịch lõi (catalog, checkout, thanh toán) vì doanh thu phụ thuộc trực tiếp; escalation 24/7 cho sự cố nghiêm trọng. 99.9%/tháng ⇒ ngân sách lỗi ≈ 43 phút/tháng — vượt ngân sách này ở đúng dịch vụ giao dịch nghĩa là mất doanh thu trực tiếp trong khung giờ đó. | `docs/sections/02-phan-tich-yeu-cau.md` NFR-03, NFR-08 · `00-project-brief.md` mục 5 giả định #6 | STK-01 (PO sàn) — 🔴 **đây là "giả định mặc định đã chốt trong brief", CHƯA phải SLA hợp đồng thật** (ghi rõ trong `docs/sections/02-phan-tich-yeu-cau.md` cuối §2.2) | Sẵn sàng (availability) · khả năng phục hồi | Must |
| `DRV-06` | Dòng tiền phải minh bạch giữa 3 bên (khách–sàn–seller): hoa hồng tính theo ngành hàng (cấu hình được), payout hàng tuần qua chuyển khoản có kỳ giữ tiền (hold) 3–7 ngày sau giao hàng thành công. Sai lệch đối soát phát sinh từ tầng giao dịch (checkout/payment) sẽ lan sang toàn bộ hệ thống payout/commission — ở quy mô "lớn" (hàng trăm nghìn giao dịch), một lỗi hệ thống nhỏ nhân lên thành tranh chấp tài chính hàng loạt. | `docs/sections/01-tong-quan.md` §1.1 · `00-project-brief.md` mục 2 & mục 5 (giả định #3) · `docs/sections/02-phan-tich-yeu-cau.md` FR-17/FR-21/FR-22 | STK-01 (PO sàn), STK-04 (Kế toán đối soát — vai trò, chưa tên thật) | Tính nhất quán dữ liệu tài chính · khả năng kiểm toán (audit) · ranh giới sở hữu dữ liệu | Must |
| `DRV-07` | Chia sẻ PII (địa chỉ giao hàng, số điện thoại người nhận) cho từng seller khi tách đơn theo seller **chưa được rà soát** theo Nghị định 13/2023 vì dự án chưa có đại diện Pháp chế/Bảo mật được chỉ định. Rủi ro tương ứng đã được BA ghi nhận mức **Cao/Trung bình** (`RISK-03`). | `RISK_CartCheckout_v1.0.md` RISK-03 · `docs/sections/02-phan-tich-yeu-cau.md` NFR-04, NFR-05 | *(Chưa có người — `OQ-003` BA còn mở)* | Bảo mật/quyền riêng tư · phân loại dữ liệu nhạy cảm | Must |
| `DRV-08` | Xác nhận thanh toán qua webhook VNPay/Momo (bên thứ ba) **chưa được xác minh khả thi gần thời gian thực** (`ASM-01`, chưa xác minh). Nếu webhook trễ/lỗi, đơn hàng kẹt "chờ thanh toán" dù tiền đã thu ⇒ khiếu nại CSKH + sai lệch đối soát (`RISK-02`, tác động Cao, khả năng Trung bình). | `RISK_CartCheckout_v1.0.md` RISK-02, ASM-01 · `IMPACT_CartCheckout_v1.0.md` §1.5 | STK-06 (Tech Lead) + STK-01 (PO sàn) — chưa xác nhận khả thi thật (cần đọc tài liệu/gọi sandbox VNPay/Momo) | Tính nhất quán (eventual) · khả năng đối soát bù · quan sát được (observability) | Must |
| `DRV-09` | Đa ngôn ngữ 5 thứ tiếng (VI mặc định/EN/ZH/KO/JA) để mở rộng tệp khách hàng mục tiêu ra ngoài thị trường Việt Nam thuần tuý — Should, không chặn MVP nếu thiếu, nhưng thiếu thì giới hạn khả năng tiếp cận thị trường theo đúng mô hình kinh doanh đã chốt (marketplace quy mô lớn). | `docs/sections/01-tong-quan.md` §1.1 · `docs/sections/02-phan-tich-yeu-cau.md` NFR-06 | STK-01 (PO sàn) qua vòng 3 brief — chưa tên thật | Khả năng bảo trì (kiến trúc i18n/l10n tách nội dung khỏi code) | Should |
**Ghi chú Confidence theo dòng:** `DRV-01, 02, 03, 07, 08` có nguồn trực tiếp từ `BRIEF/RISK/
IMPACT` cấp module Giỏ hàng & Checkout (dù bản thân các tài liệu đó còn Draft) — Confidence
🔴 hiện tại chỉ vì BA chưa ký G1, **không phải vì thiếu nguồn**. `DRV-04, 05, 06, 09` chỉ có
nguồn từ `SAD.md`/`docs/sections` (chưa qua BRIEF/RISK module hoá riêng cho các phần đó của sàn)
— Confidence 🔴 vì **cả hai lý do**: chưa qua G1 và chưa có phân tích module hoá cấp BA. Ghi rõ
để người ký AG1 sau này biết mức độ rủi ro khác nhau giữa các dòng.
### 2.1 Định hướng khách gợi ý *(tham khảo, KHÔNG phải driver)*
| Khách/tài liệu nói | Đây là giải pháp cho vấn đề gì | Đã hỏi ngược chưa | `DRV` thật rút ra được |
|---|---|---|---|
| "Kiến trúc cần cache (Redis), CDN, message queue (Kafka/RabbitMQ), scale-out ngang ngay từ đầu" (`00-project-brief.md` mục 2 "NFR tiêu biểu"; lặp lại ở NFR-02) | Giải pháp cho vấn đề chịu tải đỉnh mùa flash sale — nhưng câu này tự nó không định lượng được tải đỉnh | ☐ Chưa hỏi trực tiếp PO/Tech Lead; suy luận qua con số ở NFR-02 ("hàng nghìn–chục nghìn concurrent user") | `DRV-04` — công nghệ cụ thể (Redis/Kafka/RabbitMQ) là đề xuất, **không phải ràng buộc bắt buộc**; việc chọn công nghệ nào thuộc Bước 4 (Phương án) của GĐ1, chưa làm ở lượt này |
| "Kiến trúc module hoá để các nhóm (catalog, order, seller, payment) phát triển độc lập" (NFR-07) | Giải pháp cho vấn đề đội ngũ chờ nhau khi release (Conway) — nhưng **số đội/số người CHƯA có** | ☐ Chưa hỏi — đây là câu hỏi thuộc nhóm ràng buộc "Con người" (Bước 2, ngoài phạm vi lượt chạy này) | Chưa rút ra được driver cụ thể — ghi `OQ-002` (SA) ở §7 |
| "Tech stack không bắt buộc, kiến trúc sư tự đề xuất theo best practice cho quy mô lớn; cloud = AWS" (`00-project-brief.md` mục 2 & 5) | Đây là **ràng buộc** (`CON`), không phải driver — AWS đã được xác nhận là bắt buộc (cứng) | N/A — không phải driver | Sẽ thành `CON-nn` (nhóm Công nghệ) khi chạy Bước 2 — ngoài phạm vi lượt này |
---
## 3. Ràng buộc — `CON-nn`
*Thứ KHÔNG thương lượng được — sở thích không phải ràng buộc. Rà đủ sáu nhóm theo
`sa-1-context/SKILL.md` Bước 2. Ngân sách/deadline dưới đây tham khảo `e-commerce/bid/`
(`bid-config.md`, `30-implementation-plan.md`, `estimate.computed.json`) — đây là **hồ sơ thầu
ước lượng của nhà thầu, Status `draft`, `cost.priceComplete=false`, KHÔNG phải hợp đồng đã ký**.
Dùng làm điểm tham khảo duy nhất hiện có, ghi rõ độ tin cậy 🔴, KHÔNG coi là ràng buộc cứng cho
tới khi PO xác nhận bằng số thật — theo đúng ghi chú người duyệt.*
| ID | Nhóm | Ràng buộc | Nguồn (ai · ngày) | Cứng/Mềm | Hệ quả kiến trúc |
|---|---|---|---|---|---|
| `CON-01` | Tiền | Ngân sách hạ tầng/tháng và chi phí một lần **CHƯA được PO duyệt chính thức** (`00-project-brief.md` mục 6: "ngân sách/timeline chưa xác định"; mục 5 giả định: "ngân sách theo business case"). Tham khảo duy nhất hiện có: hồ sơ thầu ước lượng — lao động ≈ 3.420.500.000 VND (chưa VAT) + VAT 10% (342.050.000 VND) = **≈ 3.762.550.000 VND** cho 53,02 người-tháng/7 tháng thực hiện (`estimate.computed.json` → `cost.subtotal/vat/total`); **8 khoản chi phí không lao động** (hạ tầng AWS 3 môi trường, OpenSearch cluster, phí giao dịch VNPay/Momo, phí Email/SMS, phí API GHN/GHTK, domain/SSL/WAF, pentest/ASV hàng năm, đào tạo) đều `amount: null` — **chưa có số**, kể cả trong chính hồ sơ thầu. | `00-project-brief.md` mục 6 · `e-commerce/bid/estimate.computed.json` `cost` (Draft, chưa PO xác nhận) | **Chưa xác định cứng/mềm** — không có ngân sách nào được PO duyệt để đối chiếu | Không thể chấm điểm `TCO` (Bước 5, ngoài phạm vi lượt này) một cách có ý nghĩa cho tới khi có số ngân sách thật — xem `OQ-005` |
| `CON-02` | Thời gian | Không có deadline hợp đồng/pháp lý bên ngoài được xác nhận (`bid-config.projectDeadline`/`submissionDeadline` rỗng; `estimate.computed.json` → `timeline.deadlineFit.fits = null`). **Hai con số tham khảo KHÔNG khớp nhau:** brief giả định định tính "~9-12 tháng" (mục 5, giả định cuối) vs hồ sơ thầu tính toán "7 tháng thực hiện" (`timeline.durationMonths=7`, teamSize trung bình 9, đỉnh điểm 10 người) + 12 tháng bảo hành sau đó (`bid-config.warrantyMonths=12`). | `00-project-brief.md` mục 5, giả định #7 · `e-commerce/bid/estimate.computed.json` `timeline` · `e-commerce/bid/30-implementation-plan.md` §B7.1, §B7.5 | Mềm (chưa có ràng buộc cứng nào được xác nhận bằng văn bản) | `OPT` Bước 4 (ngoài phạm vi lượt này) phải trình ≥2 kịch bản thời gian (7 tháng "đẩy nhanh" theo bid vs 9-12 tháng "chuẩn" theo brief) thay vì giả định một mốc duy nhất — xem `OQ-006` |
| `CON-03` | Công nghệ | Cloud **AWS bắt buộc** — đã xác nhận tại vòng 3 Q&A của brief, không phải sở thích của kiến trúc sư | `00-project-brief.md` mục 5 (Q&A vòng 3: "cloud AWS") · `docs/sections/01-tong-quan.md` §1.5 | **Cứng** | Loại mọi phương án dùng cloud khác/on-prem ngay từ Bước 4 (`OPT`) |
| `CON-04` | Công nghệ | Đối tác thanh toán **VNPay + Momo + COD**, đối tác vận chuyển **GHN + GHTK** đã xác nhận làm mặc định tích hợp (không phải "chờ chọn tuỳ ý") — nhưng dự án **chưa có tài liệu API/tài khoản sandbox thật** với bất kỳ đối tác nào trong bốn đối tác này | `00-project-brief.md` mục 1 vòng 1 & mục 4 vòng 1 | Cứng (danh tính đối tác đã chốt) / Mềm (thời điểm có sandbox/hợp đồng thật — phụ thuộc bên ngoài) | Thiết kế tích hợp (`ICD`, GĐ2) phải giả định theo tài liệu công khai của 4 đối tác này cho tới khi có sandbox thật xác nhận (kế thừa `ASM-01`/`ASM-02` của BA ở `RISK_CartCheckout_v1.0.md` §1, §3) |
| `CON-05` | Con người | Số đội/số người/kỹ năng team thi công + đội vận hành sau go-live **CHƯA được PM/Tech Lead xác nhận số thật** — hiện dùng giả định tạm "team MVP chuẩn" theo `DEC-02` (SA, 🔴). Tham khảo duy nhất: hồ sơ thầu ước lượng teamSize trung bình **9 vị trí đồng thời**, đỉnh điểm **10 đầu người**, 8 vai trò (PM/BA/SA/UIUX/BE/FE/QA/DEVOPS) — đây là cách tổ chức nhân sự **do nhà thầu đề xuất cho hồ sơ thầu của chính họ**, không phải đội hình mà PO/chủ dự án đã cam kết tuyển/thuê nội bộ; toàn bộ tên/CV nhân sự trong hồ sơ thầu vẫn là `[[CẦN ĐIỀN]]` | `DEC-02` (SA) · `e-commerce/bid/30-implementation-plan.md` §B8.2 (tên/CV `[[CẦN ĐIỀN]]`), §B8.3 (đơn vị FTE, không phải cam kết nhân sự) | Chưa xác định — chỉ là số liệu tham khảo, không có giá trị ràng buộc | Ranh giới service ở `SAD` (GĐ2) không nên chốt cứng theo số liệu này cho tới khi có số team thật — xem `OQ-002` (mở từ v1.0) và `OQ-008` (mới, riêng phần đội vận hành sau go-live) |
| `CON-06` | Pháp lý | Bắt buộc tuân thủ: **NĐ52/2013 + NĐ85/2021** (thông báo website TMĐT dạng sàn giao dịch với Bộ Công Thương), **NĐ13/2023** (bảo vệ dữ liệu cá nhân — cả PII khách hàng lẫn giấy tờ KYC seller), **PCI-DSS phạm vi thu hẹp** (SAQ A — không lưu thông tin thẻ, giao VNPay/Momo xử lý, cô lập trong một Payment Service duy nhất theo `SAD.md` §3.1) | `docs/sections/01-tong-quan.md` §1.5 · `docs/sections/02-phan-tich-yeu-cau.md` NFR-05 · `SAD.md` §3.1, §8 (§8.4 pentest/ASV cho SAQ A) | **Cứng** (pháp luật, không thương lượng được) | Payment Service phải là biên cô lập duy nhất chạm dữ liệu thẻ (đã phản ánh trong `SAD.md`, GĐ2 SA kế thừa nguyên trạng, không thiết kế lại); mọi luồng chia sẻ địa chỉ/SĐT cho seller khi tách đơn phải qua rà soát Pháp chế trước go-live — **chưa có người rà soát** (kế thừa `RISK-03`/`OQ-003` của BA) |
| `CON-07` | Pháp lý | Hoá đơn điện tử cho seller **đã xác nhận hoãn sang phase 2** (không thuộc MVP) — đây là **quyết định kinh doanh đã chốt**, không phải khoảng trống thông tin | `00-project-brief.md` mục 2, dòng "Hoá đơn điện tử cho seller — hoãn sang giai đoạn sau, đã xác nhận (vòng 3)" | Cứng (phạm vi đã chốt cho MVP) | Không thiết kế module hoá đơn điện tử ở GĐ2 MVP; ghi vào §6 "Ngoài phạm vi" và để cho `TRM` (GĐ4) khi có phase sau — xem `ASM-06` |
| `CON-08` | Tổ chức/Vận hành | Đội vận hành (Ops) trực theo ca giờ hành chính + escalation 24/7 cho sự cố nghiêm trọng (do doanh thu phụ thuộc hệ thống) — hiện là **giả định mặc định đã chốt trong brief**, CHƯA xác nhận đội ops là nội bộ PO hay thuê ngoài, quy mô bao nhiêu người | `00-project-brief.md` §5, giả định cuối ("Vận hành: … đội ops trực theo ca…") · `docs/sections/02-phan-tich-yeu-cau.md` NFR-08 | Mềm (giả định, chưa xác nhận thật) | Thiết kế on-call/`INF` ở GĐ2 phải giả định một mô hình vận hành cụ thể cho tới khi có xác nhận thật — xem `OQ-008` |
| `CON-09` | Tổ chức/Vận hành | Bảo hành 12 tháng sau nghiệm thu tổng thể (`bid-config.warrantyMonths=12`) là điều khoản **đề xuất của nhà thầu trong hồ sơ thầu**, chưa phải điều khoản hợp đồng đã ký; mô hình bàn giao vận hành lâu dài cho PO sau khi hết bảo hành (ai tiếp nhận, có chuyển giao kiến thức không) **chưa được mô tả ở đâu** | `e-commerce/bid/bid-config.md` (`warrantyMonths: 12`) · `e-commerce/bid/30-implementation-plan.md` §B7.2 Giai đoạn 7 | Mềm (đề xuất, chưa ký hợp đồng) | `AGD`/`DREV` ở GĐ3 (ngoài phạm vi lượt này) cần biết ai là đội vận hành lâu dài để viết guideline đúng đối tượng — ghi nhận sớm, không quyết thay PM/PO |
**Cứng** = vi phạm thì dự án bị chặn (pháp luật, cloud bắt buộc). **Mềm** = đổi được nhưng tốn
tiền/thời gian — ở đây phần lớn còn ghi "Mềm/Chưa xác định" vì các nguồn duy nhất hiện có
(brief giả định, hồ sơ thầu ước lượng) chưa được PO/PM/Tech Lead xác nhận là ràng buộc thật.
### 3.1 Nhóm ràng buộc chưa có thông tin (còn cần xác nhận thật)
| Nhóm | Ai phải trả lời | Đã hỏi ngày | `OQ` | Chặn gì |
|---|---|---|---|---|
| Tiền (số ngân sách thật, không phải ước lượng thầu) | PO / tài chính | 2026-09-12 (qua tài liệu, chưa phải buổi hỏi trực tiếp) | `OQ-005` | `CON-01` (cứng/mềm), `TCO` Bước 5 |
| Thời gian (deadline thật, nếu có) | PO / PM | 2026-09-12 | `OQ-006` | `CON-02`, kịch bản thời gian ở `OPT` Bước 4 |
| Con người (đội vận hành sau go-live: nội bộ hay thuê ngoài, quy mô) | PM / SRE | 2026-09-12 | `OQ-008` | `CON-05`, `CON-08`, thiết kế `INF`/on-call GĐ2 |
| Pháp lý (đại diện Pháp chế/Bảo mật xác nhận yêu cầu residency theo NĐ13/2023) | Legal / Security | 2026-09-12 (kế thừa `OQ-003` của BA, vẫn chưa có người) | `OQ-007` | `CON-06`, `ASM-04`, ranh giới hạ tầng dữ liệu ở `DAT`/`INF` GĐ2 |
## 4. Hiện trạng (AS-IS)
*Bước 3 của `sa-1-context`, chạy ở lượt này (hoạt động `as-is`). Dự án e-commerce là
**greenfield** — không có hệ thống/dữ liệu cũ để khảo sát trực tiếp theo bốn mục
`GUIDE.md` (hệ thống/dữ liệu/tích hợp/vận hành). Theo `SKILL.md` §Bước 3 và
`artifact-map.md` §7 (loại LIFECYCLE=greenfield ⇒ rút gọn CTX phần as-is), "hiện trạng" ở đây
gồm bốn phần: (a) khẳng định greenfield + hệ quả, (b) hệ sinh thái bên ngoài bắt buộc tích hợp
(đây là "as-is" thật duy nhất của một dự án greenfield — các đối tác đã tồn tại và có ràng buộc
kỹ thuật/pháp lý riêng của họ), (c) tài sản thiết kế nội bộ đã có (`SAD.md`/hồ sơ thầu), (d)
kỹ năng/tài sản tổ chức đã biết.*
### 4.1 Khẳng định greenfield và hệ quả
**Khẳng định:** Dự án e-commerce là hệ thống **mới hoàn toàn** — không có hệ thống, cơ sở dữ
liệu, hay quy trình thủ công nào đang chạy để thay thế/tích hợp cho lõi giao dịch (giỏ hàng →
checkout → thanh toán → tách đơn theo seller → vận chuyển → hoa hồng/payout). Nguồn:
`PROFILE_e-commerce.md` (`LIFECYCLE: greenfield`, PO chốt 2026-09-08) · `PROCESS_CartCheckout_v1.0.md`
§0 ("dự án là marketplace hoàn toàn mới, không có hệ thống hay quy trình thủ công… không có hệ
thống cũ (ERP/kho/CRM) cần tích hợp hoặc migrate cho luồng giỏ hàng/checkout").
| # | Hệ quả của greenfield | Diễn giải cho GĐ1/GĐ2 SA | Nguồn |
|---|---|---|---|
| 1 | **Không có dữ liệu để migrate** | `OPT` (Bước 4) không cần kịch bản migration/rollback dữ liệu cũ, khác dự án loại 3 (migration) theo `SKILL.md` Bước 0.2; `DAT` ở GĐ2 thiết kế mô hình dữ liệu từ đầu, không cần ánh xạ từ schema cũ | `PROFILE_e-commerce.md`; `workflow.md §5` (bảng phân loại dự án) |
| 2 | **Không có baseline tải/KPI đo được thật** | Mọi con số trong `DRV-02` (tỷ lệ bỏ giỏ ≤ baseline 1-seller + 10 điểm %), `DRV-04` (đỉnh "hàng nghìn–chục nghìn concurrent user"), `DRV-05` (uptime 99.9%) là **mục tiêu/giả định đã chốt trong brief**, KHÔNG phải số đo từ hệ thống đang chạy — xác nhận lại điều đã ghi ở các dòng `DRV` tương ứng (§2), không đổi nội dung `DRV` | `BRIEF_CartCheckout` §4 GOAL-01; `docs/sections/02-phan-tich-yeu-cau.md` NFR-02/03; `00-project-brief.md` §5 giả định #6 |
| 3 | **Không có nợ kỹ thuật/hệ thống legacy** | GĐ2 (`SAD`/`ADR`) không cần rà soát tương thích ngược hay "strangler pattern"; toàn bộ ranh giới service trong `SAD.md` §3.1 có thể thiết kế theo domain lý tưởng, không bị ràng buộc bởi cấu trúc code cũ | `SAD.md` §3.1 |
| 4 | **Không có người dùng/seller thật đang hoạt động cần continuity** | Không cần chiến lược cutover zero-downtime từ hệ thống cũ sang mới khi go-live; rủi ro go-live là "ra mắt lần đầu" (chưa từng có traffic thật để so sánh), không phải "chuyển đổi không được gián đoạn" | `PROFILE_e-commerce.md`; `PROCESS_CartCheckout_v1.0.md` §0 |
🔴 **Hệ quả ngược nếu khẳng định greenfield sai** (VD phát hiện có một hệ thống nội bộ cũ dùng
tạm cho vận hành thủ công mà brief chưa nhắc tới): phải chạy lại Bước 3 đầy đủ theo bốn mục
`GUIDE.md` (hệ thống/dữ liệu/tích hợp/vận hành cũ), và `DRV-01` (blocker MVP) có thể phải viết
lại vì đã có một phần luồng đang chạy thủ công — chưa có dấu hiệu này trong mọi tài liệu đã đọc.
### 4.2 Hệ sinh thái bên ngoài phải tích hợp — trạng thái từng đối tác
*Đây là "hiện trạng" thật của một dự án greenfield: các đối tác này đã tồn tại độc lập với dự
án, có ràng buộc kỹ thuật/hợp đồng riêng của họ mà SA phải khảo sát trước khi thiết kế `ICD`
(GĐ2). Cột "Trạng thái sẵn sàng" đối chiếu với `CON-04` (§3) — dự án **chưa có** tài liệu API
sandbox/tài khoản thật với bất kỳ đối tác nào dưới đây.*
| Đối tác | Vai trò trong luồng nghiệp vụ | Giao thức đề xuất (`SAD.md` §3.4) | Trạng thái sẵn sàng thật (khảo sát) | Nguồn |
|---|---|---|---|---|
| **VNPay** | Cổng thanh toán online (redirect + IPN callback xác nhận giao dịch), không lưu thẻ | REST/HTTPS, timeout 10s, retry callback idempotent ≤3 lần | 🔴 Chưa có tài khoản sandbox/hợp đồng — thiết kế timeout/retry ở `SAD.md` §3.4 là **đề xuất chưa xác minh với sandbox thật** (kế thừa `ASM-01`/`ASM-02` của BA, `DRV-08`) | `SAD.md` §3.4; `CON-04`; `RISK_CartCheckout` ASM-01 |
| **Momo** | Cổng thanh toán online (redirect + IPN), không lưu thẻ | REST/HTTPS, timeout 10s, retry callback idempotent ≤3 lần | 🔴 Chưa có tài khoản sandbox/hợp đồng — tương tự VNPay | `SAD.md` §3.4; `CON-04` |
| **COD** | Thu tiền mặt khi giao — không phải API bên ngoài, là luồng nghiệp vụ nội bộ xác nhận qua đơn vị vận chuyển | Không áp dụng (không phải tích hợp API) | 🟢 Không phụ thuộc đối tác công nghệ — phụ thuộc quy trình xác nhận thủ công của GHN/GHTK/Ops | `SAD.md` §3.4 |
| **GHN** | Vận chuyển: tạo vận đơn, tra cứu trạng thái, webhook cập nhật | REST/HTTPS, timeout 8s, retry ≤3 lần, webhook idempotent | 🔴 Chưa có tài liệu API/sandbox thật — `SAD.md` §3.4 đề xuất fallback chéo sang GHTK khi GHN lỗi, **chưa kiểm chứng** khả năng fallback này có hoạt động đúng giữa hai API khác nhau trong thực tế | `SAD.md` §3.4; `CON-04` |
| **GHTK** | Vận chuyển (tương tự GHN), fallback chéo cho GHN | REST/HTTPS, timeout 8s, retry ≤3 lần | 🔴 Chưa có tài liệu API/sandbox thật — tương tự GHN | `SAD.md` §3.4; `CON-04` |
| **Email/SMS Provider** | Thông báo đơn hàng/giao hàng, nội dung đa ngôn ngữ | REST/HTTPS hoặc SDK qua queue, timeout 5s, retry ≤5 lần backoff | 🔴🔴 **Nhà cung cấp cụ thể CHƯA CHỐT** (SAD.md §3.4 tự ghi "đề xuất: SES/SNS hoặc SendGrid/Twilio — nhà cung cấp cụ thể chưa chốt, xem giả định") — mức độ chưa sẵn sàng cao hơn VNPay/Momo/GHN/GHTK vì còn chưa chọn đối tác, chưa dừng ở "chưa có sandbox" | `SAD.md` §3.4 |
| **Ngân hàng (payout)** | Chuyển khoản hoa hồng/payout hàng tuần cho seller | Batch file chuẩn ngân hàng (VD NAPAS) hoặc API — *ngân hàng cụ thể chưa chốt* | 🔴🔴 Chưa chọn ngân hàng đối tác, chưa có định dạng batch xác nhận | `SAD.md` §3.4 |
| **Google/Facebook OAuth** | Đăng nhập mạng xã hội (Should, không chặn MVP vì email/password vẫn hoạt động độc lập) | OAuth 2.0/OIDC redirect flow, timeout 10s | 🟡 Chuẩn mở, không cần hợp đồng riêng như các đối tác thương mại ở trên, nhưng vẫn chưa có app/client ID thật được đăng ký | `SAD.md` §3.4 |
| **Hoá đơn điện tử cho seller** | Xuất hoá đơn điện tử tự động khi seller phát sinh doanh thu | *(không thiết kế ở MVP)* | ⏸️ **Hoãn sang phase 2 — đã xác nhận (vòng 3 brief), không phải khoảng trống thông tin.** Không phải rủi ro tích hợp of MVP; ghi nhận cho `TRM` (GĐ4) khi có phase sau | `00-project-brief.md` dòng "Ngoài phạm vi MVP… hoá đơn điện tử tự động cho seller"; `CON-07` |
**Đọc bảng:** 🔴 = chưa sandbox/hợp đồng thật nhưng đối tác đã xác định danh tính (kế thừa từ
Bước 1/2). 🔴🔴 = chưa cả chọn đối tác cụ thể (mức chưa sẵn sàng cao hơn). 🟡 = chuẩn mở, ít rủi
ro hơn. 🟢 = không phụ thuộc đối tác công nghệ bên ngoài. ⏸️ = ngoài phạm vi MVP theo quyết định
kinh doanh đã chốt, không phải rủi ro.
Hệ quả cho GĐ2: `ICD` không thể chốt contract thật (owner, SLA, mã lỗi cụ thể) cho VNPay/Momo/
GHN/GHTK/Email-SMS cho tới khi có tài liệu/sandbox thật — GĐ2 sẽ phải thiết kế theo tài liệu
công khai của đối tác và đánh dấu `Confidence` 🔴 cho các `IF-nnn` tương ứng, kế thừa `ASM-01`
(BA) và `CON-04` (SA).
### 4.3 Tài sản thiết kế nội bộ đã có
Dự án **không** ở tình trạng "trắng hoàn toàn" về mặt thiết kế — đã có hai tài sản tham khảo:
| Tài sản | Trạng thái ghi trong chính tài liệu | Bản chất thật — SA phải hiểu đúng | Dùng làm gì ở GĐ1 SA |
|---|---|---|---|
| `e-commerce/docs/SAD.md` v0.2 (toàn bộ 9 mục `docs/sections/01…09`) | `status: approved` ở mọi mục con và ở bản ráp tổng thể (§0.2/§0.3 của `SAD.md`: "Product Owner/Kiến trúc sư trưởng đã phê duyệt") | Đây là **"approved" ở cấp phê duyệt nội bộ bản vẽ** (PO/Kiến trúc sư trưởng ký trên giấy khi làm hồ sơ), **KHÔNG phải kiến trúc đang chạy production**, không phải nghiệm thu vận hành, và không đi qua gate `AG1`/`AG2` của chính bộ `sa-*` này (được viết trước khi có pipeline `sa-lifecycle`) | Theo trả lời **`OQ-009` (đã đóng, xem `DEC-04`)**: dùng làm **điểm khởi đầu tham khảo** (baseline candidate) cho một trong các phương án ở Bước 4 (`OPT`) — KHÔNG mặc định là phương án thắng sẵn; Bước 4 vẫn phải dựng ≥1 phương án độc lập khác để so sánh thật (tránh bẫy "một phương án đã thắng sẵn", `GUIDE.md` "Bẫy thường gặp") |
| `e-commerce/bid/` (`bid-config.md`, `30-implementation-plan.md`, `estimate.computed.json`) | `status: draft`, `cost.priceComplete: false` — tự ghi rõ là ước lượng dự thầu, chưa hợp đồng | Ước lượng của **nhà thầu** cho mục đích đấu thầu (nhân công, timeline, đội hình đề xuất) — khác mục đích với `TCO` (ước lượng vận hành 3 năm theo phương án kiến trúc SA chọn) đã ghi ở §6 "Ngoài phạm vi" | Tham khảo duy nhất hiện có cho `CON-01`/`CON-02`/`CON-05` (đã ghi ở §3) — không dùng làm số `TCO` thật ở Bước 5 |
🔴 **Ranh giới thẩm quyền quan trọng:** "approved" trong `SAD.md` là do PO/Kiến trúc sư trưởng
**nội bộ nhà thầu** ký trong quá trình chuẩn bị hồ sơ — không phải PO thật của dự án chạy thử
này ký qua pipeline `sa-*`. Coi `SAD.md` là "đã chốt, không được đổi" là hiểu sai bản chất và vi
phạm chính Bước 4 của `SKILL.md` (nguy cơ "một phương án duy nhất" — mục "Bẫy thường gặp").
**Quyết định đóng `OQ-009`:** xem `DEC-04` (SA) — chấp nhận dùng `SAD.md`/hồ sơ thầu làm điểm
khởi đầu tham khảo cho `OPT`, với điều kiện Bước 4 vẫn phải dựng và chấm điểm ≥1 phương án độc
lập khác theo đúng quy trình bắt buộc của `SKILL.md` Bước 4.
### 4.4 Kỹ năng/tài sản tổ chức đã biết
| Tài sản/ràng buộc tổ chức | Trạng thái | Hệ quả cho `OPT`/GĐ2 | Nguồn |
|---|---|---|---|
| **AWS bắt buộc** | Cứng, đã xác nhận vòng 3 Q&A brief (không phải sở thích SA) | Loại mọi phương án cloud khác/on-prem ngay từ Bước 4; mọi dịch vụ managed đề xuất trong `SAD.md`/`docs/sections/09` (ECS Fargate/EKS, RDS, ElastiCache, MSK, OpenSearch, CloudFront, WAF, Secrets Manager, PagerDuty/OpsGenie tích hợp qua AWS) đều khả thi về mặt nền tảng — chưa khả thi về ngân sách (`OQ-005`) | `CON-03`; `00-project-brief.md` mục 5 |
| **Team thi công + vận hành** | Chưa có số thật — dùng giả định tạm "team MVP chuẩn" theo `DEC-02` (🔴); tham khảo duy nhất là đội hình đề xuất của nhà thầu (9 vị trí TB, đỉnh 10, 8 vai trò) | Ranh giới ~10 service trong `SAD.md` §3.1 (mỗi service 3–6 kỹ sư theo mô tả §3.1) **chưa được đối chiếu** với số người thật của team dự án chạy thử này — rủi ro Conway nếu team thật nhỏ hơn nhiều | `CON-05`; `DEC-02`; `SAD.md` §3.1; `OQ-002`, `OQ-008` (còn mở) |
| **Pipeline CI/CD, bảo mật vận hành đề xuất** | `docs/sections/09-van-hanh-kiem-thu.md` đề xuất: OIDC federation (CI ↔ AWS IAM), AWS Secrets Manager cho toàn bộ secret/API key đối tác, CloudWatch Logs + X-Ray/OpenTelemetry, PagerDuty/OpsGenie cho on-call | Tài liệu tự ghi rõ đây là **"đề xuất minh hoạ theo best practice AWS — không phải ràng buộc bắt buộc từ brief"** (brief không chỉ định công cụ cụ thể) — không coi là `CON`, chỉ là năng lực/công cụ tham khảo có sẵn trong thiết kế đề xuất | `docs/sections/09-van-hanh-kiem-thu.md` §9.3, ghi chú cuối |
| **RTO/RPO đề xuất** | Kế thừa từ `SAD.md` §5.3.2, nhắc lại nguyên trạng ở §9.5.2 — tự ghi rõ "là **giả định** đã chốt (brief không có SLA hợp đồng cụ thể)" | Chưa phải ràng buộc cứng đã xác nhận bởi PO/SRE thật — dùng tham khảo cho `INF`/`ARISK` ở các bước sau, không coi là số đã chốt | `SAD.md` §5.3.2, §9.5.2 |
| **Đội vận hành (Ops/SRE) sau go-live** | Chưa xác nhận nội bộ hay thuê ngoài, quy mô bao nhiêu người | Chặn thiết kế on-call/`INF` thật ở GĐ2 | `CON-08`; `OQ-008` (còn mở) |
Không có bằng chứng về năng lực/kinh nghiệm thật của tổ chức với các công nghệ cụ thể (Kafka/MSK,
OpenSearch, Kubernetes/EKS) ngoài việc chúng được đề xuất trong `SAD.md` — đây là khoảng trống
cho `ARISK` (nguồn rủi ro "Con người": *"có ai trong team từng chạy production cái này chưa?"*)
sẽ được lập ở Bước 5 (ngoài phạm vi lượt chạy này).
## 5. Giả định — `ASM-nn`
*Giả định cấp `CTX` (kiến trúc), sinh ra khi rà §3 Ràng buộc. Không copy `ASM-01…06` của BA ở
`RISK_CartCheckout_v1.0.md` §1 — chỉ tham chiếu bằng ID, theo `artifact-map.md §7`. Đánh số
độc lập, bắt đầu từ `ASM-01` cho sổ của `CTX`.*
| ID | Giả định | Cách xác minh | Hệ quả nếu sai | Chủ | Hạn |
|---|---|---|---|---|---|
| `ASM-01` | Con số lao động trong hồ sơ thầu (≈3,76 tỷ VND đã VAT, 53,02 người-tháng) nằm "trong khoảng hợp lý" mà PO có thể chấp nhận — dùng làm điểm neo tạm cho `CON-01`, KHÔNG phải ngân sách đã duyệt | PO/tài chính xác nhận bằng văn bản: ngân sách hạ tầng/tháng đã duyệt + chi phí một lần cho phép | Nếu ngân sách thật thấp hơn nhiều: `OPT` Bước 4 phải loại các phương án kiến trúc nặng (Kafka/MSK, RDS Multi-AZ đầy đủ, OpenSearch cluster đa node đề xuất trong `SAD.md`) và chuyển hướng phương án rẻ hơn ngay từ đầu, tránh thiết kế xong mới phát hiện không đủ tiền vận hành | PO | Trước khi chạy Bước 4 (`OPT`) |
| `ASM-02` | Không có mốc thời gian bên ngoài (hợp đồng/pháp lý/mùa vụ) ép buộc ngày ra mắt — deadline chỉ là "lộ trình MVP tiêu chuẩn" mang tính tham khảo, không phải cam kết cứng | PM/PO xác nhận `projectStartDate`/`projectDeadline` thật (hiện `[[CẦN ĐIỀN]]`/rỗng trong `bid-config.md`) | Nếu có deadline ngắn hơn 7 tháng ép buộc bởi bên ngoài (VD phải kịp mùa sale cụ thể): phải đánh đổi phạm vi MVP hoặc tăng song song hoá đội ngũ (rủi ro tăng chi phí phối hợp, theo chính `30-implementation-plan.md` §B7.5) | PM | Trước khi chạy Bước 4 (`OPT`) |
| `ASM-03` | Đội vận hành sau go-live sẽ là một đội SRE/Ops (nội bộ hoặc thuê ngoài) trực theo ca hành chính + escalation 24/7 — kế thừa giả định "team MVP chuẩn" của `DEC-02` (🔴), CHƯA có số người/kỹ năng thật | PM/SRE xác nhận số người, kỹ năng, ai trực, mô hình on-call cụ thể | Nếu team vận hành thực tế rất nhỏ hoặc chưa tồn tại: ranh giới ~10 service theo `SAD.md` §3.1 có thể vi phạm Conway (đội quá nhỏ để vận hành nhiều service độc lập), phải gộp bớt ranh giới ở `OPT` Bước 4/GĐ2 | PM/SRE | Trước khi chốt ranh giới service ở GĐ2 |
| `ASM-04` | Vùng cloud AWS hiện dùng trong `SAD.md` (ap-southeast-1 + region dự phòng cross-region) đáp ứng đủ yêu cầu residency của NĐ13/2023 cho dữ liệu cá nhân khách hàng + seller — NĐ13/2023 không tuyệt đối bắt buộc lưu trữ trong lãnh thổ VN cho mọi loại PII, nhưng giả định này **chưa được đại diện Pháp chế xác nhận** cho đúng mô hình marketplace hai loại chủ thể của dự án này | Đại diện Pháp chế/Bảo mật (chưa được chỉ định — kế thừa `OQ-003` của BA) xác nhận yêu cầu residency cụ thể | Nếu sai (bắt buộc lưu trong lãnh thổ VN cho một số loại dữ liệu): phải chuyển hạ tầng dữ liệu liên quan về region VN hoặc dùng nhà cung cấp trong nước, ảnh hưởng trực tiếp `CON-03`/`CON-06` và `TCO` | Legal/Security (chưa có người — `OQ-007`) | Trước GĐ2 (`DAT`/`INF`), chậm nhất trước go-live |
| `ASM-05` | Kiến trúc/stack cụ thể mô tả sẵn trong `SAD.md`/hồ sơ thầu (modular "microservices" theo bounded-context ~10 service, Kafka/MSK, RDS PostgreSQL Multi-AZ database-per-service, Redis, OpenSearch, CDN) là **đề xuất của SA/nhà thầu**, có thể dùng làm điểm khởi đầu tham khảo cho Bước 4 (`OPT`) của chính GĐ1 SA này, nhưng KHÔNG coi là đã được khách hàng/PO chốt cứng | Tech Lead + PO xác nhận: chấp nhận `SAD.md` làm baseline cho `OPT`, hay yêu cầu SA dựng phương án độc lập không neo theo tài liệu có sẵn (tránh bẫy "một phương án duy nhất" đã thắng sẵn — xem `GUIDE.md` "Bẫy thường gặp") | Nếu sai (không được neo theo `SAD.md`): Bước 4 phải dựng ≥2 phương án hoàn toàn độc lập, tốn thêm thời gian nhưng giảm rủi ro "chấm điểm để hợp thức hoá lựa chọn đã có" | Tech Lead + PO | Trước khi bắt đầu Bước 4 (`OPT`) |
| `ASM-06` | Quyết định "hoá đơn điện tử cho seller hoãn phase 2" (đã xác nhận vòng 3 brief) vẫn còn hiệu lực tại thời điểm `CTX` này — không có phản hồi trái ngược mới từ PO | PO xác nhận lại nếu có yêu cầu pháp lý mới bắt buộc hoá đơn điện tử sớm hơn (VD thay đổi quy định về hoá đơn điện tử cho sàn TMĐT) | Nếu sai: phải bổ sung `CON` pháp lý mới và mở rộng phạm vi MVP, ảnh hưởng cả `OPT`/`TCO`/lịch trình đã ước lượng trong hồ sơ thầu | PO | Trước khi chốt `OPT` Bước 4 |
Giả định sai mà hệ quả lớn ⇒ nâng thành `ARISK` và xác minh ngay trong GĐ1. `ASM-01`, `ASM-03`,
`ASM-04` có hệ quả đủ lớn (ảnh hưởng trực tiếp phạm vi/kiến trúc) — ứng viên rõ nhất để nâng
thành `ARISK-nn` khi Bước 5 (`ARISK`) chạy ở lượt sau.
## 6. Ngoài phạm vi
*Những thứ người đọc có thể tưởng tài liệu này đã có, nhưng chưa có ở lượt chạy này:*
- Khảo sát hiện trạng **kỹ thuật sâu hơn** cho các đối tác tích hợp (gọi thử sandbox thật, đọc
toàn bộ tài liệu API chi tiết của VNPay/Momo/GHN/GHTK) — §4.2 mới dừng ở mức "biết đối tác nào,
trạng thái sẵn sàng ở đâu" từ tài liệu sẵn có, chưa phải khảo sát kỹ thuật trực tiếp (gọi API
thử, đọc rate limit thật) theo đúng nghĩa `GUIDE.md` Bước 3 "Tích hợp — gọi thử nếu được".
- `OPT` (phương án + chấm điểm), `TCO` (chi phí 3 năm), `ARISK` (rủi ro kiến trúc + POC) —
chưa chạy Bước 4–5. Không thể chạy các bước này một cách có ý nghĩa cho tới khi các `OQ-005`
(ngân sách), `OQ-006` (deadline), `OQ-008` (team vận hành) được trả lời bằng số thật — chấm
điểm phương án chỉ dựa trên ước lượng hồ sơ thầu (`CON-01`, `CON-02`, `CON-05` đều "Chưa xác
định/Mềm") là chấm bừa.
- Driver của các module ngoài Giỏ hàng & Checkout (`DRV-04,05,06,09`) mới ở mức suy từ `SAD.md`,
**chưa** được xác nhận qua một vòng elicitation/BRIEF module hoá riêng như module Giỏ hàng &
Checkout — không nên coi các dòng này có độ tin cậy ngang với `DRV-01,02,03,07,08`.
- Hoá đơn/mức giá cụ thể trong `e-commerce/bid/` (rateCard, VAT, các khoản non-labor còn
`amount: null`) **không phải** là `TCO` của GĐ1 SA — đây là ước lượng dự thầu cho một hợp
đồng, khác mục đích với `TCO` (ước lượng vận hành 3 năm theo phương án kiến trúc đã chọn).
SA sẽ tự tính `TCO` riêng ở Bước 5, có thể tham khảo nhưng không sao chép con số thầu.
- Số liệu cứng/mềm ở `CON-01`, `CON-02`, `CON-05` mới là **đánh giá của SA dựa trên tài liệu
hiện có**, chưa phải xác nhận từ PO/PM/Tech Lead thật — không nên coi các dòng này đã "chốt".
## 7. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì | Hệ quả nếu trả lời ngược |
|---|---|---|---|---|---|
| `OQ-001` | BA chưa ký G1 chính thức cho `BRIEF_CartCheckout` (`OQ-001`/`OQ-007` của BA còn mở: tên thật stakeholder, baseline KPI). Xác nhận: có chấp nhận để `DRV-01,02,03,07,08` giữ Confidence 🔴 và tiếp tục sang Bước 2–5 của GĐ1 SA, hay dừng chờ BA ký G1 thật? | PO sàn (điều phối) + BA | 2026-09-12 | Nâng `Confidence` của toàn bộ `CTX`/`DRV` lên 🟡/🟢; ký AG1 thật (cần PO + Tech Lead, nhưng PO không nên ký trên driver còn 🔴 nếu tránh được) | Nếu PO/BA sau này đổi phát biểu bài toán ở `BRIEF §3` (VD: bỏ yêu cầu guest checkout, hoặc đổi mô hình tách đơn) ⇒ phải viết lại `DRV-01,02` và rà lại mọi `ADR` GĐ2 tham chiếu tới chúng |
| `OQ-002` | Ràng buộc "Con người" (số đội, số người, kỹ năng, ai vận hành sau go-live) hoàn toàn chưa có thông tin — cần thiết để biến định hướng "kiến trúc module hoá độc lập theo nhóm" (NFR-07, §2.1) thành một `DRV`/`CON` có số liệu, thay vì chỉ là câu mô tả chung chung. | PM / Tech Lead | 2026-09-12 | Bước 2 (`CON` nhóm Con người); ranh giới service khả thi (Conway) ở GĐ2 | Nếu team thực tế rất nhỏ (VD 5 người) mà kiến trúc GĐ2 chia 8+ service theo domain (catalog/order/seller/payment/commission/loyalty/notification/CSKH) ⇒ vi phạm Conway, chậm release hơn cả kiến trúc gộp module |
| `OQ-003` | Người dùng (điều phối) đã chọn phạm vi **Toàn sàn** cho GĐ1 SA dù được cảnh báo driver ngoài module Giỏ hàng & Checkout (`DRV-04,05,06,09`) chỉ có nguồn `SAD.md`, chưa qua BRIEF/RISK/STAKEHOLDER module hoá riêng như module Giỏ hàng & Checkout. Xác nhận: giữ nguyên phạm vi toàn sàn cho các bước 2–5 tiếp theo, hay thu hẹp về Giỏ hàng & Checkout để có Confidence cao hơn trước? | PO sàn + Tech Lead | 2026-09-12 | Khối lượng và độ tin cậy của `OPT`/`TCO`/`ARISK` ở các bước kế tiếp | Nếu giữ toàn sàn mà không bổ sung BRIEF module hoá cho Catalog/Seller/Commission/Loyalty, `OPT` GĐ1 SA sẽ phải chấm điểm phương án dựa trên driver suy diễn (không phải driver đã xác nhận) — rủi ro chọn sai phương án kiến trúc cho các module đó, phát hiện muộn ở GĐ2/GĐ3 |
| `OQ-004` | Xác nhận ngoại lệ gate `DEC-01` (SA): chạy GĐ1 SA (Driver) khi BA chưa qua G1 — có đúng là quyết định của người có thẩm quyền điều phối dự án chạy thử, hay cần PO sàn thật xác nhận lại bằng văn bản riêng? | PO sàn (người thật, không phải vai trò) | 2026-09-12 | Tính hợp lệ của toàn bộ `CTX` này khi trình AG1 | Nếu PO thật sau này không công nhận ngoại lệ này, toàn bộ `CTX`/`DRV` phải làm lại sau khi BA ký G1 — chi phí làm lại phần Driver ước < 1 tuần (ít, vì đã có khung sẵn) |
| `OQ-005` | Ngân sách hạ tầng/tháng và chi phí một lần đã duyệt cho dự án là bao nhiêu? Nguồn tham khảo duy nhất hiện có (`e-commerce/bid/estimate.computed.json`) là ước lượng dự thầu, **chưa hợp đồng**: lao động ≈3,76 tỷ VND đã VAT cho 53,02 người-tháng; 8 khoản chi phí không lao động (hạ tầng AWS, OpenSearch, phí VNPay/Momo, phí GHN/GHTK, Email/SMS, domain/SSL/WAF, pentest, đào tạo) đều chưa có số. **Câu trả lời tạm (2026-09-12, ghi tại §4.3):** chưa nhận được xác nhận số thật từ PO trong vòng chạy này — tạm dùng số hồ sơ thầu làm mốc tham khảo duy nhất, `Confidence` 🔴, `OQ-005` **giữ mở**. | PO / tài chính | 2026-09-12 | `CON-01` (cứng/mềm); `TCO` Bước 5; loại bớt phương án ở `OPT` Bước 4 | Nếu ngân sách thật thấp hơn đáng kể so với ước lượng thầu: phải loại các phương án kiến trúc nặng (Kafka/MSK, RDS Multi-AZ đầy đủ, OpenSearch đa node) ngay từ Bước 4, tránh thiết kế xong ở GĐ2 mới phát hiện không đủ tiền vận hành (tháng thứ 13 trở đi) |
| `OQ-006` | Deadline dự án chính thức là ngày nào (nếu có)? Hai con số tham khảo hiện KHÔNG khớp: brief nói "~9-12 tháng" (định tính), hồ sơ thầu tính "7 tháng thực hiện" (teamSize trung bình 9, đỉnh điểm 10 người) + 12 tháng bảo hành — cả hai đều CHƯA được PO xác nhận là mốc thật (`bid-config.projectDeadline` rỗng). **Câu trả lời tạm (2026-09-12, ghi tại §4.3):** chưa nhận được xác nhận mốc thật từ PO trong vòng chạy này — tạm giữ song song cả hai con số tham khảo (7 tháng thầu / 9–12 tháng brief), không chọn một, `Confidence` 🔴, `OQ-006` **giữ mở**. | PO / PM | 2026-09-12 | `CON-02`; kịch bản thời gian ở `OPT` Bước 4 | Nếu deadline thật ngắn hơn 7 tháng (do ràng buộc bên ngoài mới xuất hiện): phải cắt phạm vi MVP hoặc tăng song song hoá đội ngũ — theo chính hồ sơ thầu (§B7.5), đòn bẩy này làm tăng chi phí phối hợp và rủi ro tích hợp, không miễn phí |
| `OQ-007` | Ai là đại diện Pháp chế/Bảo mật xác nhận yêu cầu về nơi lưu trữ dữ liệu (residency) theo NĐ13/2023 cho mô hình marketplace có hai loại chủ thể dữ liệu (khách hàng + seller, gồm cả giấy tờ KYC)? *(kế thừa `OQ-003` của BA — vẫn chưa có người sau khi BA chạy GĐ1)* | PO sàn (chỉ định người) | 2026-09-12 | `CON-06`, `ASM-04`; ranh giới hạ tầng dữ liệu ở `DAT`/`INF` GĐ2 | Nếu về sau phát hiện bắt buộc lưu trữ trong lãnh thổ VN cho một số loại PII: phải chuyển hạ tầng dữ liệu liên quan (hoặc toàn bộ) về region VN/nhà cung cấp trong nước — phát hiện càng muộn (VD sau khi GĐ2 đã chốt `DAT`/`INF` theo `ap-southeast-1`) thì chi phí sửa càng cao, có thể phải viết lại `ADR` hạ tầng |
| `OQ-008` | Đội vận hành (Ops/SRE) sau go-live là nội bộ PO hay thuê ngoài, quy mô bao nhiêu người, có sẵn sàng trực 24/7 cho sự cố nghiêm trọng theo giả định NFR-08 hay chưa? | PM / SRE | 2026-09-12 | `CON-05`, `CON-08`; thiết kế on-call/`INF` ở GĐ2; ranh giới service (Conway) | Nếu chưa có đội ops sẵn sàng khi go-live: phải tính thêm chi phí thuê ngoài/tuyển dụng vào `TCO` Bước 5, và mục tiêu uptime 99.9% (`DRV-05`) có thể không đạt được trong thực tế dù kiến trúc đúng thiết kế |
| ~~`OQ-009`~~ | *(Đã đóng ở v1.2, xem "Open Question đã đóng" ngay dưới)* | — | — | — | — |
### 7.1 Open Question đã đóng *(mới từ v1.2)*
| ID | Câu hỏi | Trả lời | Ngày đóng | Người trả lời | Ghi chú |
|---|---|---|---|---|---|
| `OQ-009` | Có chấp nhận dùng kiến trúc/stack đã đề xuất sẵn trong `SAD.md`/hồ sơ thầu (modular microservices ~10 service, Kafka/MSK, RDS Multi-AZ, OpenSearch, Redis) làm điểm khởi đầu cho Bước 4 (`OPT`) của GĐ1 SA, hay yêu cầu SA dựng phương án hoàn toàn độc lập? | **Chấp nhận** dùng `SAD.md`/hồ sơ thầu làm **điểm khởi đầu tham khảo** cho một phương án ở Bước 4 — với điều kiện bắt buộc: Bước 4 vẫn phải dựng và chấm điểm ≥1 phương án độc lập khác theo đúng `SKILL.md` Bước 4, không mặc định `SAD.md` là phương án thắng sẵn. Xem §4.3, `DEC-04` (SA). | 2026-09-12 | Ghi chú người duyệt (đại diện PO/điều phối dự án) | `Confidence` của quyết định này: 🟡 (rõ ràng về điều kiện áp dụng, nhưng người duyệt là ghi chú điều phối, không phải PO/Tech Lead ký trực tiếp qua `sign`) |
---
## Tự chấm
### ① Bảng tự chấm Gate AG1 *(`workflow.md §2`)*
| # | Tiêu chí | ☐/✅ | Ghi chú |
|---|---|---|---|
| 1 | `CTX` có `DRV-nn`, mỗi driver ghi rõ áp lực kinh doanh | ✅ | 9 `DRV` (`DRV-01…09`), mỗi dòng có áp lực định lượng (nơi có thể), nguồn, thuộc tính chất lượng bị ép. `DRV-04/05` dùng số mô tả định tính "lớn"/"99.9%" đã được chính nguồn (`00-project-brief`) gắn nhãn "giả định mặc định", không phải SA tự bịa |
| 2 | `CTX` có `CON-nn` (ràng buộc 6 nhóm) | ✅ *(với lưu ý)* | Đủ 6 nhóm (`CON-01` Tiền … `CON-09` Tổ chức/Vận hành, xem §3). Nhưng phần lớn giá trị "Cứng/Mềm" ghi "Chưa xác định" vì nguồn chỉ là ước lượng hồ sơ thầu (Draft, chưa hợp đồng) — chưa phải số PO đã duyệt. Đạt tiêu chí "có mặt và đủ 6 nhóm", chưa đạt mức "đã xác nhận thật" |
| 3 | `CTX` mô tả hiện trạng as-is: hệ thống, dữ liệu, tích hợp, hợp đồng vendor đang có | ✅ *(với lưu ý)* | §4 mới bổ sung ở v1.2: (a) khẳng định greenfield + hệ quả, (b) bảng trạng thái 9 đối tác tích hợp (VNPay/Momo/GHN/GHTK/Email-SMS/Ngân hàng/OAuth/hoá đơn điện tử), (c) tài sản thiết kế đã có (`SAD.md`/hồ sơ thầu, có ghi rõ ranh giới thẩm quyền), (d) kỹ năng/tài sản tổ chức. "Hệ thống/dữ liệu đang có" = None (greenfield, đã xác nhận nguồn `PROFILE_e-commerce.md`); "hợp đồng vendor đang có" = None (mọi đối tác đều 🔴/🔴🔴 chưa sandbox/hợp đồng thật) — đạt tiêu chí "mô tả hiện trạng", nội dung chính là "hiện trạng = chưa có gì tự vận hành, có đối tác bên ngoài chưa sẵn sàng" |
| 4 | `OPT` có ≥2 phương án, chấm điểm, nêu phương án bị loại | ☐ | **Chưa tạo file `OPT`** — thuộc Bước 4, ngoài phạm vi lượt chạy này; phụ thuộc `OQ-005`/`OQ-006` trả lời trước (đã có nền: `OQ-009` đóng ở §4.3/§7.1 cho phép dùng `SAD.md` làm điểm khởi đầu tham khảo) |
| 5 | `TCO` có chi phí 3 năm, ≥2 kịch bản tải | ☐ | **Chưa tạo file `TCO`** — thuộc Bước 5, ngoài phạm vi lượt chạy này |
| 6 | `ARISK` có rủi ro cao kèm chủ + biện pháp | ☐ | **Chưa tạo file `ARISK`** — thuộc Bước 5, ngoài phạm vi lượt chạy này. §4.2/§4.4 đã nêu sẵn một số ứng viên rủi ro (đối tác chưa sandbox, năng lực team chưa xác nhận với Kafka/MSK/OpenSearch/EKS) để Bước 5 kế thừa |
| 7 | Rủi ro cao chưa chứng minh được có kế hoạch POC | ☐ | Phụ thuộc `ARISK`, chưa làm |
**Kết luận tự chấm AG1:** **Chưa đủ điều kiện ký** — đúng như phạm vi được giao (Driver +
Ràng buộc + Hiện trạng). 3/7 tiêu chí ✅. Cần chạy tiếp Bước 4–5 (`OPT`, `TCO`, `ARISK`) trước
khi PO + Tech Lead có thể ký AG1, và cần `OQ-005`/`OQ-006`/`OQ-007`/`OQ-008` được trả
lời bằng số/người thật trước khi Bước 4–5 có ý nghĩa (`OQ-009` đã đóng). Ngoài ra, ngay cả `DRV` và `CON` đang ở
`Confidence 🔴` vì lý do preflight (BA chưa ký G1) và vì `CON` dựa trên ước lượng hồ sơ thầu
chưa xác nhận — nên **không đủ điều kiện baseline `CTX`** dù đã điền đủ nội dung của mục Driver,
Ràng buộc và Hiện trạng.
### ② Checklist D1–D12 *(`design-rules.md`)*
| # | Mục | ☐/✅ | Ghi chú |
|---|---|---|---|
| D1 | Một ADR một quyết định | N/A | Tài liệu này không có `ADR` |
| D2 | Không NFR định tính; đủ 4 câu | 🟡 Một phần | Driver không phải `QAS` nên không bắt buộc đủ "4 câu", nhưng đã cố định lượng tối đa có thể (DRV-01,02,03,04,06,07,08 có con số/nguồn cụ thể); `DRV-05,09` còn dùng mô tả định tính do chính nguồn brief chỉ ghi ở mức đó — đã gắn nhãn rõ "giả định mặc định", không che giấu |
| D3 | Nêu phương án bị loại | N/A | `OPT` (nơi bắt buộc nêu phương án loại) chưa chạy ở lượt này; `CON-05` đã ghi rõ số liệu team hồ sơ thầu KHÔNG được coi là phương án đã chọn |
| D4 | Sơ đồ khai báo mức + legend | N/A | Không có sơ đồ mới thêm ở §3/§5 |
| D5 | Interface có chủ/contract | N/A | Chưa tới `ICD` (GĐ2); `CON-04`/§4.2 đã nêu đối tác tích hợp bắt buộc và trạng thái sẵn sàng nhưng chưa có contract thật |
| D6 | Phụ thuộc ngoài process có timeout/retry | N/A | Chưa tới `FAIL`/`SAD` (GĐ2); §4.2 kế thừa nguyên trạng timeout/retry **đề xuất** từ `SAD.md` §3.4 (VNPay/Momo 10s, GHN/GHTK 8s, Email/SMS 5s) — ghi rõ là đề xuất chưa kiểm chứng với sandbox thật, không phải ràng buộc SA tự đặt mới |
| D7 | Một chủ sở hữu dữ liệu | N/A | Chưa tới `DAT` (GĐ2) |
| D8 | Ràng buộc có FIT hoặc nhãn khuyến nghị | N/A | Chưa tới `AGD`/`FIT` (GĐ3) |
| D9 | Con số hạ tầng quy ra tiền + nguồn | 🟡 Một phần | `CON-01` có trích dẫn con số (≈3,76 tỷ VND đã VAT) kèm nguồn (`estimate.computed.json`), nhưng đây là số của hồ sơ thầu (nhân công + VAT), KHÔNG phải con số hạ tầng quy đổi kiến trúc — `TCO`/`INF` thật (nơi D9 áp dụng đầy đủ) chưa chạy. §4.3/§4.4 không thêm số hạ tầng mới, chỉ dẫn nguồn cho các bước sau |
| D10 | Không quyết định thay người có thẩm quyền | ✅ | Mọi chỗ chưa rõ (ngân sách, deadline, đội vận hành, residency pháp lý) đều ghi `OQ-005…008` kèm hệ quả phương án ngược bằng số/định tính rõ ràng, không tự quyết. `OQ-009` đã đóng nhưng bằng **ghi chú điều phối** (không phải PO/Tech Lead ký trực tiếp) — ghi rõ mức độ thẩm quyền thật ở §7.1, không che giấu. Riêng việc gán "Cứng/Mềm" cho từng `CON` và trạng thái 🔴/🔴🔴/🟡/🟢/⏸️ cho từng đối tác ở §4.2 là đánh giá kỹ thuật của SA dựa trên nguồn hiện có, không phải quyết định thay PO |
| D11 | Có mục "Ngoài phạm vi" + `ASM-nn` | ✅ | §6 "Ngoài phạm vi" đầy đủ (đã cập nhật: as-is kỹ thuật sâu hơn — gọi sandbox thật — vẫn ngoài phạm vi); §5 có `ASM-01`…`ASM-06` cấp `CTX`, mỗi cái có cách xác minh, hệ quả, chủ, hạn (không sửa ở lượt này) |
| D12 | Câu quy định thẩm quyền sơ đồ vs văn bản | ✅ | Có câu chuẩn ngay sau Change Log |
### ③ Danh sách `OQ` mở kèm người phải trả lời, chặn gì
Xem bảng đầy đủ ở §7. Tóm tắt tám câu hỏi đang chặn (`OQ-009` đã đóng, xem §7.1): **(1)** `OQ-001`
chặn nâng `Confidence` của toàn `CTX` — hỏi PO sàn + BA; **(2)** `OQ-002` chặn số liệu team thật
ở `CON-05` — hỏi PM/Tech Lead; **(3)** `OQ-003` chặn quyết định giữ/thu hẹp phạm vi toàn sàn —
hỏi PO + Tech Lead; **(4)** `OQ-004` chặn tính hợp lệ của ngoại lệ gate `DEC-01` — hỏi PO sàn
(người thật); **(5)** `OQ-005` chặn `CON-01`/`TCO` — hỏi PO/tài chính (có câu trả lời tạm, xem
§7); **(6)** `OQ-006` chặn `CON-02`/kịch bản thời gian ở `OPT` — hỏi PO/PM (có câu trả lời tạm);
**(7)** `OQ-007` chặn `CON-06`/`ASM-04` (residency pháp lý) — hỏi PO (chỉ định người); **(8)**
`OQ-008` chặn `CON-05`/`CON-08` (đội vận hành) — hỏi PM/SRE.
**Nhắc:** AG1 cần **PO + Tech Lead ký** (điền `Approved by` vào header `OPT`) trước khi chạy
`/sa-2-architecture`. `OPT` chưa tồn tại — phải chạy tiếp Bước 4–5 của `sa-1-context` trước, và
nên có `OQ-005/006/007/008` trả lời trước để Bước 4–5 không phải chấm bừa.