小张 5455490811 feat: 集成AI知识库管理系统
- 新增AI知识库管理功能模块
- 实现知识库的增删改查功能
- 实现文档管理(文本/文件/链接)
- 实现向量化功能和测试
- 支持卡片式布局展示
- 完整的响应式设计
- 修复所有TypeScript类型错误
- 添加依赖:marked@^16.4.0, less@^4.2.2
- 打包测试通过

主要文件:
- src/views/teacher/ai-knowledge-naive-ui/ - AI知识库管理模块
- docs/ - 相关API文档
- package.json - 新增依赖配置
2025-10-14 17:33:25 +08:00

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