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

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

111
src/api/cid/apis/index.ts Normal file
View File

@@ -0,0 +1,111 @@
import { newService } from '/@/utils/request';
// 接口查询参数
export interface ApiInterfaceQueryParams {
keyword?: string;
platformId?: string;
status?: string;
method?: string;
pageNum: number;
pageSize: number;
}
// 创建接口参数
export interface CreateApiInterfaceParams {
platformId: string | number;
name: string;
code: string;
url: string;
method: string;
status?: string;
authType?: string;
requestConfig?: Record<string, any>;
responseConfig?: Record<string, any>;
limitConfig?: Record<string, any>;
}
// 更新接口参数
export interface UpdateApiInterfaceParams extends Partial<CreateApiInterfaceParams> {
id: string;
}
// 更新接口状态参数
export interface UpdateApiInterfaceStatusParams {
id: string;
status: string;
}
// 接口信息(响应字段)
export interface ApiInterfaceInfo {
id: string;
platformId: string | number;
platformName?: string;
name: string;
code: string;
url: string;
method: string;
status: string;
statusName?: string;
authType?: string;
requestConfig?: Record<string, any>;
responseConfig?: Record<string, any>;
limitConfig?: Record<string, any>;
createdBy?: string;
createdAt?: number;
updatedBy?: string;
updatedAt?: number;
}
// 获取接口列表
export function listApiInterfaces(params: ApiInterfaceQueryParams) {
return newService({
url: '/api/interface/controller/listApiInterfaces',
method: 'get',
params,
});
}
// 获取接口详情
export function getApiInterface(id: string) {
return newService({
url: '/api/interface/controller/getApiInterface',
method: 'get',
params: { id },
});
}
// 创建接口
export function createApiInterface(data: CreateApiInterfaceParams) {
return newService({
url: '/api/interface/controller/createApiInterface',
method: 'post',
data,
});
}
// 修改接口
export function updateApiInterface(data: UpdateApiInterfaceParams) {
return newService({
url: '/api/interface/controller/updateApiInterface',
method: 'put',
data,
});
}
// 更新接口状态
export function updateApiInterfaceStatus(data: UpdateApiInterfaceStatusParams) {
return newService({
url: '/api/interface/controller/updateApiInterfaceStatus',
method: 'put',
data,
});
}
// 删除接口
export function deleteApiInterface(id: string) {
return newService({
url: '/api/interface/controller/deleteApiInterface',
method: 'delete',
params: { id },
});
}

View File

@@ -0,0 +1,130 @@
import { newService } from '/@/utils/request';
// 平台查询参数
export interface DatasourcePlatformQueryParams {
keyword?: string;
status?: string;
pageNum: number;
pageSize: number;
}
// 创建平台参数
export interface CreateDatasourcePlatformParams {
platformCode: string;
platformName: string;
description?: string;
apiBaseUrl: string;
authType: string;
status?: string;
token?: string;
apiKey?: string;
clientId?: string;
clientSecret?: string;
rateLimitPerMinute?: number;
rateLimitPerHour?: number;
concurrencyLimit?: number;
requestTimeoutMs?: number;
maxRetries?: number;
retryDelayMs?: number;
createdBy?: string;
updatedBy?: string;
}
// 更新平台参数
export interface UpdateDatasourcePlatformParams extends Partial<CreateDatasourcePlatformParams> {
id: string;
version?: string;
}
// 更新平台状态参数
export interface UpdateDatasourcePlatformStatusParams {
id: string;
Status: string;
updatedBy?: string;
}
// 平台信息
export interface DatasourcePlatformInfo {
id: string;
platformCode: string;
platformName: string;
description?: string;
status: string;
statusName: string;
apiBaseUrl: string;
authType: string;
authTypeName: string;
rateLimitPerMinute?: number;
rateLimitPerHour?: number;
concurrencyLimit?: number;
requestTimeoutMs?: number;
maxRetries?: number;
retryDelayMs?: number;
createdBy?: string;
createdAt?: number;
updatedBy?: string;
updatedAt?: number;
}
// 获取平台列表
export function listDatasourcePlatforms(params: DatasourcePlatformQueryParams) {
return newService({
url: '/datasource/platform/controller/listDatasourcePlatforms',
method: 'get',
params,
});
}
// 创建平台
export function createDatasourcePlatform(data: CreateDatasourcePlatformParams) {
return newService({
url: '/datasource/platform/controller/createDatasourcePlatform',
method: 'post',
data,
});
}
// 更新平台
export function updateDatasourcePlatform(data: UpdateDatasourcePlatformParams) {
return newService({
url: '/datasource/platform/controller/updateDatasourcePlatform',
method: 'put',
data,
});
}
// 删除平台
export function deleteDatasourcePlatform(id: string) {
return newService({
url: '/datasource/platform/controller/deleteDatasourcePlatform',
method: 'delete',
params: { id },
});
}
// 获取平台详情
export function getDatasourcePlatform(id: string) {
return newService({
url: '/datasource/platform/controller/getDatasourcePlatform',
method: 'get',
params: { id },
});
}
// 根据编码获取平台信息
export function getPlatformByCode(platformCode: string) {
return newService({
url: '/datasource/platform/controller/getPlatformByCode',
method: 'get',
params: { platformCode },
});
}
// 更新平台状态
export function updateDatasourcePlatformStatus(data: UpdateDatasourcePlatformStatusParams) {
return newService({
url: '/datasource/platform/controller/updateDatasourcePlatformStatus',
method: 'put',
data,
});
}

162
src/api/cid/field/index.ts Normal file
View File

@@ -0,0 +1,162 @@
import { newService } from '/@/utils/request';
// 字典映射查询参数
export interface FieldMappingQueryParams {
configName?: string;
vendorName?: string;
apiName?: string;
businessDomain?: string;
isActive?: boolean;
pageNum?: number;
pageSize?: number;
}
// 创建字典映射参数
export interface CreateFieldMappingParams {
configName: string;
vendorName: string;
apiName: string;
apiVersion?: string;
sourceField: string;
sourceFieldType?: string;
sourceFieldDesc?: string;
targetField: string;
targetFieldType?: string;
targetFieldDesc?: string;
transformType?: string;
transformParams?: any;
validationRules?: any;
defaultValue?: string;
isRequired?: boolean;
isActive?: boolean;
priority?: number;
businessDomain?: string;
fieldGroup?: string;
configVersion?: number;
effectiveDate?: string;
expiryDate?: string;
createdBy?: string;
}
// 更新字典映射参数
export interface UpdateFieldMappingParams extends Partial<CreateFieldMappingParams> {
id: string;
}
// 字典映射信息(响应字段)
export interface FieldMappingInfo {
id: string;
configName: string;
vendorName: string;
apiName: string;
apiVersion?: string;
sourceField: string;
sourceFieldType?: string;
sourceFieldDesc?: string;
targetField: string;
targetFieldType?: string;
targetFieldDesc?: string;
transformType?: string;
transformTypeName?: string;
transformParams?: any;
validationRules?: any;
defaultValue?: string;
isRequired?: boolean;
isActive?: boolean;
priority?: number;
businessDomain?: string;
businessDomainName?: string;
fieldGroup?: string;
configVersion?: number;
effectiveDate?: string;
expiryDate?: string;
createdBy?: string;
createdTime?: string;
updatedBy?: string;
updatedTime?: string;
}
// 查询字典映射列表
export function listFieldMappingConfigs(params: FieldMappingQueryParams) {
return newService({
url: '/field/mapping/config/controller/field-mapping-configs',
method: 'get',
params,
});
}
// 创建字典映射
export function createFieldMappingConfig(data: CreateFieldMappingParams) {
return newService({
url: '/field/mapping/config/controller/field-mapping-configs',
method: 'post',
data,
});
}
// 根据ID查询字典映射详情
export function getFieldMappingConfig(id: string) {
return newService({
url: `/field/mapping/config/controller/field-mapping-configs/${id}`,
method: 'get',
});
}
// 根据ID修改字典映射
export function updateFieldMappingConfig(id: string, data: UpdateFieldMappingParams) {
return newService({
url: `/field/mapping/config/controller/field-mapping-configs/${id}`,
method: 'put',
data,
});
}
// 根据ID修改字典映射状态
export function updateFieldMappingConfigStatus(id: string, isActive: boolean) {
return newService({
url: `/field/mapping/config/controller/field-mapping-configs/${id}/status`,
method: 'put',
data: { id, isActive },
});
}
// 根据ID删除字典映射
export function deleteFieldMappingConfig(id: string) {
return newService({
url: `/field/mapping/config/controller/field-mapping-configs/${id}`,
method: 'delete',
});
}
// 根据厂商和接口查询字段映射(过滤过期)
export interface QueryFieldMappingParams {
vendorName: string;
apiName: string;
apiVersion?: string;
isActive?: boolean;
}
export function queryFieldMappingConfigs(params: QueryFieldMappingParams) {
return newService({
url: '/field/mapping/config/controller/field-mapping-configs/query',
method: 'get',
params,
});
}
// 验证字段映射配置的有效性
export interface ValidateFieldMappingParams {
configName: string;
vendorName: string;
apiName: string;
sourceField: string;
targetField: string;
}
export function validateFieldMappingConfig(data: ValidateFieldMappingParams) {
return newService({
url: '/field/mapping/config/controller/field-mapping-configs/validate',
method: 'post',
data,
});
}

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