diff --git a/maternal-app/maternal-app-backend/src/modules/analytics/analytics.controller.ts b/maternal-app/maternal-app-backend/src/modules/analytics/analytics.controller.ts index 9fce67b..6844a84 100644 --- a/maternal-app/maternal-app-backend/src/modules/analytics/analytics.controller.ts +++ b/maternal-app/maternal-app-backend/src/modules/analytics/analytics.controller.ts @@ -392,6 +392,62 @@ export class AnalyticsController { } } + /** + * Advanced Analytics Dashboard - Aggregates all advanced analytics + * GET /api/v1/analytics/advanced/dashboard/:childId + */ + @Get('advanced/dashboard/:childId') + async getAdvancedDashboard( + @CurrentUser() user: any, + @Param('childId') childId: string, + ) { + try { + // Fetch all analytics data in parallel for better performance + const [ + circadianRhythm, + anomalies, + correlations, + growthAnalysis, + sleepTrends, + feedingTrends, + sleepClusters, + feedingClusters, + ] = await Promise.all([ + this.advancedPatternService.analyzeCircadianRhythm(childId, 14), + this.advancedPatternService.detectAnomalies(childId, 30), + this.advancedPatternService.analyzeCorrelations(childId, 14), + this.growthPercentileService.analyzeGrowth(childId), + this.advancedPatternService.analyzeTrends(childId, ActivityType.SLEEP), + this.advancedPatternService.analyzeTrends(childId, ActivityType.FEEDING), + this.advancedPatternService.clusterActivities(childId, ActivityType.SLEEP, 30), + this.advancedPatternService.clusterActivities(childId, ActivityType.FEEDING, 30), + ]); + + // Combine all analytics into a comprehensive dashboard + const dashboard = { + circadianRhythm, + anomalies, + correlations, + growthAnalysis, + trends: { + sleep: sleepTrends, + feeding: feedingTrends, + }, + clusters: { + sleep: sleepClusters, + feeding: feedingClusters, + }, + }; + + return { + success: true, + data: dashboard, + }; + } catch (error) { + throw new BadRequestException(error.message); + } + } + /** * Comprehensive Analytics Dashboard Endpoint */