Skip to content

Sales And Finance — Technical Map

Route / page map

SurfaceMain page / shell
RevenueRevenueReport.tsx
DebtDebtReport.tsx
Actual revenueActualRevenueReport.tsx
CommissionCommissionReport.tsx
Employee revenueEmployeeRevenueReport.tsx
FundFundReport.tsx
ExpenseExpenseReport.tsx

GraphQL / data model map

SurfaceQuery / model chính
RevenueReportOrderRevenue, ReportServiceRevenue, TransactionListOfOrderService, ReportCosmeticRevenue, ReportPrepaidCardRevenue trong report_revenue.graphql
DebtReportDebtCustomer trên order trong report_debt.graphql
Actual revenueHasura actions reportSalesRevenue, reportSalesRevenueByBranch trong report_actual_revenue.graphql
Commissionsearch_report_order_commission -> result type report_order_commission
Employee revenuesearch_report_employee, search_dashboard_report_employee, search_dashboard_report_total_employee
FundQuery fund + branch/master-data trong report_fund.graphql
ExpenseQuery view report_expense trong report_expense.graphql

Boundary với module khác

ModuleBoundary kỹ thuật
ecommerceFinance reports chủ yếu sống trên metadata/functions của source ecommerce
walletwallet, wallet_promotion, transaction_request_log tham gia vào actual revenue/expense
authconfigureUseAuth.ts load report_role và cache vào LOCAL_STORAGE_REPORT_ROLES

Rủi ro / Findings kỹ thuật

MứcFinding
CaoActualRevenueReport đang reuse CustomerCycleRateReport, tạo coupling chéo domain trong cùng page.
CaoContract risk: action input của actual revenue cần branch_ids: [String], nhưng một số path FE truyền scalar branch.
Trung bìnhDetailReportLayout.tsx lọc tab bằng globalStore.account?.roles[0]?.role_id, không theo effective role set.
Trung bìnhRoute configs của report để permissions: [], nên enforcement nằm ở report_role + query scope thay vì router.
Trung bìnhaudit_report_group chưa có implementation; hiện chỉ là placeholder text.