MaxKB/ui/src/api/application/application.ts
2025-07-10 17:10:43 +08:00

352 lines
8.0 KiB
TypeScript

import { Result } from '@/request/Result'
import { get, post, postStream, del, put, request, download, exportFile } from '@/request/index'
import type { pageRequest } from '@/api/type/common'
import type { ApplicationFormType } from '@/api/type/application'
import { type Ref } from 'vue'
import useStore from '@/stores'
const prefix: any = { _value: '/workspace/' }
Object.defineProperty(prefix, 'value', {
get: function () {
const { user } = useStore()
return this._value + user.getWorkspaceId() + '/application'
},
})
/**
* 获取全部应用
* @param 参数
*/
const getAllApplication: (param?: any, loading?: Ref<boolean>) => Promise<Result<any[]>> = (
param,
loading,
) => {
return get(`${prefix.value}`, param, loading)
}
/**
* 获取分页应用
* param {
"name": "string",
}
*/
const getApplication: (
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (page, param, loading) => {
return get(`${prefix.value}/${page.current_page}/${page.page_size}`, param, loading)
}
/**
* 创建应用
* @param 参数
*/
const postApplication: (
data: ApplicationFormType,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (data, loading) => {
return post(`${prefix.value}`, data, undefined, loading)
}
/**
* 修改应用
* @param 参数
*/
const putApplication: (
application_id: string,
data: ApplicationFormType,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return put(`${prefix.value}/${application_id}`, data, undefined, loading)
}
/**
* 删除应用
* @param 参数 application_id
*/
const delApplication: (
application_id: string,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (application_id, loading) => {
return del(`${prefix.value}/${application_id}`, undefined, {}, loading)
}
/**
* 应用详情
* @param 参数 application_id
*/
const getApplicationDetail: (
application_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, loading) => {
return get(`${prefix.value}/${application_id}`, undefined, loading)
}
/**
* 获取AccessToken
* @param 参数 application_id
*/
const getAccessToken: (application_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
application_id,
loading,
) => {
return get(`${prefix.value}/${application_id}/access_token`, undefined, loading)
}
/**
* 获取应用设置
* @param application_id 应用id
* @param loading 加载器
* @returns
*/
const getApplicationSetting: (
application_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, loading) => {
return get(`${prefix.value}/${application_id}/setting`, undefined, loading)
}
/**
* 修改AccessToken
* @param 参数 application_id
* data {
* "is_active": true
* }
*/
const putAccessToken: (
application_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return put(`${prefix.value}/${application_id}/access_token`, data, undefined, loading)
}
/**
* 导出应用
*/
const exportApplication = (
application_id: string,
application_name: string,
loading?: Ref<boolean>,
) => {
return exportFile(
application_name + '.mk',
`${prefix.value}/${application_id}/export`,
undefined,
loading,
)
}
/**
* 导入应用
*/
const importApplication: (data: any, loading?: Ref<boolean>) => Promise<Result<any>> = (
data,
loading,
) => {
return post(`${prefix.value}/import`, data, undefined, loading)
}
/**
* 统计
* @param 参数 application_id, data
*/
const getStatistics: (
application_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return get(`${prefix.value}/${application_id}/application_stats`, data, loading)
}
/**
* 打开调试对话id
* @param application_id 应用id
* @param loading 加载器
* @returns
*/
const open: (application_id: string, loading?: Ref<boolean>) => Promise<Result<string>> = (
application_id,
loading,
) => {
return get(`${prefix.value}/${application_id}/open`, {}, loading)
}
/**
* 对话
* @param 参数
* chat_id: string
* data
*/
const chat: (chat_id: string, data: any) => Promise<any> = (chat_id, data) => {
const prefix = (window.MaxKB?.prefix ? window.MaxKB?.prefix : '/admin') + '/api'
return postStream(`${prefix}/chat_message/${chat_id}`, data)
}
/**
* 获取对话用户认证类型
* @param loading 加载器
* @returns
*/
const getChatUserAuthType: (loading?: Ref<boolean>) => Promise<any> = (loading) => {
return get(`/chat_user/auth/types`, {}, loading)
}
/**
* 获取平台状态
*/
const getPlatformStatus: (application_id: string) => Promise<Result<any>> = (application_id) => {
return get(`${prefix.value}/${application_id}/platform/status`)
}
/**
* 更新平台状态
*/
const updatePlatformStatus: (application_id: string, data: any) => Promise<Result<any>> = (
application_id,
data,
) => {
return post(`${prefix.value}/${application_id}/platform/status`, data)
}
/**
* 获取平台配置
*/
const getPlatformConfig: (application_id: string, type: string) => Promise<Result<any>> = (
application_id,
type,
) => {
return get(`${prefix.value}/${application_id}/platform/${type}`)
}
/**
* 更新平台配置
*/
const updatePlatformConfig: (
application_id: string,
type: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, type, data, loading) => {
return post(`${prefix.value}/${application_id}/platform/${type}`, data, undefined, loading)
}
/**
* 应用发布
* @param application_id
* @param loading
* @returns
*/
const publish: (
application_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return put(`${prefix.value}/${application_id}/publish`, data, {}, loading)
}
/**
*
* @param application_id
* @param data
* @param loading
* @returns
*/
const playDemoText: (application_id: string, data: any, loading?: Ref<boolean>) => Promise<any> = (
application_id,
data,
loading,
) => {
return download(
`${prefix.value}/${application_id}/play_demo_text`,
'post',
data,
undefined,
loading,
)
}
/**
* 文本转语音
*/
const postTextToSpeech: (
application_id: String,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return download(
`${prefix.value}/${application_id}/text_to_speech`,
'post',
data,
undefined,
loading,
)
}
/**
* 语音转文本
*/
const speechToText: (
application_id: String,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, data, loading) => {
return post(`${prefix.value}/${application_id}/speech_to_text`, data, undefined, loading)
}
/**
* mcp 节点
*/
const getMcpTools: (
application_id: String,
mcp_servers: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (application_id, mcp_servers, loading) => {
return post(`${prefix.value}/${application_id}/mcp_tools`, { mcp_servers }, {}, loading)
}
/**
* 上传文件
* @param 参数 file:file
*/
const postUploadFile: (
file: any,
sourceId: string,
resourceType:
| 'KNOWLEDGE'
| 'APPLICATION'
| 'TOOL'
| 'DOCUMENT'
| 'CHAT'
| 'TEMPORARY_30_MINUTE'
| 'TEMPORARY_120_MINUTE'
| 'TEMPORARY_1_DAY',
loading?: Ref<boolean>,
) => Promise<Result<any>> = (file, sourceId, resourceType, loading) => {
const fd = new FormData()
fd.append('file', file)
fd.append('source_id', sourceId)
fd.append('source_type', resourceType)
return post(`/oss/file`, fd, undefined, loading)
}
export default {
getAllApplication,
getApplication,
postApplication,
putApplication,
delApplication,
getApplicationDetail,
getAccessToken,
putAccessToken,
exportApplication,
importApplication,
getStatistics,
open,
chat,
getChatUserAuthType,
getApplicationSetting,
getPlatformStatus,
updatePlatformStatus,
getPlatformConfig,
publish,
updatePlatformConfig,
playDemoText,
postTextToSpeech,
speechToText,
getMcpTools,
postUploadFile,
}