重构知识库相关接口,更新数据结构和命名,移除示例文件,调整组件和视图以支持新命名,优化文档和数据集管理功能。

This commit is contained in:
2026-03-30 17:35:05 +08:00
parent 891f8ed776
commit d9b4a012ee
22 changed files with 1783 additions and 1115 deletions

View File

@@ -1,113 +0,0 @@
// ⚠️ 示例文件:仅用于接口调用演示,不参与生产运行。
// 知识库接口使用示例
import {
createKnowledgeBase,
CreateDatasetParams,
updateKnowledgeBase,
UpdateDatasetParams
} from '/@/api/knowledge/dataset';
// 示例1创建带描述的知识库
const createKnowledgeBaseWithDescription = async () => {
const params: CreateDatasetParams = {
name: '客服知识库',
description: '包含常见问题和答案的知识库'
};
try {
const response = await createKnowledgeBase(params);
console.log('知识库创建成功:', response.data);
} catch (error) {
console.error('创建失败:', error);
}
};
// 示例2创建仅包含名称的知识库
const createKnowledgeBaseOnly = async () => {
const params: CreateDatasetParams = {
name: '产品知识库'
// description 是可选的,可以不传
};
try {
const response = await createKnowledgeBase(params);
console.log('知识库创建成功:', response.data);
} catch (error) {
console.error('创建失败:', error);
}
};
// 示例3更新知识库名称和描述
const updateKnowledgeBaseInfo = async () => {
const params: UpdateDatasetParams = {
id: '1234567890', // 必传
name: '更新后的知识库名称',
description: '更新后的描述信息'
};
try {
const response = await updateKnowledgeBase(params);
console.log('知识库更新成功:', response.data);
} catch (error) {
console.error('更新失败:', error);
}
};
// 示例4仅更新知识库名称
const updateKnowledgeBaseName = async () => {
const params: UpdateDatasetParams = {
id: '1234567890', // 必传
name: '仅更新名称'
// description 是可选的,可以不传
};
try {
const response = await updateKnowledgeBase(params);
console.log('知识库名称更新成功:', response.data);
} catch (error) {
console.error('更新失败:', error);
}
};
// 在Vue组件中使用
/*
import { ref } from 'vue';
import { ElMessage } from 'element-plus';
import { createKnowledgeBase, CreateDatasetParams } from '/@/api/knowledge/dataset';
export default defineComponent({
setup() {
const formData = ref<CreateDatasetParams>({
name: '',
description: ''
});
const loading = ref(false);
const handleSubmit = async () => {
if (!formData.value.name.trim()) {
ElMessage.error('知识库名称不能为空');
return;
}
loading.value = true;
try {
await createKnowledgeBase(formData.value);
ElMessage.success('知识库创建成功');
// 重置表单或跳转到列表页
formData.value = { name: '', description: '' };
} catch (error) {
ElMessage.error('创建失败,请重试');
} finally {
loading.value = false;
}
};
return {
formData,
loading,
handleSubmit
};
}
});
*/

View File

@@ -1,108 +1,68 @@
import { newService } from '/@/utils/request';
// 数据集查询参数
export interface DatasetQueryParams {
export interface knowledgeQueryParams {
keyword?: string;
status?: string;
pageNum: number;
pageSize: number;
}
// 创建知识库参数
export interface CreateDatasetParams {
export interface CreateknowledgeParams {
name: string; // 必传
description?: string; // 可选
}
// 更新知识库参数
export interface UpdateDatasetParams {
export interface UpdateknowledgeParams {
id: string; // 必传
name?: string; // 可选
description?: string; // 可选
}
// 数据集信息
export interface DatasetInfo {
export interface knowledgeInfo {
id?: string;
name: string;
description?: string;
type: string; // text, qa, table
documentCount?: number;
charCount?: number;
status: string; // enable, disable
embeddingModel?: string;
fileCount?: number;
totalSize?: number;
createdAt?: string;
updatedAt?: string;
}
// 获取数据集列表
export function listDatasets(params: DatasetQueryParams) {
// 获取知识库列表
export function listknowledges(params: knowledgeQueryParams) {
return newService({
url: '/rag-knowledge/knowledge/listKnowledge',
url: '/rag-knowledge/dataset/listDataset',
method: 'get',
params,
});
}
// 获取数据集详情
export function getDataset(id: string) {
// 创建知识库
export function createknowledge(data: CreateknowledgeParams) {
return newService({
url: '/knowledge/dataset/detail',
method: 'get',
params: { id },
});
}
// 创建数据集(简化版)
export function createKnowledgeBase(data: CreateDatasetParams) {
return newService({
url: '/rag-knowledge/knowledge/createKnowledge',
url: '/rag-knowledge/dataset/createDataset',
method: 'post',
data,
});
}
// 创建数据集(完整版)
export function createDataset(data: DatasetInfo) {
// 更新知识库
export function updateknowledge(data: UpdateknowledgeParams) {
return newService({
url: '/knowledge/dataset/create',
method: 'post',
data,
});
}
// 更新知识库(简化版)
export function updateKnowledgeBase(data: UpdateDatasetParams) {
return newService({
url: '/rag-knowledge/knowledge/updateKnowledge',
url: '/rag-knowledge/dataset/updateDataset',
method: 'put',
data,
});
}
// 更新数据集(完整版)
export function updateDataset(data: DatasetInfo) {
// 删除知识库
export function deleteknowledge(id: string) {
return newService({
url: '/knowledge/dataset/update',
method: 'put',
data,
});
}
// 删除数据集
export function deleteDataset(id: string) {
return newService({
url: '/rag-knowledge/knowledge/deleteKnowledge',
url: '/rag-knowledge/dataset/deleteDataset',
method: 'delete',
params: { id },
});
}
// 更新数据集状态
export function updateDatasetStatus(data: { id: string; status: string }) {
return newService({
url: '/knowledge/dataset/updateStatus',
method: 'put',
data,
});
}

View File

@@ -1,238 +0,0 @@
// ⚠️ 示例文件:仅用于接口调用演示,不参与生产运行。
// 文档接口使用示例
import {
createDocument,
CreateDocumentParams,
updateDocument,
UpdateDocumentParams,
uploadDocument,
deleteDocument,
listDocuments,
DocumentQueryParams
} from '/@/api/knowledge/document';
// 示例1创建文档JSON格式
const createDocumentExample = async () => {
const params: CreateDocumentParams = {
KnowledgeId: 12345, // 知识库ID必传
filePath: '/path/to/document.pdf', // 文件路径,必传
fileSize: 1024000, // 文件大小(字节),必传
format: 'pdf', // 文件格式,必传
title: '产品使用手册' // 文档标题,必传
};
try {
const response = await createDocument(params);
console.log('文档创建成功:', response.data);
return response.data;
} catch (error) {
console.error('创建失败:', error);
throw error;
}
};
// 示例2上传文档FormData格式
const uploadDocumentExample = async (file: File, knowledgeId: string) => {
const formData = new FormData();
formData.append('file', file);
formData.append('datasetId', knowledgeId);
try {
const response = await uploadDocument(formData);
console.log('文档上传成功:', response.data);
return response.data;
} catch (error) {
console.error('上传失败:', error);
throw error;
}
};
// 示例3获取文档列表
const getDocumentList = async (knowledgeId: string) => {
const params: DocumentQueryParams = {
datasetId: knowledgeId,
pageNum: 1,
pageSize: 10,
keyword: '', // 可选搜索关键字
status: '', // 可选状态筛选
fileType: '' // 可选文件类型筛选
};
try {
const response = await listDocuments(params);
console.log('文档列表:', response.data);
return response.data;
} catch (error) {
console.error('获取列表失败:', error);
throw error;
}
};
// 示例4更新文档
const updateDocumentExample = async () => {
const params: UpdateDocumentParams = {
id: '1234567890', // 必传
title: '更新后的文档标题' // 可选,只更新标题
};
try {
const response = await updateDocument(params);
console.log('文档更新成功:', response.data);
return response.data;
} catch (error) {
console.error('更新失败:', error);
throw error;
}
};
// 示例5完整更新文档
const updateDocumentFull = async () => {
const params: UpdateDocumentParams = {
id: '1234567890', // 必传
KnowledgeId: 67890, // 可选
filePath: '/new/path/document.pdf', // 可选
fileSize: 2048000, // 可选
format: 'pdf', // 可选
title: '完全更新的文档' // 可选
};
try {
const response = await updateDocument(params);
console.log('文档完整更新成功:', response.data);
return response.data;
} catch (error) {
console.error('更新失败:', error);
throw error;
}
};
// 示例6删除文档
const deleteDocumentExample = async (documentId: string) => {
try {
await deleteDocument(documentId);
console.log('文档删除成功');
} catch (error) {
console.error('删除失败:', error);
throw error;
}
};
// 在Vue组件中使用
/*
import { ref } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import {
createDocument,
CreateDocumentParams,
uploadDocument,
deleteDocument,
listDocuments,
DocumentQueryParams
} from '/@/api/knowledge/document';
export default defineComponent({
setup() {
const formData = ref<CreateDocumentParams>({
KnowledgeId: 0,
filePath: '',
fileSize: 0,
format: '',
title: ''
});
const loading = ref(false);
const documentList = ref([]);
// 创建文档
const handleCreate = async () => {
// 验证必填字段
if (!formData.value.KnowledgeId || !formData.value.filePath ||
!formData.value.fileSize || !formData.value.format || !formData.value.title) {
ElMessage.error('请填写所有必填字段');
return;
}
loading.value = true;
try {
await createDocument(formData.value);
ElMessage.success('文档创建成功');
// 重置表单
formData.value = {
KnowledgeId: 0,
filePath: '',
fileSize: 0,
format: '',
title: ''
};
// 刷新列表
await getDocuments();
} catch (error) {
ElMessage.error('创建失败,请重试');
} finally {
loading.value = false;
}
};
// 文件上传
const handleFileUpload = async (event: Event, knowledgeId: string) => {
const file = (event.target as HTMLInputElement).files?.[0];
if (!file) return;
const formData = new FormData();
formData.append('file', file);
formData.append('datasetId', knowledgeId);
loading.value = true;
try {
await uploadDocument(formData);
ElMessage.success('文档上传成功');
await getDocuments();
} catch (error) {
ElMessage.error('上传失败,请重试');
} finally {
loading.value = false;
}
};
// 删除文档
const handleDelete = async (id: string) => {
try {
await ElMessageBox.confirm('确定要删除这个文档吗?', '提示', {
type: 'warning',
});
await deleteDocument(id);
ElMessage.success('删除成功');
await getDocuments();
} catch (error) {
if (error !== 'cancel') {
ElMessage.error('删除失败');
}
}
};
// 获取文档列表
const getDocuments = async () => {
try {
const response = await listDocuments({
pageNum: 1,
pageSize: 10
});
documentList.value = response.data.list;
} catch (error) {
console.error('获取列表失败:', error);
}
};
return {
formData,
loading,
documentList,
handleCreate,
handleFileUpload,
handleDelete,
getDocuments
};
}
});
*/

View File

@@ -4,29 +4,27 @@ import { newService } from '/@/utils/request';
export interface DocumentQueryParams {
keyword?: string;
datasetId?: string;
status?: string;
fileType?: string;
pageNum: number;
pageSize: number;
}
// 创建文档参数
export interface CreateDocumentParams {
KnowledgeId: number; // 必传
filePath: string; // 必传
fileSize: number; // 必传
format: string; // 必传
title: string; // 必传
datasetId: string; // 必传
filePath: string; // 必传
fileSize: number; // 必传
format: string; // 必传
title: string; // 必传
}
// 更新文档参数
export interface UpdateDocumentParams {
id: string; // 必传
KnowledgeId?: number; // 可选
filePath?: string; // 可选
fileSize?: number; // 可选
format?: string; // 可选
title?: string; // 可选
id: string; // 必传
datasetId?: string;
filePath?: string;
fileSize?: number;
format?: string;
title?: string;
}
// 文档信息
@@ -34,35 +32,20 @@ export interface DocumentInfo {
id?: string;
name: string;
datasetId: string;
datasetName?: string;
fileType: string; // pdf, docx, txt, md, html
fileType: string;
fileSize?: number;
filePath?: string;
charCount?: number;
chunkCount?: number;
status: string; // pending, processing, completed, failed
indexStatus?: string; // not_indexed, indexing, indexed, failed
errorMessage?: string;
parseStatus?: string;
enabled?: boolean;
createdAt?: string;
updatedAt?: string;
}
// 文档分段信息
export interface DocumentChunk {
id: string;
documentId: string;
content: string;
chunkIndex: number;
charCount: number;
tokenCount?: number;
embedding?: number[];
createdAt?: string;
}
// 获取文档列表
export function listDocuments(params: DocumentQueryParams) {
return newService({
url: '/knowledge/document/list',
url: '/rag-knowledge/document/listDocument',
method: 'get',
params,
});
@@ -71,16 +54,16 @@ export function listDocuments(params: DocumentQueryParams) {
// 获取文档详情
export function getDocument(id: string) {
return newService({
url: '/knowledge/document/detail',
url: '/rag-knowledge/document/getDocument',
method: 'get',
params: { id },
});
}
// 创建文档JSON格式
// 创建文档
export function createDocument(data: CreateDocumentParams) {
return newService({
url: '/knowledge/document/create',
url: '/rag-knowledge/document/createDocument',
method: 'post',
data,
});
@@ -89,16 +72,28 @@ export function createDocument(data: CreateDocumentParams) {
// 更新文档
export function updateDocument(data: UpdateDocumentParams) {
return newService({
url: '/knowledge/document/update',
url: '/rag-knowledge/document/updateDocument',
method: 'put',
data,
});
}
// 公共文件上传OSS返回文件路径
export function uploadFile(file: File) {
const formData = new FormData();
formData.append('file', file);
return newService({
url: '/oss/file/uploadFile',
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' },
});
}
// 上传文档
export function uploadDocument(data: FormData) {
return newService({
url: '/knowledge/document/upload',
url: '/rag-knowledge/document/createDocument',
method: 'post',
data,
headers: {
@@ -110,61 +105,16 @@ export function uploadDocument(data: FormData) {
// 删除文档
export function deleteDocument(id: string) {
return newService({
url: '/knowledge/document/delete',
url: '/rag-knowledge/document/deleteDocument',
method: 'delete',
params: { id },
});
}
// 批量删除文档
export function batchDeleteDocuments(ids: string[]) {
// 获取文件向量化处理进度
export function getDocumentProcess(id: string) {
return newService({
url: '/knowledge/document/batchDelete',
method: 'delete',
data: { ids },
});
}
// 重新处理文档
export function reprocessDocument(id: string) {
return newService({
url: '/knowledge/document/reprocess',
method: 'post',
params: { id },
});
}
// 获取文档分段列表
export function listDocumentChunks(params: { documentId: string; pageNum: number; pageSize: number }) {
return newService({
url: '/knowledge/document/chunks',
method: 'get',
params,
});
}
// 更新文档分段
export function updateDocumentChunk(data: { id: string; content: string }) {
return newService({
url: '/knowledge/document/chunk/update',
method: 'put',
data,
});
}
// 删除文档分段
export function deleteDocumentChunk(id: string) {
return newService({
url: '/knowledge/document/chunk/delete',
method: 'delete',
params: { id },
});
}
// 预览文档内容
export function previewDocument(id: string) {
return newService({
url: '/knowledge/document/preview',
url: '/rag-knowledge/document/getProcess',
method: 'get',
params: { id },
});