Gộp toàn bộ tài liệu yêu cầu & nghiệm thu thành một trang duy nhất để in/lưu PDF (Chrome: In → Lưu dưới dạng PDF).
Mỗi trang tài liệu bắt đầu một trang PDF mới. Cửa sổ in mở ra — chọn "Lưu dưới dạng PDF" và bật tùy chọn "Đồ họa nền" để giữ màu thẻ/nhãn.
Tổng quan dự án
TODO — mô tả ngắn về dự án BAGA: định vị, phạm vi tổng và luồng nghiệp vụ cốt lõi (điền khi client input có).
TODO (client input): các mục dưới đây là khung gợi ý sẵn có — điền nội dung thật từ SOURCE-REQUIREMENTS.md rồi xóa các blockquote TODO này.
1. Định vị
TODO: định vị dự án — BAGA là gì, phục vụ ai, mô hình vận hành.
2. Kênh và phạm vi
TODO: bảng kênh/nền tảng trong phạm vi hiện hành (storefront web, CMS, BI platform…) và phần ngoài phạm vi.
Kênh/khối
Phạm vi hiện hành
Storefront (bagaofficial.com)
TODO
CMS nội dung (baga-cms)
TODO
BI platform (baga.bi.runlumi.app)
TODO
…
TODO
Mã
Nội dung đã xác định
B-00
[VÍ DỤ] Một phát biểu sự thật nền tảng về dự án, đủ ngắn để đứng một mình và đủ rõ để các register khác tham chiếu.
3. Luồng khách cốt lõi
TODO: tóm tắt end-to-end flow chính (browse → cart → checkout → …) ở mức tổng quan; chi tiết từng bước nằm ở Hành trình nghiệp vụ.
4. Quy tắc vận hành quan trọng
TODO: 4–8 điểm behavior quan trọng nhất mà mọi người phải nhớ (mỗi điểm 1–2 câu, chi tiết trỏ về FR/BR tương ứng).
5. Thuật ngữ chung
Thuật ngữ
Định nghĩa và trạng thái
[VÍ DỤ] Thuật ngữ
Định nghĩa dùng thống nhất trong toàn bộ tài liệu. D-00
Quản lý dự án
Bảng điều hành dự án BAGA: release roadmap, kế hoạch công việc, người phụ trách, hạn chót, trạng thái, tiến độ, rủi ro và nhịp báo cáo.
Trang này là bảng điều hành dự án. Requirement nằm ở FR/NFR/BR/AC; trang này chuyển requirement đã freeze thành kế hoạch thực thi, hạn chót, người phụ trách, release, tiến độ và báo cáo.
TODO (client input): điền data/project.yaml (releases, reporting, workstreams, tasks, risks) và cập nhật trạng thái thực tế ở data/project-progress.yaml. Hai file này tách biệt để không mất lịch sử kế hoạch.
Xem nhanh:Dự án trên 1 trang — bản cô đọng để theo dõi hằng ngày, họp nhanh hoặc in A4 ngang.
Lọc trực tiếp kế hoạch công việc.
TODO — chốt khi client input
Ngày bắt đầu
09/10/2026
V1 target · 17 ngày làm việc
06/11/2026
V3 final go-live
0/0
Task hoàn tất
0
Đang thực hiện
0
Bug/Rework
Planning baseline: Điền planning note khi roadmap được chốt với client.
Live progress · 26/09/2026: Overlay tiến độ thực tế sẽ được điền sau khi project.yaml có task thật. Trước đó không ghi trạng thái giả.
1. Release roadmap
Mốc
Mục tiêu
Bắt đầu
Target
Ngày làm việc
Cam kết
Status
Exit criteria
2. Work plan
Mỗi task có một owner chính, deadline, status, progress, dependency, requirement reference và note. Baseline nằm ở project.yaml; live execution update nằm ở project-progress.yaml để giữ lịch sử kế hoạch ban đầu. Khi đổi deadline, giữ deadline cũ trong note để lịch sử báo cáo khách hàng không bị mất.
ID
Release
Workstream
Công việc
Phụ trách
Start
Deadline
Status
Progress
Issue
Dependency
Refs
Note
3. Nhịp báo cáo
Cadence
Owner
Nội dung
4. Risk register
ID
Risk
Impact
Owner
Mitigation
Status
5. Mẫu báo cáo khách hàng
1. Trạng thái tổng thể: Xanh / Vàng / Đỏ và lý do
2. Tiến độ: Hoàn tất / Tổng số, theo release
3. Đã hoàn tất từ báo cáo trước
4. Đang thực hiện
5. Kế hoạch kỳ tiếp theo
6. Điểm chặn / quá hạn / rủi ro và người phụ trách
7. Thay đổi phạm vi/change request mới
8. Mục tiêu phát hành và độ tin cậy
9. Link demo/bằng chứng
6. Quy ước status
Status
Ý nghĩa
To do
Chưa bắt đầu hoặc chưa có bằng chứng implementation.
Doing
Đang triển khai; chưa đủ điều kiện gửi QA/PM phê duyệt.
Ready for test
Implementation đã có bằng chứng; đang chờ QA/PM kiểm tra và phê duyệt.
Bug/Rework
Đã qua kiểm tra/gate nhưng chưa đạt; quay lại sửa rồi gửi kiểm tra lại.
Done
Đã đạt tiêu chí chấp nhận, có bằng chứng và được người có thẩm quyền phê duyệt.
Cách cập nhật hằng ngày
Project management tách baseline và live execution để không làm mất lịch sử kế hoạch:
packages/biz-docs/data/project.yaml: kế hoạch baseline, người phụ trách theo role, start/hạn chót, dependency và note gốc;
packages/biz-docs/data/project-progress.yaml: trạng thái thực tế, % tiến độ, ngày bắt đầu/cập nhật thực tế, ghi chú trực tiếp và bằng chứng.
Khi task bắt đầu hoặc có thay đổi thực tế, ưu tiên cập nhật project-progress.yaml. Nếu đổi hạn chót/baseline chính thức, cập nhật project.yaml đồng thời ghi hạn chót cũ + lý do trong note để báo cáo có lịch sử rõ ràng.
Trạng thái mỗi công việc đi theo một luồng duy nhất: To do → Doing → Ready for test → Done. Nếu QA/PM kiểm tra chưa đạt, công việc chuyển sang Bug/Rework, sửa xong phải quay lại Ready for test để kiểm tra lại. Done chỉ được dùng khi đã đạt tiêu chí chấp nhận, có bằng chứng và được người có thẩm quyền phê duyệt. Điểm chặn được ghi riêng trong note/risk, không dùng để bỏ qua bước kiểm tra.
Blocker quá một ngày làm việc phải được báo chặn ngay, không chờ báo cáo tuần.
Định nghĩa hoàn tất (Definition of Done) chung
Một task chỉ được coi là Done khi output đã merge/available ở môi trường phù hợp, acceptance/negative path cần thiết đã test, không làm yếu gate bảo mật/data-integrity, có bằng chứng đủ để người khác kiểm tra lại và QA/PM hoặc người duyệt được chỉ định đã phê duyệt. Với release, cần thêm bản ghi phát hành, lỗi đã biết, demo/UAT bằng chứng và trạng thái báo cáo khách hàng.
Dự án trên 1 trang
Bảng điều hành BAGA cô đọng trên một trang: mốc phát hành, tiến độ, công việc trọng tâm, rủi ro và nhịp điều hành.
Luồng nghiệp vụ chính từng bước kèm kết quả quan sát được, và các negative path bắt buộc phải chặn đúng chỗ.
TODO (client input): điền data/journey.yaml (các bước luồng chính) và data/exceptions.yaml (negative paths). Khung hiển thị bên dưới tự sinh từ register.
1. Luồng chính
Bước
Hành động
Kết quả cần có
1. [VÍ DỤ] Bước đầu tiên của hành trình
Hành động của khách/hệ thống ở bước này. Thay bằng luồng nghiệp vụ thật.
Kết quả quan sát được khi bước hoàn tất.
Ghi chú: các bước bị defer hoặc ngoại lệ (không bắt buộc).
2. Các tình huống ngoại lệ
Negative/error paths là phần của spec, không phải việc xử lý sau. Các tình huống dưới đây phải chứng minh hệ thống dừng/route đúng chỗ thay vì bypass identity, payment, approval hoặc audit gates:
Hệ thống phải phản ứng thế nào: chặn, route về đâu, ai xử lý, ghi audit gì.
3. Nguyên tắc khi gặp case chưa có dữ liệu thật
Nếu thiếu dữ liệu/config thật (deployment input), dùng fixture/mock để build/test nhưng không thay behavior đã freeze. Nếu case mới làm thay đổi business rule hoặc thuộc non-goals, tạo change request/version mới.
Phạm vi P0 và lộ trình mở rộng
Ranh giới phát hành hiện hành: trong scope, non-goals và các extension point bắt buộc giữ mở.
TODO (client input): điền 3 danh sách dưới đây và register data/features.yaml. Feature nằm ngoài cột P0 chỉ quay lại bằng change request/version mới.
Ranh giới P0
Trong P0:
TODO: capability 1
TODO: capability 2
Ngoài P0 / chỉ quay lại bằng change request:
TODO: non-goal 1
TODO: non-goal 2
Kiến trúc phải giữ đường mở:
TODO: extension point bắt buộc (đọc thêm infra/docs/ARCHITECTURE.md của repo để khớp topology hiện hành).
Nhóm
P0 — Phạm vi ban đầu
P1/P2 — Mở rộng
Ví dụ — nhóm tính năng
Phạm vi P0 của nhóm này, mô tả đủ để QA làm acceptance.
Phần bị defer — chỉ quay lại bằng change request.
Ghi chú chung về nguyên tắc scope (ví dụ: feature ngoài cột P0 không tự quay lại).
Không còn câu hỏi business chặn development
data/decisions.yaml là baseline hiện hành. Giá trị thật cần nhập trước pilot/release (catalog, giá, VAT, credentials…) là deployment data/config, không phải câu hỏi thiết kế phải quay lại hỏi client.
Nếu phát sinh yêu cầu khác behavior đã freeze, tạo change request/version mới thay vì tự mở rộng phạm vi.
Yêu cầu chức năng (FR)
Danh sách yêu cầu chức năng implementation-ready của BAGA, nhóm theo khu vực nghiệp vụ, kèm tiêu chí nghiệm thu và gợi ý kiểm thử.
FR là functional baseline của dự án. dec trỏ tới decision register để truy vết rationale/policy; status Cần chốt nghĩa là yêu cầu chưa đủ rõ để code — phải chốt decision trước khi đưa vào sprint.
Trạng thái thường gặp (đặt tên thống nhất khi nhập liệu):
Cần chốt: chưa đủ chi tiết để code/nghiệm thu — đang chờ decision.
Baseline: đã khóa, có đủ truy vết (AC + decision).
Deferred: ngoài phạm vi hiện hành, chỉ quay lại qua change request/version mới.
Nhóm FR được khai trong data/fr.yaml (groups[]); mỗi FR nên có ít nhất một AC phủ và các decision liên quan.
State machines theo từng trục nghiệp vụ và business rules (BR) — invariant triển khai enforce phía server.
1. Các trục trạng thái
Mỗi thực thể có vòng đời riêng nên tách state machine theo trục (account, cart, order, payment, shipment, content, …) thay vì một cột status cố gánh mọi sự kiện. Register: data/states.yaml.
Trục
Các trạng thái chính
Ví dụ trục — thay bằng trục trạng thái thật
State A → State B → State C; nhánh Exception / Cancelled. Ghi rõ điều kiện chuyển bước nhạy cảm (ai được chuyển, khi nào).
Ghi chú chung về state machine (ví dụ: chuyển state bằng API/server rule và audit ở action nhạy cảm).
Các transition nhạy cảm phải fail-closed:
chuyển state bằng API/server rule, không dựa vào ẩn nút UI;
action nhạy cảm phải audit actor/time/action/target/reason;
state không được tự sinh từ hệ thống ngoài khi chưa có integration được chốt.
2. Business rules (BR)
Các rule dưới đây là invariant triển khai, không phải gợi ý UI. Register: data/br.yaml.
Quy tắc
Điều kiện chuyển bước
BR-00 — [VÍ DỤ] Thay bằng business rule thật
Invariant triển khai: điều kiện phải đúng trên mọi đường thực thi, enforce phía server/API, không phụ thuộc ẩn nút UI.
3. Negative-path bắt buộc
TODO: negative path 1
TODO: negative path 2
Yêu cầu phi chức năng (NFR)
Baseline phi chức năng: kiến trúc, bảo mật/RBAC/audit, độ tin cậy, idempotency và quyền sở hữu tài sản.
NFR chia làm hai loại khi nhập liệu (data/nfr.yaml):
NFR nghiệp vụ đã chốt: product/runtime boundaries, security baseline, data/reliability baseline — status “Baseline” sau khi decision liên quan đã chốt.
Technical baseline: performance/monitoring/backup thresholds do team đặt/test theo dataset thực tế và lưu runbook/bằng chứng; không cần client chốt formal SLA/RPO/RTO để bắt đầu build.
Ranh giới phải giữ khi implementation và security review:
Không auto purge dữ liệu business — soft-delete mặc định, hard purge là action riêng có confirmation/audit (nếu client chốt policy như vậy).
Secrets never enter git, HTML, client bundles, logs or analytics (invariant AGENTS.md).
Deployment inputs (credentials thật) phải seed trước pilot/release, nhưng không thay behavior nghiệp vụ.
NFR là baseline kỹ thuật thực thi, không phải câu hỏi business mở.
NFR baseline của dự án. Ngưỡng thuần kỹ thuật (performance, monitoring, backup) do team đặt/test và lưu runbook; behavior nghiệp vụ thì phải qua decision.
Cách verify: architecture review, đo lường, drill…
Nghiệm thu & kiểm thử
Kịch bản nghiệm thu (AC) theo baseline hiện hành, vai trò trách nhiệm và readiness checklist trước release.
1. Nguyên tắc nghiệm thu
Mỗi mốc pass bằng bằng chứng bám FR/NFR/AC hiện hành. Không dùng wording cũ đã defer hoặc non-goal làm điểm chặn. Decision còn status “Mở” là điểm chặn nghiệm thu của AC liên quan.
Vai trò
Trách nhiệm
Chủ thương hiệu / Product
Duyệt phạm vi/change request và nghiệm thu business behavior
Tech lead / đơn vị phát triển
Implementation, architecture/schema, test bằng chứng, technical baseline, runbook
QA
Chạy AC + FR/NFR tests, negative/error paths và lưu bằng chứng
Vận hành
Xác nhận workflow vận hành thủ công (nếu có)
2. Kịch bản nghiệm thu (AC)
Register: data/ac.yaml. Mỗi AC gồm scenario, expected behavior đầy đủ (gồm negative paths) và các bước kiểm thử có thể lặp lại.
AC bao phủ end-to-end và negative/error paths.
AC là acceptance baseline của dự án. Chưa AC nào được coi là đã chốt khi còn phụ thuộc decision D-xx đang Mở.
AC-00 — [VÍ DỤ] Kịch bản nghiệm thu end-to-end
Đề xuất
Kịch bản: Tình huống kiểm thử: ai, làm gì, trên thiết bị/môi trường nào.
Kết quả đạt
Behavior mong muốn đầy đủ, gồm cả nhánh negative.
Thủ tục kiểm thử (đề xuất)
Bước kiểm thử 1.
Bước kiểm thử 2 (gồm negative path).
Kết quả chạy: ☐ Đạt · ☐ Không đạt — Người kiểm: ________ Ngày: ________ Bằng chứng (link/ảnh): ________
3. Readiness checklist trước release
TODO: mọi AC đã pass có bằng chứng.
TODO: permission matrix + audit test pass.
TODO: backup/restore drill có bằng chứng.
TODO: deployment inputs (config/credentials) đã seed cho môi trường release.
4. Deployment inputs không phải điểm chặn code
Thiếu giá trị thật (config/credentials/dữ liệu seed) có thể chặn release tương ứng, nhưng không phải lý do thay đổi domain behavior hay quay lại hỏi lại spec.
Đo lường vận hành
Chỉ số vận hành cần theo dõi sau release và golden datasets cần chuẩn bị cho kiểm thử.
1. Chỉ số baseline
Register: data/metrics.yaml. Mỗi metric phải có nguồn dữ liệu, window/timezone và cách xử lý retry/refund/adjustment — không biến thiếu dữ liệu manual thành dữ liệu tự động giả.
Chỉ số
Định nghĩa đề xuất
[VÍ DỤ] Tên chỉ số
Định nghĩa: nguồn dữ liệu, window/timezone, cách đếm retry/refund/adjustment.
2. Golden datasets cần chuẩn bị
TODO: dataset 1 (phủ case gì, bao nhiêu case, ai duyệt).
TODO: dataset 2.
3. Không dùng deferred/non-goal metric làm điểm chặn
Không yêu cầu metric cho integration/phạm vi đã defer làm điều kiện nghiệm thu của release hiện hành.
Quyền & phân quyền
Permission matrix của dự án; authorization enforce tại API/server, không dựa vào ẩn nút UI.
1. Nguyên tắc
Matrix này là implementation baseline. Các invariant mặc định (điều chỉnh theo client input):
Authorization kiểm tại API/server, không dựa vào việc ẩn nút UI.
Vai trò gate (duyệt/phê duyệt) chỉ do role được gán thực hiện; admin quản lý assignment nhưng không tự có quyền gate nếu chưa được gán.
Action nhạy cảm phải audit actor/time/action/mục tiêu/reason và before-after khi phù hợp.
Guest (chưa xác thực) là trạng thái, không phải role.
Thay đổi matrix sau khi freeze phải version và regression-test RBAC.
2. Ký hiệu
Own: chỉ dữ liệu của account.
R: read.
RW: read/write theo state rule.
A: approval/gate action.
Admin: quản trị cấu hình/quyền.
Request: gửi yêu cầu, không tự thực thi.
—: không có quyền mặc định.
3. Permission matrix
Tài nguyên / hành động
Vai trò 1
Vai trò 2
Vai trò 3
…
TODO: tài nguyên 1
Own RW
R
—
TODO: tài nguyên 2
R
A
RW
Decision register
Các quyết định nghiệp vụ đã chốt và còn mở của dự án — source of truth cho behavior đã khóa.
Decision register này là source of truth cho behavior đã khóa (data/decisions.yaml). Sau khi chốt, team implement mà không quay lại hỏi; thay đổi behavior đã khóa phải qua change request/version mới.
Quy ước ID
Mỗi decision một mã D-xx duy nhất; không tái sử dụng mã đã bỏ — giữ ID lịch sử để bảo toàn truy vết.
Status: Mở (đang chờ — điểm chặn nghiệm thu của yêu cầu liên quan), Đã chốt (baseline hiện hành), Deferred (cố ý hoãn).
Giá trị cấu hình thật (dữ liệu, giá, VAT, credentials…) là deployment data, không phải decision — không tạo decision card cho chúng.
Nguyên tắc khi code
Không hỏi lại client về behavior đã có trong decision register (status Đã chốt).
Nếu thiếu deployment value, dùng fixture/config default để build và để client nhập dữ liệu thật trước release.
Nếu chi tiết thuần kỹ thuật không đổi behavior nghiệp vụ, tech lead được chọn phương án an toàn, đơn giản, testable và ghi trong ADR/runbook khi cần.
Nếu yêu cầu mới mâu thuẫn freeze hoặc thuộc non-goals, tạo change request/version mới.
Mọi decision hiện hành phải rõ trạng thái Mở/Đã chốt.
Decision register của dự án. Mục status 'Mở' là điểm chặn nghiệm thu; 'Đã chốt' là baseline hiện hành. Giá trị cấu hình thật (catalog, giá, VAT…) là deployment data, không phải decision.
D-00 — [VÍ DỤ] Tên quyết định
Mở
Đã ghi nhận: Nội dung quyết định cụ thể, đủ tường minh để code/test mà không hỏi lại.
Cần trả lời: Câu hỏi nghiệp vụ mà decision này trả lời.
Vai trò chốt: Người quyết định (client / product owner / tech lead…) · Thời điểm: Ngày chốt — hoặc 'Chưa chốt' nếu đang Mở.
Mỗi quyết định được chốt cần ghi ngày, người quyết định, nội dung, lý do, yêu cầu bị ảnh hưởng và phiên bản chính sách. Thay đổi sau đó cần đánh giá ảnh hưởng đến đơn đang xử lý trước khi áp dụng.
Ma trận truy vết
Bảng đối chiếu kịch bản nghiệm thu với yêu cầu chức năng phủ nó, và mỗi quyết định D-xx với các yêu cầu bị ảnh hưởng.
Dùng trang này để kiểm tra độ phủ: không có kịch bản nghiệm thu nào thiếu yêu cầu bảo trợ, và mỗi quyết định chốt phải được đánh giá tác động tới đúng tập yêu cầu liệt kê.
Ma trận sinh tự động từ register data/ (trường ac/dec/impacts) — không sửa bảng generated bằng tay; sửa register gốc.
Phủ nghiệm thu: 1/1 FR được gắn với ít nhất một kịch bản AC. Các FR còn lại (nếu có) được kiểm qua kịch bản tổng hợp AC-01 hoặc kiểm thử riêng theo gợi ý ở từng thẻ FR.
Phụ thuộc và deployment inputs
Dependency nghiệp vụ và kỹ thuật, deployment inputs cần seed trước release, và fallback behavior khi thiếu.
Phụ thuộc
Cần thống nhất
Phương án khi gián đoạn
Ví dụ — dependency
Cần gì, để làm gì, ai cung cấp. Credential/config thật là deployment input, không phải business decision.
Khi thiếu/thất bại: hệ thống chạy thế nào, gì bị chặn, gì KHÔNG bị giả lập thành thành công.
Ghi chú chung về phân loại dependency (runtime integration / manual tool / deployment config / technical baseline).
Phân loại dependency
Runtime integrations: dịch vụ ngoài đang được chốt (ví dụ email delivery, thanh toán nếu có). Provider cụ thể là technical/deployment choice; failure behavior phải được chốt trong decision.
External tool dùng thủ công: tool chạy ngoài hệ thống; hệ thống chỉ lưu dữ liệu nhập tay, không gọi API ngầm.
Technical baseline: monitoring, backup/restore, performance — tech team tự đặt threshold thực dụng và lưu runbook/bằng chứng.
Khi thiếu deployment input thật, team dùng fixture/mock/config placeholder an toàn và giữ publish/release gate phù hợp — không giả lập thành công trong môi trường thật.
Ranh giới kiến trúc hiện hành của repo
Topology, rendering tiers, cache và data flow hiện hành là authority của infra/docs/ARCHITECTURE.md (prod) và infra/docs/ARCHITECTURE_LOCAL.md (local); dependency thay đổi topology phải cập nhật hai tài liệu đó theo quy tắc docs-mandatory trong AGENTS.md — trang này chỉ liệt kê dependency nghiệp vụ.
Thư viện màn hình
Visual reference mobile và desktop cho các màn hình chính của BAGA, đặt cạnh prompt gốc của từng screen.
Thư viện này dùng để trao đổi nhanh giữa product, design và engineering. Mỗi trang hiển thị hai phiên bản của cùng một screen; prompt gốc trong screens/<folder>/ vẫn là nguồn tham chiếu để triển khai và kiểm tra lại.
Mobile: tham chiếu web responsive dưới 768px (breakpoint đầu tiên của storefront), vùng chạm và hành trình một tay.
Desktop: tham chiếu web responsive, shell, density và hierarchy (breakpoint 1068px).
Behavior: không suy diễn từ hình ảnh; frozen requirements, server state và acceptance criteria vẫn là nguồn quyết định.
TODO (client input / capture): tạo thư mục screens/<tên-screen>/ với desktop.png, mobile.png, desktop-visual-prompt.md, mobile-visual-prompt.md — xem screens/README.md để biết contract đầy đủ. Trang screen tự xuất hiện trong thư viện khi thư mục có content front matter folder.
Tài liệu nguồn
Các tài liệu tham chiếu dùng trong dự án (đặt file tại static/reference/ để được serve kèm site).
Trang này tập hợp các tài liệu nguồn dùng để tham chiếu trong quá trình triển khai. Chúng bổ sung ngữ cảnh cho team và không thay thế source of truth về requirement, decision và acceptance trong các trang còn lại.
TODO (client input): đặt tài liệu thật vào packages/biz-docs/static/reference/ rồi thêm mục dưới đây với link tương đối ../reference/<file>. Link tương đối để file được serve kèm site..
TODO: Tên tài liệu 1
Mở hoặc tải tài liệu — mô tả ngắn: tài liệu gồm gì, dùng khi nào, phiên bản/ngày.