Files
trackgo-fe/apps/web/docs/report-engine-fe.md
T
shancheas 05c8459d12 feat: enhance plan document handling and validation in forms
- Introduced new functions for loading and managing plan document options, improving user experience in selecting documents based on customer context.
- Implemented grouping of documents by customer in the `FormDocumentsPreview` component, enhancing clarity in document displays.
- Updated validation schemas to ensure proper handling of document associations with selected customers, preventing invalid selections.
- Added unit tests for new functionalities, ensuring reliability and correctness in document management.
- Enhanced language support for user prompts related to document selection, improving overall usability.

These changes significantly improve the handling of plan documents within the application, streamlining user interactions and ensuring data integrity.
2026-09-01 09:50:53 +07:00

2.3 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.