Files
ReelShortWeb/src/api/admin/dashboard.ts
T

67 lines
1.6 KiB
TypeScript

// Author: fruit.com.cn
import request from '@/axios'
/** 指标口径见后端 DashboardService 注释与 docs/api-phase1.md「2.8 数据看板」 */
export interface DashboardOverview {
generatedAt: string
user: Record<string, number>
content: Record<string, number>
playback: Record<string, number>
revenue: Record<string, number>
cost: Record<string, number | null>
notes: string[]
}
export interface TranscodeBoard {
generatedAt: string
queue: Record<string, number>
failedTasks: {
id: number
episodeId: number
status: string
retryCount: number
errorMsg: string
createdAt?: string
}[]
notes: string[]
}
/** 近 7 天每日趋势(给折线图用)。 */
export interface DashboardTrend {
dates: string[]
newUsers: number[]
playEvents: number[]
newTranscodes: number[]
transcodeSuccess: number[]
}
/** 分布项(给饼图用)。 */
export interface DistributionItem {
label: string
value: number
}
export interface DashboardDistribution {
dramaStatus: Record<string, number>
transcodeStatus: Record<string, number>
episodeMedia: Record<string, number>
pendingModeration: DistributionItem[]
}
export const getDashboardOverviewApi = () => {
return request.get<DashboardOverview>({ url: '/admin/dashboard/overview' })
}
export const getTranscodeBoardApi = () => {
return request.get<TranscodeBoard>({ url: '/admin/dashboard/transcode' })
}
export const getDashboardTrendApi = () => {
return request.get<DashboardTrend>({ url: '/admin/dashboard/trend' })
}
export const getDashboardDistributionApi = () => {
return request.get<DashboardDistribution>({ url: '/admin/dashboard/distribution' })
}