Files
trackgo-fe/apps/web/docs/report-engine-fe.md
T
shancheas 991bf3fe65 feat: implement report engine with sales and logistics modules
- Added a new report engine UI, including configuration-driven report screens for sales and logistics.
- Created `ReportProvider`, `ReportTable`, and related components for rendering reports with server-side data fetching.
- Introduced `logisticsReportsModuleConfig` and `salesReportsModuleConfig` for managing report configurations and API interactions.
- Updated navigation to include sales and logistics reports with proper labels and paths.
- Enhanced language support for report titles in English and Indonesian.
- Implemented bookmark and filter functionalities for reports, improving user interaction and data management.

These changes establish a robust reporting framework, enhancing the application's data visualization capabilities and user experience.
2026-09-01 08:46:08 +07:00

1.6 KiB

Reports UI

Generic, config-driven report screens live in apps/web/src/core/report/. Report definitions are backend ReportConfigEntity objects.

Architecture and APIs: trackgo-be/docs/report-engine.md

Layout

Path Role
constants/ FILTER_TYPE, DATA_FORMAT, REPORT_GROUP — keep in sync with backend
entities/ Frontend mirror of config / query contracts
data/report.remote.service.ts HTTP client (apiClient)
utils/filter.helper.ts Form values → filterModel
utils/column.helper.ts columnConfigs → AG Grid columnDefs
components/report-provider.tsx Load configs → Mantine tabs
components/report-table.tsx AG Grid SSRM + filter/bookmark actions
components/report-filter-drawer.tsx Config-driven filter form
components/report-bookmark-list.tsx Bookmark apply / delete

Product modules

Module Path moduleKey
Sales reports apps/main/modules/sales/reports/ SALES.REPORT
Logistics reports apps/main/modules/field/logistics-reports/ LOGISTICS.REPORT

Each module wraps ReportProvider with groupName sales_report or logistics_report inside EnterpriseModuleProvider for RBAC.

Grid contract

Every server-side block sends:

{
  groupName,
  uniqueName,
  queryModel: { /* AG Grid IServerSideGetRowsRequest + merged filterModel */ }
}

Column defs, filters, and formats come from the config payload. Adding a report is a backend config change only.