Files
sys-analysis-design/.claude/skills/ba-lifecycle/references/domain-profiles.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

11 KiB
Raw Blame History

Project Profile — ba trục quyết định cách chạy pipeline

Bộ skill này không phụ thuộc ngành nghiệp vụ (bán lẻ, y tế, logistics, ngân hàng, HR… đều dùng chung khung). Nhưng nó phụ thuộc ba thứ khác, và ba thứ đó phải được khai báo ngay ở Bước 0 của mọi skill:

PROFILE = PRODUCT × LIFECYCLE × RIGOR

Khai sai profile ⇒ skill đòi bạn điền những mục không tồn tại trong loại sản phẩm của bạn, hoặc bỏ qua những mục sống còn. Đây là thứ quyết định mọi guideline phía sau.


0. Cách khai báo

Lần đầu chạy một project, ba-lifecycle tạo 00-index/PROFILE_<PROJECT>.md:

# PROFILE — <PROJECT>

| | |
|---|---|
| **PRODUCT** | screen |
| **LIFECYCLE** | brownfield |
| **RIGOR** | standard |
| **Ngành** | Bán lẻ / đối soát doanh thu |
| **Người chốt profile** | <PO/BA Lead>, ngày… |
| **Lý do chọn** | … |

## Hệ quả đã áp dụng
| Quyết định | Vì trục nào |
|---|---|
| Dùng biến thể SRS PART 2 = `screen` | PRODUCT |
| Bắt buộc AS-IS đầy đủ + phân tích dữ liệu cũ | LIFECYCLE |
| Gate ký bởi PO + Tech Lead + QA | RIGOR |

Mọi artifact khác thêm một dòng vào header: | **Profile** | screen · brownfield · standard |

Đổi profile giữa chừng phải ghi DEC-nn và nêu artifact nào phải viết lại.


1. Trục PRODUCT — loại sản phẩm

Trục quan trọng nhất. Nó quyết định GĐ3 viết cái gì.

Giá trị Sản phẩm là gì Biến thể SRS PART 2
screen Có giao diện người dùng — web admin, web app, app di động srs-part2/screen.md
api-service Chỉ API/service, không giao diện; người tiêu thụ là hệ thống khác srs-part2/api-service.md
data-pipeline Sản phẩm là dữ liệu — ETL, ingest, kho dữ liệu, báo cáo BI srs-part2/data-pipeline.md
ml-model Sản phẩm là mô hình dự đoán — phân loại, xếp hạng, dự báo, sinh nội dung srs-part2/ml-model.md
batch-job Job chạy theo lịch, không giao diện — đối soát đêm, sinh báo cáo, dọn dữ liệu srs-part2/batch-job.md
process-only Không phải phần mềm — cải tiến quy trình, đổi cách làm việc Không có PART 2

Hệ quả theo từng giai đoạn

screen api-service data-pipeline ml-model batch-job process-only
GĐ1 Discovery Đủ Đủ; "người dùng" là team tiêu thụ API Đủ; hỏi thêm về nguồn dữ liệu Đủ; bắt buộc hỏi chi phí của dự đoán sai Đủ Đủ
GĐ2 PROCESS Đủ Đủ Đủ Đủ Đủ Đủ — trọng tâm
GĐ2 RBAC Đủ Theo client/scope thay vì vai trò người Theo tập dữ liệu + độ nhạy cảm Ai được xem điểm số/lý do Ai được chạy tay Đủ
GĐ3 PART 2 Màn hình, field Endpoint, schema Luồng dữ liệu, data contract Bài toán, metric, ngưỡng Job, lịch, chạy lại ❌ N/A
GĐ3 AC 4 nhóm đầy đủ 4 nhóm đầy đủ 4 nhóm + đối soát nguồn–đích 🔴 Chỉ áp cho hệ thống bao quanh; phần dự đoán dùng ngưỡng metric 4 nhóm + chạy lại Tiêu chí quy trình
GĐ3 text hiển thị Bắt buộc N/A N/A Chỉ phần hiển thị cho người N/A N/A
GĐ4 UAT Người dùng thao tác Team tiêu thụ tích hợp thử Đối soát số liệu song song 🔴 Đánh giá trên tập giữ lại + shadow mode Chạy song song với cách cũ Chạy thử quy trình
GĐ5 MANUAL Cho người dùng cuối Tài liệu tích hợp cho dev Từ điển dữ liệu + hướng dẫn đọc số Hướng dẫn diễn giải kết quả Sổ tay vận hành Quy trình mới

🔴 ml-model là loại lệch nhiều nhất. Yêu cầu mang tính xác suất, nên Given/When/Then không mô tả được — đọc kỹ phần đầu srs-part2/ml-model.md trước khi bắt đầu.

Loại chưa hỗ trợ

embedded / IoT / firmware: NFR khác hẳn (điện năng, nhiệt độ, thời gian thực cứng, an toàn chức năng), và không có khái niệm "trạng thái rỗng". Bộ skill này chưa có biến thể PART 2 cho nó. Dùng khung GĐ1/GĐ2/GĐ4/GĐ5 vẫn được; PART 2 của GĐ3 phải tự viết. Nói rõ điều này với người dùng thay vì cố nhét vào biến thể gần đúng nhất.

Một project có nhiều loại

Bình thường — một tính năng thường gồm screen + api-service, đôi khi + batch-job. Cách xử lý: profile khai loại chính, và GĐ3 nạp nhiều biến thể PART 2, mỗi biến thể một mục con. Không tách thành nhiều project.


2. Trục LIFECYCLE — nền cũ hay nền mới

Quyết định GĐ1 và GĐ2 nặng ở đâu.

Giá trị Nghĩa AS-IS Dữ liệu cũ IMPACT
greenfield Chưa có gì, không thay thế cái nào Chỉ mô tả cách làm thủ công hiện tại (nếu có) N/A — ghi rõ Rút gọn: chỉ trục tích hợp
brownfield Thay thế/bổ sung hệ thống đang chạy 🔴 Bắt buộc đầy đủ 🔴 Bắt buộc chọn 1 trong 3 phương án Đầy đủ 6 trục
enhancement Thêm/sửa trên module đã có Chỉ phần bị đụng Bắt buộc nếu đổi schema/rule Đầy đủ 6 trục — trọng tâm

Hệ quả cụ thể:

  • greenfield ⇒ process-model.md PHẦN A rút gọn còn A3 (điểm đau) + A4 (đường tắt) + A5 (ngoại lệ). Bỏ A1, A2, A6 và ghi rõ lý do, đừng để trống.
  • enhancement ⇒ GĐ1 chạy chế độ rút gọn (--mode enhancement): chỉ RQ + rủi ro, bỏ BRIEF đầy đủ. Nhưng IMPACT ở GĐ2 thì nặng hơn bình thường.
  • brownfield ⇒ mục "dữ liệu cũ xử lý thế nào" trong IMPACT §1.2 là blocker của G2.

3. Trục RIGOR — mức nghiêm ngặt

Quyết định gate chặt tới đâu và ai phải ký. standard là baseline; light bớt đi, strict thêm vào.

Giá trị Dùng khi Ký gate
light POC, thử nghiệm, công cụ nội bộ ≤ 2 tuần, không đụng tiền/dữ liệu cá nhân Chỉ PO
standard Mặc định — sản phẩm thật, có người dùng thật PO + Tech Lead + QA (theo từng gate)
strict Có tiền, dữ liệu cá nhân, yêu cầu pháp lý, chịu kiểm toán (tài chính, y tế, bảo hiểm) Như standard + Bảo mật/Pháp chế ở G2 và G3

Chi tiết tiêu chí bớt/thêm theo từng gate: workflow.md §2.0.

Chọn light không phải là được phép làm ẩu

light bỏ thủ tục, không bỏ tư duy. Bốn thứ không bao giờ được bỏ ở bất kỳ mức nào:

  1. Phát biểu bài toán (không có thì không biết đang giải gì)
  2. Ít nhất một GOAL có cách đo (không có thì không biết có thành công không)
  3. OQ cho mọi chỗ chưa rõ (bịa vẫn là bịa, kể cả trong POC)
  4. Ghi lại quyết định DEC-nn (POC hôm nay thành sản phẩm sáu tháng sau là chuyện thường)

Nâng mức giữa chừng

POC light được duyệt thành sản phẩm ⇒ nâng lên standard và chạy bù: rà lại G1, G2, G3 theo checklist đầy đủ trước khi làm tiếp. Ghi DEC-nn. Không nâng bù là cách một POC mang theo mọi thiếu sót của nó vào sản phẩm thật.


4. Bảng tra nhanh — profile nào nạp gì

Profile Template GĐ2 nạp Biến thể PART 2 Gate ký bởi
screen · brownfield · standard Đủ 5 screen PO + TL + QA
screen · greenfield · light BACKLOG, BR screen PO
api-service · enhancement · standard BACKLOG, BR, IMPACT (nặng) api-service PO + TL + QA
data-pipeline · brownfield · strict Đủ 5 + đối soát data-pipeline PO + TL + QA + Bảo mật
ml-model · greenfield · standard PROCESS, BACKLOG, BR ml-model PO + TL + QA
batch-job · enhancement · strict BACKLOG, BR, RBAC, IMPACT batch-job PO + TL + QA + Bảo mật
process-only · brownfield · standard PROCESS (trọng tâm), RBAC ❌ PO

5. Ba ví dụ profile thật

① Màn hình quản trị đối soát trong hệ thống bán lẻ đang chạy

screen · brownfield · standard

Có giao diện, thay thế quy trình Excel đang dùng, đụng dữ liệu giao dịch có sẵn, không phải hệ thống chịu kiểm toán trực tiếp. → PART 2 screen, AS-IS bắt buộc, ký 3 bên.

② Luồng nạp dữ liệu POS hằng đêm vào kho dữ liệu, phục vụ báo cáo tài chính

data-pipeline · greenfield · strict

Không giao diện, sản phẩm là dữ liệu, phục vụ báo cáo tài chính nên chịu kiểm toán. → PART 2 data-pipeline, bắt buộc mục đối soát nguồn–đích và audit log, thêm chữ ký Bảo mật.

③ Thử nghiệm gợi ý sản phẩm cho app khách hàng, chạy 3 tuần xem có đáng đầu tư không

ml-model · greenfield · light

POC, chưa có người dùng thật ngoài nhóm thử. → PART 2 ml-model nhưng chỉ mục 2.1–2.5, gate chỉ PO ký. Vẫn bắt buộc: bài toán, một metric có ngưỡng, OQ, DEC.


6. Chọn thế nào khi lưỡng lự

Lưỡng lự Chọn Vì
screen hay api-service Theo người tiêu thụ: người → screen, hệ thống → api-service Ai đọc AC quyết định AC viết thế nào
data-pipeline hay batch-job Sản phẩm là dữ liệu để phân tích → pipeline; là việc được làm xong → batch-job Pipeline cần data contract, batch-job cần idempotency
ml-model hay screen Có thành phần dự đoán ⇒ nạp cả hai biến thể Màn hình vẫn cần spec bình thường
brownfield hay enhancement Thay cả quy trình → brownfield; thêm một mẩu vào cái đang chạy → enhancement Quyết AS-IS nặng hay nhẹ
standard hay strict Có tiền, dữ liệu cá nhân, hoặc ai đó có thể bị kiểm toán ⇒ strict Nâng mức rẻ hơn nhiều so với sửa sau kiểm toán
light hay standard Kết quả sẽ được dùng thật bởi người ngoài nhóm ⇒ standard "POC" mà có người dùng thật thì không còn là POC

Không chắc ⇒ chọn mức cao hơn và hỏi người dùng. Sai hướng "chặt quá" tốn thêm ít thủ tục; sai hướng "lỏng quá" mất thông tin không lấy lại được.