- Add paginated activity logs API with filters (date, module, action, keyword) - Add ActivityLogsPage with table, filters, and detail modal - Add markdown rendering support for AI chat messages - Remove prototype placeholder content from chat sidebar Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
/**
|
|
* 运营日志 API
|
|
*
|
|
* @date 2026-01-28
|
|
*/
|
|
|
|
import apiClient from '../../../common/api/axios'
|
|
|
|
// ==================== 类型定义 ====================
|
|
|
|
export interface ActivityLog {
|
|
id: string
|
|
createdAt: string
|
|
tenantId: string
|
|
tenantName: string | null
|
|
userId: string
|
|
userName: string | null
|
|
module: string
|
|
feature: string
|
|
action: string
|
|
info: string | null
|
|
}
|
|
|
|
export interface Pagination {
|
|
page: number
|
|
pageSize: number
|
|
total: number
|
|
totalPages: number
|
|
}
|
|
|
|
export interface ActivityLogsResponse {
|
|
success: boolean
|
|
data: ActivityLog[]
|
|
pagination: Pagination
|
|
}
|
|
|
|
export interface ActivityLogsParams {
|
|
page?: number
|
|
pageSize?: number
|
|
startDate?: string
|
|
endDate?: string
|
|
module?: string
|
|
action?: string
|
|
keyword?: string
|
|
}
|
|
|
|
// ==================== API 函数 ====================
|
|
|
|
/**
|
|
* 获取运营日志列表(分页)
|
|
*/
|
|
export async function fetchActivityLogs(params: ActivityLogsParams = {}): Promise<{
|
|
data: ActivityLog[]
|
|
pagination: Pagination
|
|
}> {
|
|
const queryParams = new URLSearchParams()
|
|
|
|
if (params.page) queryParams.append('page', String(params.page))
|
|
if (params.pageSize) queryParams.append('pageSize', String(params.pageSize))
|
|
if (params.startDate) queryParams.append('startDate', params.startDate)
|
|
if (params.endDate) queryParams.append('endDate', params.endDate)
|
|
if (params.module) queryParams.append('module', params.module)
|
|
if (params.action) queryParams.append('action', params.action)
|
|
if (params.keyword) queryParams.append('keyword', params.keyword)
|
|
|
|
const url = `/api/admin/stats/logs${queryParams.toString() ? '?' + queryParams.toString() : ''}`
|
|
const res = await apiClient.get<ActivityLogsResponse>(url)
|
|
|
|
return {
|
|
data: res.data.data,
|
|
pagination: res.data.pagination,
|
|
}
|
|
}
|