
- 新增AI知识库管理功能模块 - 实现知识库的增删改查功能 - 实现文档管理(文本/文件/链接) - 实现向量化功能和测试 - 支持卡片式布局展示 - 完整的响应式设计 - 修复所有TypeScript类型错误 - 添加依赖:marked@^16.4.0, less@^4.2.2 - 打包测试通过 主要文件: - src/views/teacher/ai-knowledge-naive-ui/ - AI知识库管理模块 - docs/ - 相关API文档 - package.json - 新增依赖配置
194 lines
4.2 KiB
TypeScript
194 lines
4.2 KiB
TypeScript
import { defHttp } from '../utils/http'
|
|
import type {
|
|
KnowledgeBase,
|
|
KnowledgeDoc,
|
|
KnowledgeSearchForm,
|
|
KnowledgeDocSearchForm,
|
|
EmbeddingHitResult,
|
|
RebuildVectorParams
|
|
} from '../types/knowledge'
|
|
|
|
// API 端点枚举
|
|
enum Api {
|
|
// 知识库管理
|
|
list = '/airag/knowledge/list',
|
|
save = '/airag/knowledge/add',
|
|
delete = '/airag/knowledge/delete',
|
|
queryById = '/airag/knowledge/queryById',
|
|
edit = '/airag/knowledge/edit',
|
|
rebuild = '/airag/knowledge/rebuild',
|
|
|
|
// 知识库文档
|
|
knowledgeDocList = '/airag/knowledge/doc/list',
|
|
knowledgeEditDoc = '/airag/knowledge/doc/edit',
|
|
knowledgeDeleteBatchDoc = '/airag/knowledge/doc/deleteBatch',
|
|
knowledgeDeleteAllDoc = '/airag/knowledge/doc/deleteAll',
|
|
knowledgeRebuildDoc = '/airag/knowledge/doc/rebuild',
|
|
knowledgeEmbeddingHitTest = '/airag/knowledge/embedding/hitTest',
|
|
}
|
|
|
|
/**
|
|
* 查询知识库列表
|
|
* @param params 查询参数
|
|
*/
|
|
export const getKnowledgeList = (params: KnowledgeSearchForm & { pageNo?: number; pageSize?: number }) => {
|
|
return defHttp.get<{
|
|
records: KnowledgeBase[]
|
|
total: number
|
|
size: number
|
|
current: number
|
|
}>({
|
|
url: Api.list,
|
|
params
|
|
}, { isTransformResponse: false })
|
|
}
|
|
|
|
/**
|
|
* 根据ID查询知识库详情
|
|
* @param params 查询参数
|
|
*/
|
|
export const getKnowledgeById = (params: { id: string }) => {
|
|
return defHttp.get<KnowledgeBase>({
|
|
url: Api.queryById,
|
|
params
|
|
}, { isTransformResponse: false })
|
|
}
|
|
|
|
/**
|
|
* 新增知识库
|
|
* @param params 知识库数据
|
|
*/
|
|
export const createKnowledge = (params: Omit<KnowledgeBase, 'id'>) => {
|
|
return defHttp.post<KnowledgeBase>({
|
|
url: Api.save,
|
|
params
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 编辑知识库
|
|
* @param params 知识库数据
|
|
*/
|
|
export const updateKnowledge = (params: KnowledgeBase) => {
|
|
return defHttp.put<KnowledgeBase>({
|
|
url: Api.edit,
|
|
params
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 删除知识库
|
|
* @param params 删除参数
|
|
*/
|
|
export const deleteKnowledge = (params: { id: string }) => {
|
|
return defHttp.delete({
|
|
url: Api.delete,
|
|
params
|
|
}, { joinParamsToUrl: true })
|
|
}
|
|
|
|
/**
|
|
* 知识库向量化
|
|
* @param params 向量化参数
|
|
*/
|
|
export const rebuildKnowledgeVector = (params: RebuildVectorParams) => {
|
|
return defHttp.put({
|
|
url: Api.rebuild,
|
|
params,
|
|
timeout: 2 * 60 * 1000
|
|
}, {
|
|
joinParamsToUrl: true,
|
|
isTransformResponse: false
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 查询知识库文档列表
|
|
* @param params 查询参数
|
|
*/
|
|
export const getKnowledgeDocList = (params: KnowledgeDocSearchForm & {
|
|
knowledgeId: string
|
|
pageNo?: number
|
|
pageSize?: number
|
|
}) => {
|
|
return defHttp.get<{
|
|
records: KnowledgeDoc[]
|
|
total: number
|
|
size: number
|
|
current: number
|
|
}>({
|
|
url: Api.knowledgeDocList,
|
|
params
|
|
}, { isTransformResponse: false })
|
|
}
|
|
|
|
/**
|
|
* 新增/编辑知识库文档
|
|
* @param params 文档数据
|
|
*/
|
|
export const saveKnowledgeDoc = (params: Partial<KnowledgeDoc>) => {
|
|
return defHttp.post<KnowledgeDoc>({
|
|
url: Api.knowledgeEditDoc,
|
|
params
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 批量删除文档
|
|
* @param params 删除参数
|
|
*/
|
|
export const batchDeleteKnowledgeDocs = (params: { ids: string }) => {
|
|
return defHttp.delete({
|
|
url: Api.knowledgeDeleteBatchDoc,
|
|
params
|
|
}, { joinParamsToUrl: true })
|
|
}
|
|
|
|
/**
|
|
* 清空所有文档
|
|
* @param knowledgeId 知识库ID
|
|
*/
|
|
export const deleteAllKnowledgeDocs = (knowledgeId: string) => {
|
|
return defHttp.delete({
|
|
url: Api.knowledgeDeleteAllDoc,
|
|
params: { knowledgeId }
|
|
}, { joinParamsToUrl: true })
|
|
}
|
|
|
|
/**
|
|
* 文档向量化
|
|
* @param params 向量化参数
|
|
*/
|
|
export const rebuildDocVector = (params: { docIds: string }) => {
|
|
return defHttp.put({
|
|
url: Api.knowledgeRebuildDoc,
|
|
params
|
|
}, { joinParamsToUrl: true })
|
|
}
|
|
|
|
/**
|
|
* 向量化命中测试
|
|
* @param params 测试参数
|
|
*/
|
|
export const embeddingHitTest = (params: {
|
|
knowledgeId: string
|
|
query: string
|
|
topK?: number
|
|
}) => {
|
|
return defHttp.post<EmbeddingHitResult[]>({
|
|
url: Api.knowledgeEmbeddingHitTest,
|
|
params
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 批量查询知识库
|
|
* @param params 查询参数
|
|
*/
|
|
export const batchQueryKnowledgeById = (params: { ids: string }) => {
|
|
return defHttp.get<KnowledgeBase[]>({
|
|
url: '/airag/knowledge/query/batch/byId',
|
|
params
|
|
}, { isTransformResponse: false })
|
|
}
|