PrintUp Biz docs Yêu cầu & nghiệm thu P0
Baseline · brief v2026-09-16 (16/09/2026) 1fd8ee30

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.

10
capability L1
16
epic E1–E16 được phủ
81
user story hiện có để truy vết
4
lớp nhìn: business, channel, control, evidence

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

  1. Capability được chia theo business responsibility, không theo page/screen.
  2. 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.
  3. Money state, production state, fulfilment state, invoice state và notification state không bị nén thành một order_status.
  4. 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:

  1. thêm/xóa capability kinh doanh;
  2. epic/story mới làm xuất hiện chức năng L2 mới;
  3. decision mới thay đổi boundary giữa standard ecommerce và print/customization;
  4. state/RBAC/policy mới thay đổi điều kiện thực thi một chức năng;
  5. 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

Baseline nguồn: biz-docs/SOURCE-REQUIREMENTS.md · 16/09/2026 · repo RunLumi/printup

Requirement có trong đặc tả 16/09/2026 được đánh dấu Baseline. Chi tiết chưa đủ để code/nghiệm thu phải nằm ở trạng thái Cần chốt hoặc D-xx Mở, không tự suy diễn thành cam kết. Trạng thái được cập nhật trong biz-docs/data/.