67 lines
1.6 KiB
TypeScript
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' })
|
|
}
|