feat(analytics-gateway): ✨ Implement new analytics data processing methods in client and controller
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
0c699abe7c
commit
533f3bbac9
2 changed files with 55 additions and 41 deletions
|
|
@ -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<ChannelMetrics[]> {
|
||||
return this.fetchJson('/acquisition/channels', params);
|
||||
}
|
||||
|
||||
async getSources(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
channel?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<SourceMetrics[]> {
|
||||
|
|
@ -233,16 +233,16 @@ export class AnalyticsApiClient implements OnModuleInit {
|
|||
}
|
||||
|
||||
async getCampaigns(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<CampaignMetrics[]> {
|
||||
return this.fetchJson('/acquisition/campaigns', params);
|
||||
}
|
||||
|
||||
async getReferrers(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
limit?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<Array<{ referrer: string; sessions: number; users: number }>> {
|
||||
|
|
@ -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<EngagementOverview> {
|
||||
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<EventMetrics[]> {
|
||||
|
|
@ -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<Array<{ depth: number; users: number; percentage: number }>> {
|
||||
|
|
@ -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<AudienceOverview> {
|
||||
return this.fetchJson('/audience/overview', params);
|
||||
}
|
||||
|
||||
async getDevices(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<DeviceBreakdown[]> {
|
||||
return this.fetchJson('/audience/devices', params);
|
||||
}
|
||||
|
||||
async getBrowsers(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<BrowserBreakdown[]> {
|
||||
return this.fetchJson('/audience/browsers', params);
|
||||
}
|
||||
|
||||
async getOperatingSystems(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<Array<{ os: string; users: number; sessions: number; percentage: number }>> {
|
||||
return this.fetchJson('/audience/operating-systems', params);
|
||||
}
|
||||
|
||||
async getGeography(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
granularity?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<GeoBreakdown[]> {
|
||||
|
|
@ -341,16 +341,16 @@ export class AnalyticsApiClient implements OnModuleInit {
|
|||
}
|
||||
|
||||
async getLanguages(params: {
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
segmentId?: string;
|
||||
}): Promise<Array<{ language: string; users: number; sessions: number; percentage: number }>> {
|
||||
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<SegmentMetrics> {
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue