mirror of
https://github.com/ktds-dg0501/kt-event-marketing-fe.git
synced 2025-12-06 08:16:23 +00:00
- 이벤트 기간 계산 함수에 상세 디버그 로그 추가 - 차트 데이터 생성 함수에 필터링 과정 로그 추가 - Timeline dataPoints 구조 확인을 위한 콘솔 출력 추가 - ROI 필드 매핑 검증을 위한 로그 추가
143 lines
3.9 KiB
TypeScript
143 lines
3.9 KiB
TypeScript
import { analyticsClient } from './analyticsClient';
|
|
import type {
|
|
ApiResponse,
|
|
UserAnalyticsDashboardResponse,
|
|
AnalyticsDashboardResponse,
|
|
UserTimelineAnalyticsResponse,
|
|
TimelineAnalyticsResponse,
|
|
UserRoiAnalyticsResponse,
|
|
RoiAnalyticsResponse,
|
|
UserChannelAnalyticsResponse,
|
|
ChannelAnalyticsResponse,
|
|
AnalyticsQueryParams,
|
|
TimelineQueryParams,
|
|
ChannelQueryParams,
|
|
RoiQueryParams,
|
|
} from '../model/types';
|
|
|
|
const API_VERSION = process.env.NEXT_PUBLIC_API_VERSION || 'v1';
|
|
|
|
/**
|
|
* Analytics API Service
|
|
* 실시간 효과 측정 및 통합 대시보드 API
|
|
*/
|
|
export const analyticsApi = {
|
|
// ============= User Analytics (사용자 전체 이벤트 통합) =============
|
|
|
|
/**
|
|
* 사용자 전체 성과 대시보드 조회
|
|
*/
|
|
getUserAnalytics: async (
|
|
userId: string,
|
|
params?: AnalyticsQueryParams
|
|
): Promise<UserAnalyticsDashboardResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<UserAnalyticsDashboardResponse>>(
|
|
`/api/${API_VERSION}/users/${userId}/analytics`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 사용자 전체 시간대별 참여 추이
|
|
*/
|
|
getUserTimelineAnalytics: async (
|
|
userId: string,
|
|
params?: TimelineQueryParams
|
|
): Promise<UserTimelineAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<UserTimelineAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/users/${userId}/analytics/timeline`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 사용자 전체 ROI 상세 분석
|
|
*/
|
|
getUserRoiAnalytics: async (
|
|
userId: string,
|
|
params?: AnalyticsQueryParams & RoiQueryParams
|
|
): Promise<UserRoiAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<UserRoiAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/users/${userId}/analytics/roi`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 사용자 전체 채널별 성과 분석
|
|
*/
|
|
getUserChannelAnalytics: async (
|
|
userId: string,
|
|
params?: ChannelQueryParams
|
|
): Promise<UserChannelAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<UserChannelAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/users/${userId}/analytics/channels`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
// ============= Event Analytics (특정 이벤트 분석) =============
|
|
|
|
/**
|
|
* 이벤트 성과 대시보드 조회
|
|
*/
|
|
getEventAnalytics: async (
|
|
eventId: string,
|
|
params?: AnalyticsQueryParams
|
|
): Promise<AnalyticsDashboardResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<AnalyticsDashboardResponse>>(
|
|
`/api/${API_VERSION}/events/${eventId}/analytics`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 이벤트 시간대별 참여 추이
|
|
*/
|
|
getEventTimelineAnalytics: async (
|
|
eventId: string,
|
|
params?: TimelineQueryParams
|
|
): Promise<TimelineAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<TimelineAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/events/${eventId}/analytics/timeline`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 이벤트 ROI 상세 분석
|
|
*/
|
|
getEventRoiAnalytics: async (
|
|
eventId: string,
|
|
params?: RoiQueryParams
|
|
): Promise<RoiAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<RoiAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/events/${eventId}/analytics/roi`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
|
|
/**
|
|
* 이벤트 채널별 성과 분석
|
|
*/
|
|
getEventChannelAnalytics: async (
|
|
eventId: string,
|
|
params?: ChannelQueryParams
|
|
): Promise<ChannelAnalyticsResponse> => {
|
|
const response = await analyticsClient.get<ApiResponse<ChannelAnalyticsResponse>>(
|
|
`/api/${API_VERSION}/events/${eventId}/analytics/channels`,
|
|
{ params }
|
|
);
|
|
return response.data.data;
|
|
},
|
|
};
|
|
|
|
export default analyticsApi;
|