feat: AI虚拟用户新闻互动系统 v1.3.0 初始提交
- 虚拟用户管理(昵称/头像/性别/简介/邮箱同步到目标平台) - AI互动调度(点赞/收藏/评论/转发) - 日志时间改为北京时间 - 评论达上限后继续执行点赞收藏转发 - 一键登出全部功能 - 浅色主题UI
This commit is contained in:
76
frontend/src/api/index.js
Normal file
76
frontend/src/api/index.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 30000,
|
||||
})
|
||||
|
||||
request.interceptors.response.use(
|
||||
res => {
|
||||
const data = res.data
|
||||
if (data.code && data.code !== 200) {
|
||||
ElMessage.error(data.message || '请求失败')
|
||||
return Promise.reject(new Error(data.message))
|
||||
}
|
||||
return data
|
||||
},
|
||||
err => {
|
||||
const msg = err.response?.data?.detail || err.response?.data?.message || err.message || '网络错误'
|
||||
ElMessage.error(msg)
|
||||
return Promise.reject(err)
|
||||
}
|
||||
)
|
||||
|
||||
// Dashboard
|
||||
export const getDashboard = () => request.get('/dashboard')
|
||||
export const getTokenTrend = (days = 30) => request.get('/dashboard/token-trend', { params: { days } })
|
||||
export const getMonthlyTokenTrend = () => request.get('/dashboard/monthly-token-trend')
|
||||
|
||||
// Users
|
||||
export const getUsers = (params) => request.get('/users', { params })
|
||||
export const createUser = (data) => request.post('/users', data)
|
||||
export const updateUser = (id, data) => request.put(`/users/${id}`, data)
|
||||
export const deleteUser = (id) => request.delete(`/users/${id}`)
|
||||
export const batchUserAction = (data) => request.post('/users/batch/action', data)
|
||||
export const loginUser = (id) => request.post(`/users/${id}/login`)
|
||||
export const logoutUser = (id) => request.post(`/users/${id}/logout`)
|
||||
export const generatePersonality = (id) => request.post(`/users/${id}/personality/generate`)
|
||||
export const updatePersonality = (id, data) => request.put(`/users/${id}/personality`, data)
|
||||
export const importUsers = (formData) => request.post('/users/excel/import', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' }
|
||||
})
|
||||
export const downloadTemplate = () => request.get('/users/excel/template', { responseType: 'blob' })
|
||||
export const exportUsers = () => request.get('/users/excel/export', { responseType: 'blob' })
|
||||
export const deduplicateUsers = () => request.post('/users/deduplicate')
|
||||
export const clearAllUsers = () => request.post('/users/clear-all')
|
||||
export const loginAllUsers = () => request.post('/users/login-all')
|
||||
export const syncAllProfiles = () => request.post('/users/sync-all-profiles')
|
||||
export const cancelInteraction = (id) => request.post(`/interactions/${id}/cancel`)
|
||||
export const runInteractionNow = () => request.post('/system/interaction/run-now')
|
||||
|
||||
// Interactions
|
||||
export const getInteractions = (params) => request.get('/interactions', { params })
|
||||
export const retryInteraction = (id) => request.post(`/interactions/${id}/retry`)
|
||||
export const exportInteractions = (params) => request.get('/interactions/export', { params, responseType: 'blob' })
|
||||
|
||||
// AI Models
|
||||
export const getAIModels = () => request.get('/ai-models')
|
||||
export const createAIModel = (data) => request.post('/ai-models', data)
|
||||
export const updateAIModel = (id, data) => request.put(`/ai-models/${id}`, data)
|
||||
export const deleteAIModel = (id) => request.delete(`/ai-models/${id}`)
|
||||
export const testAIModel = (data) => request.post('/ai-models/test', data)
|
||||
|
||||
// System
|
||||
export const getSystemConfigs = () => request.get('/system/configs')
|
||||
export const updateSystemConfigs = (data) => request.put('/system/configs', data)
|
||||
export const toggleScheduler = (enabled) => request.post('/system/scheduler/toggle', { enabled })
|
||||
export const resetAllSessions = () => request.post('/system/sessions/reset-all')
|
||||
|
||||
// Logs
|
||||
export const getLoginLogs = (params) => request.get('/logs/login', { params })
|
||||
export const getLogFiles = () => request.get('/logs/files')
|
||||
export const tailLogFile = (filename, lines = 100) => request.get(`/logs/files/${filename}/tail`, { params: { lines } })
|
||||
|
||||
export default request
|
||||
export const uploadAvatar = (userId, formData) => request.post(`/users/${userId}/upload-avatar`, formData, { headers: { "Content-Type": "multipart/form-data" } })
|
||||
Reference in New Issue
Block a user