feat: add frontend analytics tracking

This commit is contained in:
2026-05-17 10:18:56 +08:00
parent 3decff526a
commit 1016111d19
11 changed files with 583 additions and 10 deletions
+79
View File
@@ -0,0 +1,79 @@
import request from '@/utils/request'
export interface AnalyticsOverview {
pv: number
uv: number
eventCount: number
activeUsers: number
ttsRequests: number
ttsPlays: number
avgStayMs: number
}
export interface AnalyticsTrendItem {
bucket: string
eventName: string
count: number
users: number
}
export interface AnalyticsTopEvent {
eventName: string
eventType: string
count: number
users: number
}
export interface AnalyticsFunnelItem {
eventName: string
label: string
users: number
conversionRate: number
}
export interface AnalyticsPreferenceItem {
dimension: string
value: string
count: number
users: number
}
export interface AnalyticsUserItem {
userId?: string
anonymousId?: string
eventCount: number
lastActiveTime?: string
}
export interface AnalyticsQuery {
startDate?: string
endDate?: string
granularity?: 'day' | 'hour'
eventNames?: string[]
eventType?: string
limit?: number
}
export function getAnalyticsOverview(params: AnalyticsQuery = {}) {
return request<AnalyticsOverview>({ url: '/admin/analytics/overview', method: 'get', params })
}
export function getAnalyticsTrend(params: AnalyticsQuery = {}) {
return request<AnalyticsTrendItem[]>({ url: '/admin/analytics/trend', method: 'get', params })
}
export function getAnalyticsTopEvents(params: AnalyticsQuery = {}) {
return request<AnalyticsTopEvent[]>({ url: '/admin/analytics/top-events', method: 'get', params })
}
export function getAnalyticsFunnel(params: AnalyticsQuery = {}) {
return request<AnalyticsFunnelItem[]>({ url: '/admin/analytics/funnel', method: 'get', params })
}
export function getAnalyticsPreferences(params: AnalyticsQuery = {}) {
return request<AnalyticsPreferenceItem[]>({ url: '/admin/analytics/preferences', method: 'get', params })
}
export function getAnalyticsUsers(params: AnalyticsQuery = {}) {
return request<AnalyticsUserItem[]>({ url: '/admin/analytics/users', method: 'get', params })
}