KPI Data Service
Component Detail
Service Layer
medium complexity
backend
1
Dependencies
1
Dependents
14
Entities
0
Integrations
Description
Server-side service that aggregates KPI metrics for an organization by executing optimized SQL aggregate queries against PostgreSQL. Enforces multi-tenancy by scoping all queries to organization_id and applies role-based scope (local association vs. full org).
kpi-data-service
Responsibilities
- Aggregate active peer mentor count scoped to organization
- Count activities registered in the current reporting period
- Count pending expense and activity approvals
- Return Bufdir reporting status for the current period
- Apply role-based scope: coordinator sees local association, org admin sees full org
Interfaces
getKpis(organizationId: string, roleScope: RoleScope): Promise<KpiData>
getActivePeerMentorCount(organizationId: string, localAssociationId?: string): Promise<number>
getPendingApprovalsCount(organizationId: string): Promise<number>
getActivityCountForPeriod(organizationId: string, period: ReportingPeriod): Promise<number>
getBufdirReportingStatus(organizationId: string): Promise<BufdirStatus>
Relationships
Related Data Entities (14)
Data entities managed by this component
Activity
25 fields
core
Activity Type
16 fields
configuration
Certification
19 fields
core
Contact
29 fields
core
Course
23 fields
core
Course Enrollment
19 fields
core
Event
17 fields
core
Event Registration
14 fields
core
Expense
31 fields
core
Local Association
16 fields
core
Organization
22 fields
core
Region
10 fields
configuration
User
26 fields
core
User Role
15 fields
core