Skip to content

PRD: Báo cáo doanh số & quyền truy cập

ModuleBáo cáoPRD IDPRD-SLS-001
Trạng tháiSẵn sàng devFEATSLS
EpicPlaneBANA-1517
Ngày2026-05-28Phiên bảnv1.0
Gói@nx/saleURDSLS
SurfaceClient · Chủ/QLBO · Vận hành
Phụ tráchPhát Nguyễn

TL;DR

Góc nhìn chỉ đọc về những gì thực sự bán ra: mỗi ngày bán bao nhiêu, sản phẩm và danh mục nào tạo ra doanh thu, và chi tiêu mua hàng so với doanh thu ra sao. Mọi báo cáo đều giới hạn trong phạm vi merchant của người dùng, cần một khoảng ngày, và chỉ tính đơn đã hoàn tất - nên con số chủ merchant dùng để điều hành luôn đúng và không bao giờ rò rỉ giữa các merchant.

1. Context & Problem

Chủ merchant cần góc nhìn chỉ đọc đáng tin cậy về hoạt động kinh doanh: doanh số hằng ngày, sản phẩm và danh mục bán chạy, và chi tiêu mua hàng so với doanh thu. Đơn bán và đơn mua đã có sẵn dưới dạng bản ghi giao dịch, nhưng chưa có lớp đọc tổng hợp trên chúng - nên chủ merchant không thể trả lời "hôm qua bán được bao nhiêu", "mặt hàng nào bán chạy nhất", hay "chi phí so với doanh thu thế nào" mà không đếm tay.

Phần tăng trưởng này xây lớp đọc trên các đơn bán và đơn mua đã hoàn tất, giới hạn mọi phép tổng hợp trong phạm vi merchant của người dùng đang yêu cầu, và đưa ra qua các màn hình báo cáo doanh thu. Việc tổng hợp chạy hiệu quả ở tầng dữ liệu, không phải từng dòng một; báo cáo không bao giờ thay đổi dữ liệu.

2. Goals & Non-Goals

Goals

  • Tổng hợp doanh số hằng ngày - gross, tax, discount, net, và số lượng đơn theo từng ngày trong một khoảng ngày từ-đến.
  • Báo cáo doanh số sản phẩm - các sản phẩm hàng đầu xếp hạng theo doanh thu và số lượng.
  • Báo cáo doanh số danh mục với khả năng đi sâu vào một danh mục.
  • Tổng hợp mua hàng - chi tiêu theo nhà cung cấp / đơn mua hàng để so sánh chi phí.
  • Giới hạn phạm vi nghiêm ngặt - mọi báo cáo giới hạn trong phạm vi merchant của người dùng, yêu cầu một khoảng ngày, chỉ tính các đơn đã hoàn tất, và tập kết quả rỗng hiển thị thành tổng bằng không thay vì báo lỗi.

Non-Goals

  • Báo cáo ca X / Z và đối soát tiền mặt - thuộc về feature SHF riêng (URD-SHF), vẫn đang triển khai.
  • Phân tích lãi/lỗ / biên lợi nhuận, định giá tồn kho, phân tích giữ chân khách hàng - thuộc về ADV (URD-ADV).
  • Xuất ra PDF / CSV / Excel và báo cáo tự sinh theo lịch.
  • Báo cáo kê khai thuế (thuộc về Thuế & Hóa đơn).

3. Success Metrics

MetricMục tiêu / tín hiệu
Cách ly đa-tenant0 dòng chéo merchant trong bất kỳ phản hồi báo cáo nào; mọi báo cáo giới hạn trong phạm vi merchant của chính người dùng
Độ chính xác con sốTổng hằng ngày khớp với các đơn đã hoàn tất trong khoảng; ngày kết thúc nằm trong cửa sổ
Chính xác chỉ-hoàn-tấtĐơn đã hủy / nháp không bao giờ đóng góp vào con số doanh số
Bền vững trạng thái rỗngMột khoảng không có đơn nào khớp trả về tổng bằng không, không bao giờ báo lỗi

4. Personas & Use Cases

PersonaMục tiêu trong feature này
OwnerXem doanh số hằng ngày, mặt hàng bán chạy, cơ cấu danh mục, và chi phí-so-với-doanh thu trên merchant
ManagerXem các báo cáo doanh số / sản phẩm / danh mục / mua hàng của merchant

Kịch bản chính: chọn một khoảng ngày từ-đến → xem tổng hợp doanh số hằng ngày → xếp hạng sản phẩm theo doanh thu và số lượng → phân rã theo danh mục và đi sâu vào một danh mục → xem chi tiêu mua hàng để so sánh chi phí - tất cả đều giới hạn trong phạm vi merchant của người dùng.

5. User Stories

  • Là một owner, tôi muốn có tổng hợp doanh số hằng ngày trên một khoảng ngày, để tôi thấy được gross, tax, discount, net, và số lượng đơn theo từng ngày.
  • Là một manager, tôi muốn các sản phẩm hàng đầu xếp hạng theo doanh thu và số lượng, để tôi biết mặt hàng nào bán chạy nhất.
  • Là một manager, tôi muốn doanh số được phân rã theo danh mục, để tôi so sánh hiệu quả giữa các danh mục.
  • Là một manager, tôi muốn đi sâu vào một danh mục, để tôi xem chi tiết của nó.
  • Là một owner, tôi muốn một tổng hợp mua hàng theo nhà cung cấp / đơn mua hàng, để tôi so sánh chi phí với doanh thu.
  • Là một owner, tôi muốn mọi báo cáo giới hạn trong phạm vi merchant của mình và chỉ tính các đơn đã hoàn tất, để các con số luôn chính xác và không bao giờ rò rỉ giữa các merchant.

6. Functional Requirements

#Yêu cầuURD ref
FR-1Tổng hợp doanh số hằng ngày: gross / tax / discount / net / số lượng đơn theo từng ngày trên một khoảng từ-đếnURD-SLS-001
FR-2Doanh số sản phẩm: các sản phẩm hàng đầu xếp hạng theo doanh thu và số lượngURD-SLS-002
FR-3Doanh số danh mục: tổng được phân rã theo danh mục sản phẩmURD-SLS-003
FR-4Đi sâu danh mục: chi tiết cho một danh mục được chọnURD-SLS-004
FR-5Tổng hợp mua hàng: chi tiêu theo nhà cung cấp / đơn mua hàng để so sánh chi phíURD-SLS-005
FR-6Mọi query giới hạn trong phạm vi merchant của người dùng; không rò rỉ chéo merchantURD-ACC-001
FR-7Báo cáo doanh số yêu cầu một khoảng ngày từ-đến; ngày kết thúc nằm trong cửa sổURD-ACC-002
FR-8Chỉ các đơn bán đã hoàn tất và các đơn mua đã hoàn tất / đã nhận được tổng hợp; đơn đã hủy / nháp bị loại trừURD-ACC-003
FR-9Tập kết quả rỗng hiển thị nhẹ nhàng thành tổng bằng không, không phải lỗiURD-ACC-004

Toàn văn yêu cầu và tiêu chí nghiệm thu nằm trong URD Báo cáo. PRD này tham chiếu đến chúng thay vì lặp lại.

7. Non-Functional Requirements

Lĩnh vựcYêu cầu
Chỉ đọcBáo cáo tổng hợp trên các đơn đã hoàn tất và không bao giờ thay đổi dữ liệu
Tenancy & authzMọi phép tổng hợp giới hạn trong phạm vi merchant của chính người dùng; không có dòng chéo merchant
Ngữ nghĩa ngàyBắt buộc một khoảng từ-đến; cửa sổ bao gồm cả ngày kết thúc
Performance / scaleViệc tổng hợp được tính toán hiệu quả ở tầng dữ liệu trên các đơn đã hoàn tất, không phải từng-dòng-một
Bền vữngTập kết quả rỗng phân giải thành tổng bằng không, không phải lỗi
i18nNhãn hướng tới người dùng song ngữ (tiếng Anh và tiếng Việt)

8. UX & Flows

Các màn hình chính: dashboard báo cáo doanh thu với biểu đồ và các bộ lọc báo cáo (khoảng ngày, trạng thái reset), trên route báo cáo riêng của chúng.

9. Data & Domain

Năng lực báo cáo cung cấp bốn góc nhìn báo cáo chỉ-đọc ở mức logic. Mỗi góc nhìn tính tổng hợp trên các đơn đã hoàn tất trong khoảng ngày được yêu cầu và giới hạn trong phạm vi merchant của chính người dùng:

Góc nhìn báo cáoTính toán gì
Tổng hợp hằng ngàyGross, tax, discount, net, và số lượng đơn theo từng ngày trên khoảng từ-đến
Xếp hạng sản phẩmCác sản phẩm hàng đầu xếp hạng theo doanh thu và số lượng
Phân rã danh mục + đi sâuTổng được nhóm theo danh mục sản phẩm, kèm chi tiết cho một danh mục được chọn
Tổng hợp mua hàngChi tiêu được nhóm theo nhà cung cấp / đơn mua hàng để so sánh chi phí

Chỉ ở mức khái niệm - schema đầy đủ và chi tiết query nằm trong domain model của sale.

10. Dependencies & Assumptions

Phụ thuộc vào

  • Orders - các đơn bán đã hoàn tất là nguồn của mọi con số doanh số.
  • Dữ liệu sản phẩm / danh mục - tên sản phẩm và danh mục dẫn dắt phân rã sản phẩm / danh mục.
  • Tổng tiền của đơn - tổng tiền của đơn cung cấp cho các bản tổng hợp.
  • Đơn mua hàng - các đơn mua hàng đã hoàn tất cung cấp cho tổng hợp mua hàng.

Giả định

  • Người dùng đang yêu cầu có một phạm vi merchant phân giải được.
  • Các đơn đã hoàn tất mang theo các trường tiền tệ (gross, tax, discount, net) mà các bản tổng hợp tổng hợp.

11. Risks & Open Questions

Rủi ro / câu hỏiGiảm thiểu / trạng thái
Rò rỉ chéo merchant trong tổng hợpMọi báo cáo giới hạn trong phạm vi merchant của chính người dùng; phạm vi được áp trên đường đọc
Lệch một-đơn-vị ở cửa sổ ngàyCửa sổ bao gồm cả ngày kết thúc cho các đơn bán và đơn mua đã hoàn tất
Khoảng ngày lớn quét nhiều đơnViệc tổng hợp được tính toán hiệu quả ở tầng dữ liệu thay vì từng-dòng-một
Lọc trạng thái không nhất quán giữa các loại báo cáoĐơn đã hủy / nháp bị loại trừ khỏi mọi báo cáo; báo cáo doanh số tính các đơn đã hoàn tất, báo cáo mua hàng tính các đơn đã hoàn tất và đã nhận

12. Release Plan & Launch Criteria

Khía cạnhKế hoạch
PhaseP1 - xem danh mục feature trong URD (SLSACC đã Built)
RolloutTất cả merchant; không feature flag
MigrationKhông (tổng hợp chỉ-đọc trên các đơn hiện có)
Launch criteriaBáo cáo hằng ngày / sản phẩm / danh mục / mua hàng trả về tổng đúng; phạm vi merchant đã kiểm chứng; khoảng rỗng trả về tổng bằng không; ngày kết thúc được bao gồm
MonitoringLượng yêu cầu báo cáo, độ trễ query trên khoảng lớn, kiểm tra cách ly chéo merchant

13. FAQ

Những đơn nào được tính vào con số doanh số? Chỉ các đơn đã hoàn tất - đơn đã hủy và đơn nháp bị loại trừ khỏi mọi báo cáo doanh số.

Khoảng ngày có tùy chọn không? Không - báo cáo doanh số yêu cầu một khoảng từ-đến, và cửa sổ bao gồm cả ngày kết thúc.

Tôi có thể xem con số của merchant khác không? Không - mọi báo cáo giới hạn trong phạm vi merchant của người dùng; dữ liệu chéo merchant không bao giờ được trả về.

Điều gì xảy ra khi không có đơn nào khớp? Báo cáo trả về tổng bằng không thay vì báo lỗi.

Báo cáo ca X / Z ở đâu? Chúng thuộc về feature SHF Shift Reports riêng, không thuộc phần tăng trưởng này.

References

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.