369 lines
9.0 KiB
JavaScript
369 lines
9.0 KiB
JavaScript
import { apiGet, apiPost, apiPut, apiDelete } from './base'
|
|
import { useUserStore } from '@/stores/user'
|
|
|
|
/**
|
|
* 管理员API模块
|
|
* 只有管理员和超级管理员可以访问的API
|
|
* 权限要求: admin 或 superadmin
|
|
*
|
|
* 注意: 请确保在使用这些API之前检查用户是否具有管理员权限
|
|
*/
|
|
|
|
// 检查当前用户是否有管理员权限
|
|
const checkAdminPermission = () => {
|
|
const userStore = useUserStore()
|
|
if (!userStore.isAdmin) {
|
|
throw new Error('需要管理员权限')
|
|
}
|
|
return true
|
|
}
|
|
|
|
// 检查当前用户是否有超级管理员权限
|
|
const checkSuperAdminPermission = () => {
|
|
const userStore = useUserStore()
|
|
if (!userStore.isSuperAdmin) {
|
|
throw new Error('需要超级管理员权限')
|
|
}
|
|
return true
|
|
}
|
|
|
|
// 用户管理API
|
|
export const userManagementApi = {
|
|
/**
|
|
* 获取用户列表
|
|
* @returns {Promise} - 用户列表
|
|
*/
|
|
getUsers: async () => {
|
|
checkAdminPermission()
|
|
return apiGet('/api/auth/users', {}, true)
|
|
},
|
|
|
|
/**
|
|
* 创建新用户
|
|
* @param {Object} userData - 用户数据
|
|
* @returns {Promise} - 创建结果
|
|
*/
|
|
createUser: async (userData) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/auth/users', userData, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 更新用户
|
|
* @param {number} userId - 用户ID
|
|
* @param {Object} userData - 用户数据
|
|
* @returns {Promise} - 更新结果
|
|
*/
|
|
updateUser: async (userId, userData) => {
|
|
checkAdminPermission()
|
|
return apiPut(`/api/auth/users/${userId}`, userData, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 删除用户
|
|
* @param {number} userId - 用户ID
|
|
* @returns {Promise} - 删除结果
|
|
*/
|
|
deleteUser: async (userId) => {
|
|
checkAdminPermission()
|
|
return apiDelete(`/api/auth/users/${userId}`, {}, true)
|
|
},
|
|
}
|
|
|
|
// 知识库管理API
|
|
export const knowledgeBaseApi = {
|
|
/**
|
|
* 获取所有知识库
|
|
* @returns {Promise} - 知识库列表
|
|
*/
|
|
getDatabases: async () => {
|
|
checkAdminPermission()
|
|
return apiGet('/api/data/', {}, true)
|
|
},
|
|
|
|
/**
|
|
* 创建知识库
|
|
* @param {Object} databaseData - 知识库数据
|
|
* @returns {Promise} - 创建结果
|
|
*/
|
|
createDatabase: async (databaseData) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/', databaseData, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 获取知识库详情
|
|
* @param {string} dbId - 知识库ID
|
|
* @returns {Promise} - 知识库详情
|
|
*/
|
|
getDatabaseInfo: async (dbId) => {
|
|
checkAdminPermission()
|
|
return apiGet(`/api/data/info?db_id=${dbId}`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 删除知识库
|
|
* @param {string} dbId - 知识库ID
|
|
* @returns {Promise} - 删除结果
|
|
*/
|
|
deleteDatabase: async (dbId) => {
|
|
checkAdminPermission()
|
|
return apiDelete(`/api/data/?db_id=${dbId}`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 上传文件到知识库
|
|
* @param {FormData} formData - 包含文件的FormData
|
|
* @param {string} dbId - 知识库ID
|
|
* @returns {Promise} - 上传结果
|
|
*/
|
|
uploadFile: async (formData, dbId) => {
|
|
checkAdminPermission()
|
|
const userStore = useUserStore()
|
|
const authHeaders = userStore.getAuthHeaders()
|
|
|
|
return fetch(`/api/data/upload?db_id=${dbId}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
...authHeaders
|
|
},
|
|
body: formData
|
|
}).then(res => {
|
|
if (!res.ok) {
|
|
throw new Error(`上传失败: ${res.status} ${res.statusText}`)
|
|
}
|
|
return res.json()
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 删除文件
|
|
* @param {string} dbId - 知识库ID
|
|
* @param {string} fileId - 文件ID
|
|
* @returns {Promise} - 删除结果
|
|
*/
|
|
deleteFile: async (dbId, fileId) => {
|
|
checkAdminPermission()
|
|
return apiDelete('/api/data/document', {
|
|
body: JSON.stringify({ db_id: dbId, file_id: fileId })
|
|
}, true)
|
|
},
|
|
|
|
/**
|
|
* 将文件分块
|
|
* @param {Object} data - 分块参数
|
|
* @returns {Promise} - 分块结果
|
|
*/
|
|
fileToChunk: async (data) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/file-to-chunk', data, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 将分块添加到数据库
|
|
* @param {Object} data - 包含db_id和file_chunks的数据
|
|
* @returns {Promise} - 添加结果
|
|
*/
|
|
addByChunks: async (data) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/add-by-chunks', data, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 查询测试
|
|
* @param {Object} data - 查询参数
|
|
* @returns {Promise} - 查询结果
|
|
*/
|
|
queryTest: async (data) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/query-test', data, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 获取文档详情
|
|
* @param {string} dbId - 知识库ID
|
|
* @param {string} fileId - 文件ID
|
|
* @returns {Promise} - 文档详情
|
|
*/
|
|
getDocumentDetail: async (dbId, fileId) => {
|
|
checkAdminPermission()
|
|
return apiGet(`/api/data/document?db_id=${dbId}&file_id=${fileId}`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 将URL转换为分块
|
|
* @param {Object} data - 分块参数
|
|
* @returns {Promise} - 分块结果
|
|
*/
|
|
urlToChunk: async (data) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/url-to-chunk', data, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 更新知识库信息
|
|
* @param {string} dbId - 知识库ID
|
|
* @param {Object} data - 包含name和description的数据对象
|
|
* @returns {Promise} - 更新结果
|
|
*/
|
|
updateDatabaseInfo: async (dbId, data) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/update', {
|
|
db_id: dbId,
|
|
...data
|
|
}, {}, true)
|
|
},
|
|
}
|
|
|
|
// 图数据库管理API
|
|
export const graphApi = {
|
|
/**
|
|
* 获取图数据库状态
|
|
* @returns {Promise} - 图数据库状态
|
|
*/
|
|
getGraphInfo: async () => {
|
|
checkAdminPermission()
|
|
return apiGet('/api/data/graph', {}, true)
|
|
},
|
|
|
|
/**
|
|
* 获取节点
|
|
* @param {string} dbName - 图数据库名称
|
|
* @param {number} num - 节点数量
|
|
* @returns {Promise} - 节点数据
|
|
*/
|
|
getNodes: async (dbName, num) => {
|
|
checkAdminPermission()
|
|
return apiGet(`/api/data/graph/nodes?kgdb_name=${dbName}&num=${num}`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 查询实体
|
|
* @param {string} entityName - 实体名称
|
|
* @returns {Promise} - 查询结果
|
|
*/
|
|
queryNode: async (entityName) => {
|
|
checkAdminPermission()
|
|
return apiGet(`/api/data/graph/node?entity_name=${entityName}`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 添加JSONL文件到图数据库
|
|
* @param {string} filePath - 文件路径
|
|
* @returns {Promise} - 添加结果
|
|
*/
|
|
addByJsonl: async (filePath) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/graph/add-by-jsonl', { file_path: filePath }, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 为未索引节点添加索引
|
|
* @param {string} dbName - 图数据库名称
|
|
* @returns {Promise} - 索引结果
|
|
*/
|
|
indexNodes: async (dbName) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/data/graph/index-nodes', { kgdb_name: dbName }, {}, true)
|
|
},
|
|
}
|
|
|
|
// 系统配置API
|
|
export const systemConfigApi = {
|
|
/**
|
|
* 设置默认智能体
|
|
* @param {string} agentId - 智能体ID
|
|
* @returns {Promise} - 设置结果
|
|
*/
|
|
setDefaultAgent: async (agentId) => {
|
|
checkAdminPermission()
|
|
return apiPost('/api/chat/set_default_agent', { agent_id: agentId }, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 获取系统配置
|
|
* @returns {Promise} - 系统配置
|
|
*/
|
|
getSystemConfig: async () => {
|
|
checkAdminPermission()
|
|
return apiGet('/api/config', {}, true)
|
|
},
|
|
|
|
/**
|
|
* 获取智能体配置
|
|
* @param {string} agentId - 智能体ID
|
|
* @returns {Promise} - 智能体配置
|
|
*/
|
|
getAgentConfig: async (agentId) => {
|
|
checkAdminPermission()
|
|
return apiGet(`/api/chat/agent/${agentId}/config`, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 保存智能体配置
|
|
* @param {string} agentId - 智能体ID
|
|
* @param {Object} config - 配置内容
|
|
* @returns {Promise} - 保存结果
|
|
*/
|
|
saveAgentConfig: async (agentId, config) => {
|
|
checkAdminPermission()
|
|
return apiPost(`/api/chat/agent/${agentId}/config`, config, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 更新某个配置
|
|
* @param {Object} items - 配置项
|
|
* @returns {Promise} - 更新结果
|
|
*/
|
|
updateConfigItems: async (items) => {
|
|
checkAdminPermission()
|
|
console.log("updateConfigItems", items)
|
|
return apiPost('/api/config/update', items, {}, true)
|
|
},
|
|
|
|
/**
|
|
* 重启服务
|
|
* @returns {Promise} - 重启结果
|
|
*/
|
|
restartServer: async () => {
|
|
checkSuperAdminPermission()
|
|
return apiPost('/api/restart', {}, {}, true)
|
|
}
|
|
}
|
|
|
|
// 日志API
|
|
export const logApi = {
|
|
/**
|
|
* 获取系统日志
|
|
* @param {Object} params - 日志查询参数
|
|
* @returns {Promise} - 日志数据
|
|
*/
|
|
getLogs: async (params = {}) => {
|
|
checkAdminPermission()
|
|
return apiGet('/api/log', { params }, true)
|
|
},
|
|
}
|
|
|
|
// 通用admin
|
|
export const adminApi = {
|
|
/**
|
|
* 获取所有智能体
|
|
* @param {Object} params - 查询参数
|
|
* @returns {Promise} - 查询结果
|
|
*/
|
|
adminGet: async (params, url) => {
|
|
checkAdminPermission()
|
|
return apiGet(url, { params }, true)
|
|
},
|
|
|
|
/**
|
|
* 更新某个配置
|
|
* @param {Object} items - 配置项
|
|
* @returns {Promise} - 更新结果
|
|
*/
|
|
adminPost: async (data, url) => {
|
|
checkAdminPermission()
|
|
return apiPost(url, data, {}, true)
|
|
},
|
|
}
|