feat: 增强管理端工作台用户活跃榜能力
- 新增用户活跃榜接口、筛选与导出能力 - 支持按智能体过滤排行榜并补充前后端测试
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { requestClient } from '#/api/request';
|
||||
import { api, requestClient } from '#/api/request';
|
||||
|
||||
export type DashboardRange = '7d' | '30d' | 'custom' | 'today';
|
||||
|
||||
@@ -8,6 +8,10 @@ export interface DashboardOverviewQuery {
|
||||
startDate?: string;
|
||||
}
|
||||
|
||||
export interface DashboardUserRankQuery extends DashboardOverviewQuery {
|
||||
assistantId?: string;
|
||||
}
|
||||
|
||||
export interface DashboardSummary {
|
||||
activeUserTotal: number;
|
||||
activeAssistantTotal: number;
|
||||
@@ -63,9 +67,10 @@ export interface DashboardDistributionItem {
|
||||
}
|
||||
|
||||
export interface DashboardUserRankItem {
|
||||
assistantTotal: number;
|
||||
label: string;
|
||||
loginName?: string;
|
||||
messageTotal: number;
|
||||
nickname?: string;
|
||||
sessionTotal: number;
|
||||
userId?: number | string;
|
||||
}
|
||||
@@ -78,7 +83,6 @@ export interface DashboardOverviewResponse {
|
||||
summary: DashboardSummary;
|
||||
trends: DashboardTrendItem[];
|
||||
updatedAt: string;
|
||||
userRanks: DashboardUserRankItem[];
|
||||
}
|
||||
|
||||
export async function getDashboardOverview(params: DashboardOverviewQuery) {
|
||||
@@ -89,3 +93,29 @@ export async function getDashboardOverview(params: DashboardOverviewQuery) {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function getDashboardUserRanks(params: DashboardUserRankQuery) {
|
||||
return requestClient.get<DashboardUserRankItem[]>(
|
||||
'/api/v1/dashboard/user-ranks',
|
||||
{
|
||||
params,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function exportDashboardUserRanks(params: DashboardUserRankQuery) {
|
||||
return api.download(buildDashboardUrl('/api/v1/dashboard/user-ranks/export', params));
|
||||
}
|
||||
|
||||
function buildDashboardUrl(url: string, params?: Record<string, any>) {
|
||||
const base =
|
||||
typeof window === 'undefined' ? 'http://localhost' : window.location.origin;
|
||||
const target = new URL(url, base);
|
||||
Object.entries(params || {}).forEach(([key, value]) => {
|
||||
if (value === undefined || value === null || value === '') {
|
||||
return;
|
||||
}
|
||||
target.searchParams.set(key, String(value));
|
||||
});
|
||||
return `${target.pathname}${target.search}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user