Skip to content

Báo cáo Bán hàng

1. Tổng quan

Thuộc tínhGiá trị
IDFEAT-SALE-REPORT
Trạng tháiStable
Ownersale-team
Phụ thuộcSaleOrder, SaleOrderItem, PurchaseOrder (đọc liên package cho tổng kết mua hàng)

SalesReportService cung cấp các tổng hợp chỉ đọc trên các sale order đã hoàn tất, dành cho dashboard và báo cáo cuối ngày. Mọi truy vấn được đẩy xuống method SQL của repository (không tổng hợp in-memory).

2. Vận hành

SalesReportService (sales-report.service.ts — 75 dòng, wrapper mỏng trên repos).

Phương thứcRepository SQLTrả về
getDailySummarySaleOrderRepository.getDailySummaryTổng hằng ngày: { date, orderCount, subtotal, tax, discount, total } per ngày
getProductSalesSaleOrderRepository.getProductSalesDoanh số theo sản phẩm: { productVariantId, name, qty, total, ... }
getCategorySalesSaleOrderRepository.getCategorySalesDoanh số theo danh mục: { categoryId, name, qty, total, ... }
getCategorySummarySaleOrderRepository.getCategorySummaryDrill-down một danh mục
getPurchaseSummaryPurchaseOrderRepository.getDailySummaryGóc nhìn từ phía sale của purchase order để so sánh giá vốn

3. REST Endpoints

VerbPathAuthPermissionHandler
GET/reports/sales/summaryJWT/BASICSalesReport.dailySummarygetDailySummary
GET/reports/sales/by-productJWT/BASICSalesReport.byProductgetProductSales
GET/reports/sales/by-categoryJWT/BASICSalesReport.byCategorygetCategorySales
GET/reports/sales/category/:categoryIdJWT/BASICSalesReport.categorySummarygetCategorySummary
GET/reports/sales/purchase-summaryJWT/BASICSalesReport.purchaseSummarygetPurchaseSummary

Query params chung (per endpoint, validate bằng zod):

ParamKiểuMô tả
fromISO dateBắt đầu khoảng
toISO dateKết thúc khoảng
merchantIdstringBắt buộc cho role không phải system (auto-filter)
groupByenumday / week / month (nơi áp dụng)

OpenAPI live: /v1/api/sale/doc/openapi.json.

4. Lưu ý hiệu năng

Mối quan tâmXử lý
Khoảng dài (>90 ngày)SQL repository dùng index (merchantId, status, completedAt) để chỉ scan order COMPLETED
Đọc dashboard đồng thờiHiện không cache; gọi lặp lại hit DB. Thêm Redis cache nếu thấy áp lực.
Truy cập PurchaseOrder liên packageĐọc qua PurchaseOrderRepository từ @nx/core — cùng DB, không HTTP roundtrip

5. Sự kiện

Outbound: không có. Báo cáo theo dạng pull qua REST.

6. Trang liên quan

  • Mô hình miền — schema SaleOrder / SaleOrderItem
  • API REST — OpenAPI spec live tại /doc/openapi.json

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