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 => { const response = await analyticsClient.get>( `/api/${API_VERSION}/users/${userId}/analytics`, { params } ); return response.data.data; }, /** * 사용자 전체 시간대별 참여 추이 */ getUserTimelineAnalytics: async ( userId: string, params?: TimelineQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/users/${userId}/analytics/timeline`, { params } ); return response.data.data; }, /** * 사용자 전체 ROI 상세 분석 */ getUserRoiAnalytics: async ( userId: string, params?: AnalyticsQueryParams & RoiQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/users/${userId}/analytics/roi`, { params } ); return response.data.data; }, /** * 사용자 전체 채널별 성과 분석 */ getUserChannelAnalytics: async ( userId: string, params?: ChannelQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/users/${userId}/analytics/channels`, { params } ); return response.data.data; }, // ============= Event Analytics (특정 이벤트 분석) ============= /** * 이벤트 성과 대시보드 조회 */ getEventAnalytics: async ( eventId: string, params?: AnalyticsQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/events/${eventId}/analytics`, { params } ); return response.data.data; }, /** * 이벤트 시간대별 참여 추이 */ getEventTimelineAnalytics: async ( eventId: string, params?: TimelineQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/events/${eventId}/analytics/timeline`, { params } ); return response.data.data; }, /** * 이벤트 ROI 상세 분석 */ getEventRoiAnalytics: async ( eventId: string, params?: RoiQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/events/${eventId}/analytics/roi`, { params } ); return response.data.data; }, /** * 이벤트 채널별 성과 분석 */ getEventChannelAnalytics: async ( eventId: string, params?: ChannelQueryParams ): Promise => { const response = await analyticsClient.get>( `/api/${API_VERSION}/events/${eventId}/analytics/channels`, { params } ); return response.data.data; }, }; export default analyticsApi;