feat: 增强管理端工作台用户活跃榜能力

- 新增用户活跃榜接口、筛选与导出能力

- 支持按智能体过滤排行榜并补充前后端测试
This commit is contained in:
2026-05-10 17:06:22 +08:00
parent 8d07b306e5
commit 516d43ce7d
14 changed files with 868 additions and 126 deletions

View File

@@ -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}`;
}