Appearance
Sales And Finance — Business Rules
Tổng quan
Domain này gom các báo cáo thiên về doanh thu, công nợ, dòng tiền và hiệu suất tài chính:
revenuedebtactual revenuecommissionfundexpenseemployee revenue
Một phần rank theo chi nhánh/phòng ban cũng chạm vùng này, nhưng không phải finance thuần; nó được tách sang doc org-performance-and-compliance.
Scope nghiệp vụ
| Nhóm | Vai trò | Ví dụ page |
|---|---|---|
| Revenue | Theo dõi doanh thu theo loại đơn và hình thức thu | RevenueReport.tsx |
| Debt | Theo dõi công nợ vào/ra | DebtReport.tsx |
| Actual revenue | Đọc doanh thu thực sau khi đã qua action tổng hợp | ActualRevenueReport.tsx |
| Commission / employee revenue | Theo dõi phân bổ doanh thu và commission theo người | CommissionReport.tsx, EmployeeRevenueReport.tsx |
| Fund / expense | Đọc dòng tiền quỹ và chi phí phát sinh | FundReport.tsx, ExpenseReport.tsx |
Luồng chính
text
Report cards
-> chọn group revenue / debt / fund / expense / commission
-> FE kiểm tra `reportRoles`
-> mở filter theo ngày / branch / order kind / user
-> query trực tiếp table/view/function hoặc Hasura action
-> render card + table + aggregateQuy tắc nghiệp vụ
| Mã | Quy tắc |
|---|---|
| BR-RSF-001 | Finance reports không dựa vào route guard FE; quyền xem thực tế đến từ report_role, reportRoles và scope query backend. |
| BR-RSF-002 | revenue là họ nhiều tab, tách theo loại đơn và hình thức thu: service order, service payment, product order, prepaid order. |
| BR-RSF-003 | actual revenue là engine riêng, không đồng nghĩa 1-1 với revenue total; nó đi qua action tổng hợp thay vì chỉ query bảng/view trực tiếp. |
| BR-RSF-004 | commission và employee revenue là read model cho phân bổ doanh thu theo nhân sự, không phải sổ cái wallet trực tiếp. |
| BR-RSF-005 | fund và expense đọc lớp tài chính vận hành, nhưng ownership dữ liệu vẫn rải giữa ecommerce, hrm, wallet. |
| BR-RSF-006 | Root card và tab-level access có thể thay đổi theo report_role; cùng một route shell nhưng role khác nhau có thể thấy tập tab khác nhau. |
Boundary
| Boundary | Ghi chú |
|---|---|
ecommerce | Nguồn dữ liệu lớn nhất: order, invoice, order_item, order_commission, invoice_commission, fund |
wallet | Xuất hiện ở payment method wallet, wallet_promotion và transaction log phía expense |
settings | DashboardReportPermission là control plane để cấp report_role |
Rủi ro / Findings
| Mức | Finding |
|---|---|
| P1 | actual revenue hiện lẫn một phần UI/customer-rate, nên domain boundary chưa sạch. |
| P1 | employee revenue về semantics gần “invoice commission allocation” hơn là “doanh thu nhân viên” thuần. |
| P1 | commission là report tổng hợp riêng, không cùng định nghĩa với payout/settlement trong wallet. |
| P2 | reportRoles được cache localStorage 1 giờ ở login flow, nên thay đổi phân quyền có thể không phản ánh ngay. |
| P2 | audit report hiện vẫn là placeholder, chưa nên tính là coverage thực của finance/compliance. |