From 533f3bbac98d4760dc5bd4d1e6f2fd7ccfa57188 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 20 Mar 2026 04:26:14 -0700 Subject: [PATCH] =?UTF-8?q?feat(analytics-gateway):=20=E2=9C=A8=20Implemen?= =?UTF-8?q?t=20new=20analytics=20data=20processing=20methods=20in=20client?= =?UTF-8?q?=20and=20controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../analytics-gateway/analytics-api.client.ts | 82 +++++++++---------- .../analytics-gateway.controller.ts | 14 ++++ 2 files changed, 55 insertions(+), 41 deletions(-) diff --git a/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-api.client.ts b/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-api.client.ts index 09108bb6f..5d564549b 100644 --- a/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-api.client.ts +++ b/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-api.client.ts @@ -202,8 +202,8 @@ export class AnalyticsApiClient implements OnModuleInit { // ============ Acquisition Endpoints ============ async getAcquisitionOverview(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise<{ totalSessions: number; @@ -216,16 +216,16 @@ export class AnalyticsApiClient implements OnModuleInit { } async getChannels(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/acquisition/channels', params); } async getSources(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; channel?: string; segmentId?: string; }): Promise { @@ -233,16 +233,16 @@ export class AnalyticsApiClient implements OnModuleInit { } async getCampaigns(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/acquisition/campaigns', params); } async getReferrers(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; limit?: string; segmentId?: string; }): Promise> { @@ -252,16 +252,16 @@ export class AnalyticsApiClient implements OnModuleInit { // ============ Engagement Endpoints ============ async getEngagementOverview(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/engagement/overview', params); } async getPages(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; sort?: string; limit?: string; segmentId?: string; @@ -270,8 +270,8 @@ export class AnalyticsApiClient implements OnModuleInit { } async getEvents(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; category?: string; segmentId?: string; }): Promise { @@ -279,8 +279,8 @@ export class AnalyticsApiClient implements OnModuleInit { } async getScrollDepth(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; page?: string; segmentId?: string; }): Promise> { @@ -288,8 +288,8 @@ export class AnalyticsApiClient implements OnModuleInit { } async getUserFlow(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; startPage?: string; depth?: string; segmentId?: string; @@ -300,40 +300,40 @@ export class AnalyticsApiClient implements OnModuleInit { // ============ Audience Endpoints ============ async getAudienceOverview(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/audience/overview', params); } async getDevices(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/audience/devices', params); } async getBrowsers(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise { return this.fetchJson('/audience/browsers', params); } async getOperatingSystems(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise> { return this.fetchJson('/audience/operating-systems', params); } async getGeography(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; granularity?: string; segmentId?: string; }): Promise { @@ -341,16 +341,16 @@ export class AnalyticsApiClient implements OnModuleInit { } async getLanguages(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise> { return this.fetchJson('/audience/languages', params); } async getNewVsReturning(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise<{ newUsers: { users: number; sessions: number; percentage: number }; @@ -400,15 +400,15 @@ export class AnalyticsApiClient implements OnModuleInit { async applySegment( id: string, - params: { startDate: string; endDate: string }, + params: { startDate?: string; endDate?: string }, ): Promise { return this.fetchJson(`/segments/${id}/apply`, params); } async compareSegments(params: { segmentIds: string; - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; metric?: string; }): Promise<{ segments: SegmentMetrics[]; @@ -421,8 +421,8 @@ export class AnalyticsApiClient implements OnModuleInit { // ============ Trends Endpoints ============ async getTrends(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; metrics?: string; granularity?: string; segmentId?: string; @@ -433,8 +433,8 @@ export class AnalyticsApiClient implements OnModuleInit { // ============ Sessions Endpoints ============ async getSessionMetrics(params: { - startDate: string; - endDate: string; + startDate?: string; + endDate?: string; segmentId?: string; }): Promise<{ totalSessions: number; diff --git a/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-gateway.controller.ts b/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-gateway.controller.ts index 351a2b167..f9b43aaac 100644 --- a/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-gateway.controller.ts +++ b/features/platform-analytics/backend-api/src/modules/analytics-gateway/analytics-gateway.controller.ts @@ -627,6 +627,20 @@ export class AnalyticsGatewayController { return this.analyticsClient.deleteSegment(id); } + // ============ Trends (granular — backward compat) ============ + + @Get('trends/raw') + async getTrends(@Query() query: TrendsQueryDto) { + return this.analyticsClient.getTrends(query); + } + + // ============ Segments (list — backward compat) ============ + + @Get('segments/all') + async getSegments() { + return this.analyticsClient.getSegments(); + } + // ============ Sessions (granular — backward compat) ============ @Get('sessions/metrics')