Phân rã chức năng (FDD)
Functional Decomposition Diagram của PrintUp: từ capability L0/L1 đến nhóm chức năng L2, có truy vết về epic, user story và các tài liệu nghiệp vụ hiện hành.
Vai trò của trang này: FDD là bản đồ chức năng để Product, Engineering, QA và vận hành cùng nhìn một hệ thống theo cùng một cấu trúc. Nó không thay thế User stories, business rules, state machine hay permission matrix. Khi có xung đột, tài liệu nguồn/decision mới hơn và yêu cầu đã được phê duyệt có ưu tiên theo quy tắc quản trị của biz-docs.
1. Cách đọc FDD
- L0: hệ thống PrintUp như một năng lực kinh doanh hoàn chỉnh.
- L1 / FD-x: capability lớn, ổn định hơn backlog và tổ chức team.
- L2 / FD-x.y: nhóm chức năng người dùng/hệ thống phải thực hiện được.
- Epic / US: bằng chứng backlog cho chức năng; một story có thể hỗ trợ nhiều capability.
- Control xuyên suốt: state, RBAC, audit, idempotency, notification và policy không phải “một màn hình”, nhưng là chức năng bắt buộc để các capability vận hành đúng.
FDD cố ý không dùng cấu trúc team, service hay thư mục code làm nhánh chính. Đó là implementation decomposition, không phải functional decomposition.
2. L0 → L1: bản đồ capability toàn hệ thống
flowchart TB
L0["L0 · PrintUp functional system"]
L0 --> F1["FD-1 · Identity & Access"]
L0 --> F2["FD-2 · Catalog & Offer Configuration"]
L0 --> F3["FD-3 · Pricing & Quotation"]
L0 --> F4["FD-4 · Cart, Checkout & Order"]
L0 --> F5["FD-5 · Design & File Readiness"]
L0 --> F6["FD-6 · Payment, Refund & Invoicing"]
L0 --> F7["FD-7 · Production & QC"]
L0 --> F8["FD-8 · Fulfilment & After-sales"]
L0 --> F9["FD-9 · Agent & Commission"]
L0 --> F10["FD-10 · Governance, Automation & Insight"]
Nguyên tắc phân ranh
- Capability được chia theo business responsibility, không theo page/screen.
- Flow sản phẩm tiêu chuẩn và sản phẩm in/tùy biến dùng chung commerce core; nhánh design/production chỉ kích hoạt khi product configuration yêu cầu.
- Money state, production state, fulfilment state, invoice state và notification state không bị nén thành một
order_status. - Automation không được phép bypass approval, payment, floor, RBAC hoặc audit gate.
3. FD-1 → FD-3: từ định danh đến offer có giá
flowchart LR
F1["FD-1 Identity & Access"]
F1 --> F11["1.1 Guest state & cart continuity"]
F1 --> F12["1.2 Registration & authentication"]
F1 --> F13["1.3 Customer / business profile"]
F1 --> F14["1.4 Address & invoice identity"]
F1 --> F15["1.5 Internal role & access control"]
F2["FD-2 Catalog & Offer Configuration"]
F2 --> F21["2.1 Category & catalog management"]
F2 --> F22["2.2 Product / variant behavior config"]
F2 --> F23["2.3 Options, MOQ & constraint rules"]
F2 --> F24["2.4 Template / design asset library"]
F2 --> F25["2.5 Customer product configuration"]
F2 --> F26["2.6 Standard vs print-flow routing"]
F3["FD-3 Pricing & Quotation"]
F3 --> F31["3.1 Fixed-unit pricing"]
F3 --> F32["3.2 Print cost engine"]
F3 --> F33["3.3 Discount, floor, VAT & rounding"]
F3 --> F34["3.4 Manual quotation"]
F3 --> F35["3.5 Quote acceptance & conversion"]
FD-1 · Identity & Access
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-1.1 | Giữ trạng thái guest và merge/continue cart khi xác thực | E2, Phạm vi |
| FD-1.2 | Đăng ký, đăng nhập, recovery và các phương thức xác thực hiện hành | E2, baseline account/auth |
| FD-1.3 | Hồ sơ cá nhân/doanh nghiệp và định danh email | E2 |
| FD-1.4 | Address/contact/invoice identity và snapshot theo order | E5, Quyền |
| FD-1.5 | Tài khoản nội bộ, role, Production Approver và enforcement server-side | E1, Quyền & phân quyền |
Story anchors: US-03, US-07..US-10; các story checkout/profile liên quan dùng lại capability này.
FD-2 · Catalog & Offer Configuration
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-2.1 | Quản lý nhóm sản phẩm, SKU, variant và active/inactive | E1, E3 |
| FD-2.2 | Cấu hình behavior theo product/variant thay vì hard-code category | E15, baseline catalog |
| FD-2.3 | Cấu hình option, MOQ, constraint và rule QT-xx | E15 |
| FD-2.4 | Quản lý thư viện mẫu/asset thiết kế | E1, E3 |
| FD-2.5 | Khách chọn sản phẩm, variant/quy cách, số lượng và thông tin bổ sung | E3, E15 |
| FD-2.6 | Route đúng flow standard ecommerce hoặc print/customization | Phạm vi, baseline product behavior |
Story anchors: US-01, US-02, US-05, US-06, US-11..US-16, US-58..US-61, US-65..US-69, US-76..US-81.
FD-3 · Pricing & Quotation
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-3.1 | Tính giá fixed-unit theo variant/quantity | E15 |
| FD-3.2 | Tính production cost cho sản phẩm in khi áp dụng | baseline pricing engine |
| FD-3.3 | Áp discount → floor/minimum-net → VAT → rounding | Trạng thái & quy tắc, baseline pricing |
| FD-3.4 | Chuyển case ngoài chuẩn sang manual quote, soạn/gửi/version quote | E15, E6 |
| FD-3.5 | Khách accept/reject quote và convert thành order snapshot | E15 |
Story anchors: US-02, US-13, US-29, US-59, US-61..US-64, US-68.
4. FD-4 → FD-6: từ cart đến tiền và chứng từ
flowchart LR
F4["FD-4 Cart, Checkout & Order"]
F4 --> F41["4.1 Cart lifecycle"]
F4 --> F42["4.2 Checkout data capture"]
F4 --> F43["4.3 Delivery / invoice / referral input"]
F4 --> F44["4.4 Reprice, terms & idempotent order create"]
F4 --> F45["4.5 Order history & status tracking"]
F4 --> F46["4.6 Order-scoped communication"]
F5["FD-5 Design & File Readiness"]
F5 --> F51["5.1 Design asset intake / template selection"]
F5 --> F52["5.2 File / design validation"]
F5 --> F53["5.3 Designer queue & design quote"]
F5 --> F54["5.4 Revision & feedback loop"]
F5 --> F55["5.5 Customer proof approval"]
F5 --> F56["5.6 Production-ready output / evidence"]
F6["FD-6 Payment, Refund & Invoicing"]
F6 --> F61["6.1 Deposit / SePay payment"]
F6 --> F62["6.2 Remaining balance"]
F6 --> F63["6.3 Payment exception reconciliation"]
F6 --> F64["6.4 Cancellation / refund financial actions"]
F6 --> F65["6.5 Invoice issue & adjustment"]
FD-4 · Cart, Checkout & Order
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-4.1 | Xem/sửa/xóa line item và giữ configuration riêng | E4 |
| FD-4.2 | Thu contact, nhận hàng, yêu cầu khác, invoice info | E5 |
| FD-4.3 | Chọn giao hàng, referral code và nhánh giao gấp/manual quote | E5 |
| FD-4.4 | Reprice, xác nhận điều khoản, tạo order idempotent và gửi confirmation | E5, Trạng thái |
| FD-4.5 | Theo dõi trạng thái và lịch sử order | E8 |
| FD-4.6 | Yêu cầu/trao đổi theo từng order | E8 |
Story anchors: US-17..US-27, US-38..US-42.
FD-5 · Design & File Readiness
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-5.1 | Nhận design asset hoặc chọn/chỉnh từ template theo requirement hiện hành | E3 |
| FD-5.2 | Kiểm tra rule kỹ thuật, cảnh báo chất lượng và ghi evidence | E3, E16 |
| FD-5.3 | Designer xem queue và báo giá dịch vụ thiết kế khi cần | E6 |
| FD-5.4 | Phản hồi đạt/chưa đạt, sửa lại, version hóa asset | E6 |
| FD-5.5 | Khách duyệt proof/bản in trước khi chốt file | E6 |
| FD-5.6 | Tạo/giữ output đủ điều kiện đi production, không bypass approval gate | E3, Trạng thái |
Story anchors: US-14, US-15, US-28..US-32, US-69, US-75..US-80.
FD-6 · Payment, Refund & Invoicing
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-6.1 | Thanh toán cọc bằng SePay/bank transfer và match đúng reference | E7 |
| FD-6.2 | Thu phần còn lại khi đạt điều kiện | E7 |
| FD-6.3 | Reconcile thiếu/dư/sai reference/late payment bằng người có quyền | E7, Quyền |
| FD-6.4 | Quyết định và thực thi refund/cancellation theo state/audit | E11, Quyền |
| FD-6.5 | Phát hành hóa đơn, auto/manual policy và adjustment state | E9 |
Story anchors: US-33..US-35, US-43..US-44, US-51.
5. FD-7 → FD-10: từ sản xuất đến vận hành hệ thống
flowchart LR
F7["FD-7 Production & QC"]
F7 --> F71["7.1 Production readiness queue"]
F7 --> F72["7.2 Accept / approve production"]
F7 --> F73["7.3 Production milestones"]
F7 --> F74["7.4 QC, rework & scrap"]
F7 --> F75["7.5 Ready-for-fulfilment completion"]
F8["FD-8 Fulfilment & After-sales"]
F8 --> F81["8.1 Shipment / pickup handling"]
F8 --> F82["8.2 Tracking & delivery result"]
F8 --> F83["8.3 Customer receipt confirmation"]
F8 --> F84["8.4 Complaint handling"]
F8 --> F85["8.5 Cancellation / exception routing"]
F8 --> F86["8.6 Sample flow"]
F9["FD-9 Agent & Commission"]
F9 --> F91["9.1 Agent / referral provisioning"]
F9 --> F92["9.2 Referral attribution"]
F9 --> F93["9.3 Agent visibility"]
F9 --> F94["9.4 Commission ledger"]
F9 --> F95["9.5 Monthly reconciliation & payout"]
F10["FD-10 Governance, Automation & Insight"]
F10 --> F101["10.1 Policy & configuration lifecycle"]
F10 --> F102["10.2 Timers, reminders & auto-actions"]
F10 --> F103["10.3 Notification orchestration"]
F10 --> F104["10.4 Operational / management reporting"]
F10 --> F105["10.5 RBAC, state & audit controls"]
F10 --> F106["10.6 Change / traceability control"]
FD-7 · Production & QC
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-7.1 | Xác định order/item đã đủ gate để vào production | E8, Trạng thái |
| FD-7.2 | Nhận việc và approval theo role/state bắt buộc | E8, Quyền |
| FD-7.3 | Cập nhật milestone sản xuất có timestamp | E8 |
| FD-7.4 | QC, rework, scrap với reason/quantity/note | baseline production/QC |
| FD-7.5 | Chuyển item đủ điều kiện sang ready-for-fulfilment | Trạng thái |
Story anchors: US-36, US-37; US-53 dùng lại capability khi làm mẫu.
FD-8 · Fulfilment & After-sales
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-8.1 | Tạo shipment ngoài hệ thống rồi ghi carrier/service/tracking hoặc pickup | E9 |
| FD-8.2 | Cập nhật kết quả giao và expose tracking phù hợp | E9 |
| FD-8.3 | Khách xác nhận nhận hàng | E9 |
| FD-8.4 | Tạo/xử lý khiếu nại có evidence | E10 |
| FD-8.5 | Route hủy đơn, giao thất bại và delay theo policy thay vì bypass state | E11, E16 |
| FD-8.6 | Yêu cầu, sản xuất, gửi và duyệt mẫu thử khi module bật | E12 |
Story anchors: US-45..US-53, US-72..US-73.
FD-9 · Agent & Commission
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-9.1 | Tạo/approve agent và referral code | E1, E13 |
| FD-9.2 | Ghi referral attribution vào order và kiểm soát correction/lock | E5, Quyền |
| FD-9.3 | Agent xem khách/đơn thuộc phạm vi giới thiệu | E13 |
| FD-9.4 | Tính/ghi commission và adjustment | E13 |
| FD-9.5 | Đối soát và payout theo tháng, không trả trùng | E13 |
Story anchors: US-04, US-25, US-54..US-56.
FD-10 · Governance, Automation & Insight
| ID | Chức năng | Evidence chính |
|---|---|---|
| FD-10.1 | Feature/config policy, versioning và các tham số vận hành | E1, E16 |
| FD-10.2 | Nhắc cọc, auto-cancel, overdue balance, failed delivery và deadline handling theo policy | E16 |
| FD-10.3 | Email/push/event notification theo state transition | E5, E8 |
| FD-10.4 | Báo cáo order/revenue/agent và management visibility | E14 |
| FD-10.5 | RBAC, audit trail, idempotency, invariant và state-machine control | Trạng thái & quy tắc, Quyền & phân quyền |
| FD-10.6 | Requirement/change traceability để biết behavior nào bị tác động khi spec đổi | Truy vết, Thay đổi |
Story anchors: US-05, US-06, US-27, US-42, US-57, US-70..US-75; control coverage còn đến từ BR/NFR/permission/traceability chứ không chỉ US.
6. Ma trận truy vết capability → backlog
| Capability | Epic chính | User stories tiêu biểu | Kênh / actor chính |
|---|---|---|---|
| FD-1 Identity & Access | E1, E2 | US-03, US-07..10 | Customer, Admin, system |
| FD-2 Catalog & Offer Configuration | E1, E3, E15 | US-01..02, US-11..16, US-58..61, US-65..69, US-76..81 | Customer, Admin |
| FD-3 Pricing & Quotation | E6, E15 | US-13, US-29, US-59, US-61..64, US-68 | Customer, Sales/Admin, system |
| FD-4 Cart, Checkout & Order | E4, E5, E8 | US-17..27, US-38..42 | Customer, Admin, system |
| FD-5 Design & File Readiness | E3, E6, E16 | US-14..15, US-28..32, US-69, US-75..80 | Customer, Designer/Production Approver, system |
| FD-6 Payment, Refund & Invoicing | E7, E9, E11 | US-33..35, US-43..44, US-51 | Customer, Accounting, Admin |
| FD-7 Production & QC | E8, E12 | US-36..37, US-53 | Production, Production Approver |
| FD-8 Fulfilment & After-sales | E9, E10, E11, E12, E16 | US-45..53, US-72..73 | Customer, Admin, Production |
| FD-9 Agent & Commission | E1, E5, E13 | US-04, US-25, US-54..56 | Agent, Accounting, Admin |
| FD-10 Governance, Automation & Insight | E1, E5, E8, E14, E16 | US-05..06, US-27, US-42, US-57, US-70..75 | Admin, Management, system |
Lưu ý: bảng trên là many-to-many. Ví dụ US-51 liên quan cả after-sales lẫn refund; US-75 liên quan design readiness lẫn automation. Đây là chủ ý, vì story là lát cắt hành vi còn capability là trách nhiệm chức năng.
7. Functional control plane xuyên suốt
flowchart TB
UX["Customer / Staff action"]
UX --> STATE["State transition guard"]
STATE --> AUTH["RBAC / ownership check"]
AUTH --> RULE["Business rule / pricing / policy check"]
RULE --> WRITE["Idempotent domain write"]
WRITE --> AUDIT["Audit + immutable snapshot/evidence"]
WRITE --> EVENT["Domain event"]
EVENT --> NOTIFY["Email / push / task notification"]
EVENT --> REPORT["Operational reporting"]
Mỗi chức năng nhạy cảm nên được review qua chuỗi trên. Nếu một implementation chỉ có UI action nhưng thiếu state gate, authorization, invariant, audit hoặc idempotency phù hợp thì chưa hoàn chỉnh về chức năng, dù màn hình đã chạy.
8. Ranh giới để FDD không phình thành “mọi thứ”
Các capability sau không tự động được coi là đã vào scope chỉ vì chúng hợp logic với hệ thống hiện tại:
- inventory / procurement / warehouse management;
- multi-vendor marketplace và multi-facility routing đầy đủ;
- multi-level referral;
- carrier/shipping automation khi chưa có change request tương ứng;
- payment method mới ngoài baseline;
- multi-user organization, multi-currency/multi-language nếu chưa được phê duyệt;
- provider integration chỉ vì schema đã chừa extension point.
Extension point là khả năng tránh rewrite về sau, không phải feature đã cam kết.
9. Quy tắc bảo trì FDD
FDD phải được cập nhật khi có một trong các thay đổi sau:
- thêm/xóa capability kinh doanh;
- epic/story mới làm xuất hiện chức năng L2 mới;
- decision mới thay đổi boundary giữa standard ecommerce và print/customization;
- state/RBAC/policy mới thay đổi điều kiện thực thi một chức năng;
- một capability được defer khỏi release hoặc đưa trở lại scope.
Khi chỉ đổi wording UI, deadline hoặc implementation detail mà không đổi business responsibility, không tạo node FDD mới.
10. Nguồn kiểm chứng
- User stories — backlog hành vi E1–E16 và US-01..US-81.
- Hành trình nghiệp vụ — luồng end-to-end và exception paths.
- Phạm vi phát hành — boundary P0 và non-goals.
- Trạng thái & quy tắc — state machine và invariant.
- Quyền & phân quyền — actor/permission boundary.
- Truy vết — requirement/decision impact coverage.
- Tài liệu nguồn — baseline và các nguồn gốc để giải quyết xung đột.