Files
AIclinicalresearch/frontend-v2/src/pages/admin/api/activityApi.ts
HaHafeng 4c2c9b437b feat(admin): Add activity logs page and fix AI chat markdown rendering
- 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>
2026-02-01 21:04:21 +08:00

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,
}
}