Report Generation Service
Component Detail
Service Layer
medium complexity
backend
1
Dependencies
1
Dependents
16
Entities
0
Integrations
Description
Backend service responsible for aggregating activity data into team-level reports. Executes PostgreSQL queries with window functions and GROUP BY clauses grouped by organization tenant, local association, date bucket, and activity type. Accepts filter parameters via the REST API endpoint and returns pre-aggregated JSON with pagination support. Enforces role-based data scoping so coordinators see only their association while org admins see full organization scope.
report-generation-service
Responsibilities
- Aggregate activity data using PostgreSQL window functions and GROUP BY
- Apply multi-dimensional filters (date range, association, activity type, peer mentor)
- Enforce tenant-scoped and role-based data access
- Return pre-aggregated JSON with pagination for large datasets
- Compute trend calculations over selectable time periods
Interfaces
generateTeamReport(orgId: string, filters: ReportFilters): TeamReport
getTeamStats(orgId: string, dateRange: DateRange): TeamStats
getActivityBreakdown(orgId: string, groupBy: GroupByField): ActivityBreakdown[]
getTrendData(orgId: string, period: TimePeriod): TrendData[]
getPeerMentorPerformance(orgId: string, filters: ReportFilters): MentorMetrics[]
getAssociationComparison(orgId: string, dateRange: DateRange): AssociationStats[]
validateReportAccess(userId: string, orgId: string): boolean
paginateResults(data: any[], page: number, pageSize: number): PaginatedResult
Relationships
Related Data Entities (16)
Data entities managed by this component
Activity
26 fields
core
Event
19 fields
core
Expense
23 fields
core
Local Association
13 fields
core
Organization
17 fields
core
User Role Assignment
11 fields
core
Activities
24 fields
core
Event Registrations
14 fields
core
Events
27 fields
core
Expense Approvals
13 fields
core
Expenses
31 fields
core
Local Associations
17 fields
core
Organizations
25 fields
core
User Local Associations
11 fields
core
User Roles
13 fields
core
Users
26 fields
core