From d9b4a012ee12e5f7842aad032c9a0c3f44360dad Mon Sep 17 00:00:00 2001 From: 2910410219 <2910410219@qq.com> Date: Mon, 30 Mar 2026 17:35:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84=E5=92=8C=E5=91=BD=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E9=99=A4=E7=A4=BA=E4=BE=8B=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E7=BB=84=E4=BB=B6=E5=92=8C=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E4=BB=A5=E6=94=AF=E6=8C=81=E6=96=B0=E5=91=BD=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/cid/apis/index.ts | 111 ++++ src/api/cid/datasource/index.ts | 130 +++++ src/api/cid/field/index.ts | 162 ++++++ src/api/knowledge/dataset/example.ts | 113 ---- src/api/knowledge/dataset/index.ts | 76 +-- src/api/knowledge/document/example.ts | 238 -------- src/api/knowledge/document/index.ts | 122 ++-- src/utils/other.ts | 2 +- src/views/cid/apis/index.vue | 219 +++++++ src/views/cid/datasource/index.vue | 355 ++++++++++++ src/views/cid/field/index.vue | 198 +++++++ .../component/documentDetailDialog.vue | 97 ++-- .../dataset/component/editDataset.vue | 35 +- src/views/knowledge/dataset/index.vue | 74 +-- .../document/component/documentChunks.vue | 83 ++- .../document/component/previewDocument.vue | 38 +- .../document/component/uploadDocument.vue | 38 +- src/views/knowledge/document/detail.vue | 111 ++-- src/views/knowledge/document/index.vue | 139 +++-- src/views/knowledge/index.vue | 543 +++++++++--------- src/views/pages/workflow/index.vue | 6 +- src/views/visualizing/demo1.vue | 8 +- 22 files changed, 1783 insertions(+), 1115 deletions(-) create mode 100644 src/api/cid/apis/index.ts create mode 100644 src/api/cid/datasource/index.ts create mode 100644 src/api/cid/field/index.ts delete mode 100644 src/api/knowledge/dataset/example.ts delete mode 100644 src/api/knowledge/document/example.ts create mode 100644 src/views/cid/apis/index.vue create mode 100644 src/views/cid/datasource/index.vue create mode 100644 src/views/cid/field/index.vue diff --git a/src/api/cid/apis/index.ts b/src/api/cid/apis/index.ts new file mode 100644 index 0000000..1360694 --- /dev/null +++ b/src/api/cid/apis/index.ts @@ -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; + responseConfig?: Record; + limitConfig?: Record; +} + +// 更新接口参数 +export interface UpdateApiInterfaceParams extends Partial { + 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; + responseConfig?: Record; + limitConfig?: Record; + 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 }, + }); +} diff --git a/src/api/cid/datasource/index.ts b/src/api/cid/datasource/index.ts new file mode 100644 index 0000000..8dfc19e --- /dev/null +++ b/src/api/cid/datasource/index.ts @@ -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 { + 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, + }); +} diff --git a/src/api/cid/field/index.ts b/src/api/cid/field/index.ts new file mode 100644 index 0000000..e687d17 --- /dev/null +++ b/src/api/cid/field/index.ts @@ -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 { + 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, + }); +} diff --git a/src/api/knowledge/dataset/example.ts b/src/api/knowledge/dataset/example.ts deleted file mode 100644 index c42e832..0000000 --- a/src/api/knowledge/dataset/example.ts +++ /dev/null @@ -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({ - 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 - }; - } -}); -*/ diff --git a/src/api/knowledge/dataset/index.ts b/src/api/knowledge/dataset/index.ts index 508e83e..1289313 100644 --- a/src/api/knowledge/dataset/index.ts +++ b/src/api/knowledge/dataset/index.ts @@ -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, - }); -} diff --git a/src/api/knowledge/document/example.ts b/src/api/knowledge/document/example.ts deleted file mode 100644 index 0f86532..0000000 --- a/src/api/knowledge/document/example.ts +++ /dev/null @@ -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({ - 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 - }; - } -}); -*/ diff --git a/src/api/knowledge/document/index.ts b/src/api/knowledge/document/index.ts index d442f65..2b83f80 100644 --- a/src/api/knowledge/document/index.ts +++ b/src/api/knowledge/document/index.ts @@ -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 }, }); diff --git a/src/utils/other.ts b/src/utils/other.ts index 6bb4fbd..f073e12 100644 --- a/src/utils/other.ts +++ b/src/utils/other.ts @@ -76,7 +76,7 @@ export const lazyImg = (el: any, arr: any) => { const io = new IntersectionObserver((res) => { res.forEach((v: any) => { if (v.isIntersecting) { - const { img, key } = v.target.dataset; + const { img, key } = v.target.knowledge; v.target.src = img; v.target.onload = () => { io.unobserve(v.target); diff --git a/src/views/cid/apis/index.vue b/src/views/cid/apis/index.vue new file mode 100644 index 0000000..6209f1d --- /dev/null +++ b/src/views/cid/apis/index.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/cid/datasource/index.vue b/src/views/cid/datasource/index.vue new file mode 100644 index 0000000..bf37e00 --- /dev/null +++ b/src/views/cid/datasource/index.vue @@ -0,0 +1,355 @@ + + + + + \ No newline at end of file diff --git a/src/views/cid/field/index.vue b/src/views/cid/field/index.vue new file mode 100644 index 0000000..886f5e6 --- /dev/null +++ b/src/views/cid/field/index.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/views/knowledge/component/documentDetailDialog.vue b/src/views/knowledge/component/documentDetailDialog.vue index ed84377..b38d10c 100644 --- a/src/views/knowledge/component/documentDetailDialog.vue +++ b/src/views/knowledge/component/documentDetailDialog.vue @@ -13,22 +13,20 @@

{{ documentInfo.name }}

- +
{{ documentContent }}
- +

切片结果

查看用于嵌入和召回的切片段落。
- +
@@ -37,13 +35,7 @@
- + @@ -53,17 +45,13 @@
- +
选择所有
- -
+ +
@@ -74,10 +62,10 @@
- +
- +
- + @@ -105,8 +105,8 @@ export default { import { ref, reactive, onMounted } from 'vue'; import { useRouter } from 'vue-router'; import { ElMessage, ElMessageBox } from 'element-plus'; -import { listDatasets, deleteDataset, updateDatasetStatus } from '/@/api/knowledge/dataset'; -import EditDataset from './component/editDataset.vue'; +import { listknowledges, deleteknowledge, updateknowledgeStatus } from '/@/api/knowledge/knowledge'; +import Editknowledge from './component/editknowledge.vue'; const router = useRouter(); @@ -125,13 +125,13 @@ const tableData = reactive({ }); // 编辑弹窗ref -const editDatasetRef = ref(); +const editknowledgeRef = ref(); // 获取数据集列表 -const getDatasetList = async () => { +const getknowledgeList = async () => { tableData.loading = true; try { - const res: any = await listDatasets(tableData.param); + const res: any = await listknowledges(tableData.param); const list = res.data?.list || []; tableData.data = list.map((item: any) => ({ ...item, @@ -190,27 +190,27 @@ const onResetQuery = () => { tableData.param.type = ''; tableData.param.status = undefined; tableData.param.pageNum = 1; - getDatasetList(); + getknowledgeList(); }; // 打开新增弹窗 const onOpenAdd = () => { - editDatasetRef.value.openDialog(); + editknowledgeRef.value.openDialog(); }; // 打开编辑弹窗 const onEdit = (row: any) => { - editDatasetRef.value.openDialog(row); + editknowledgeRef.value.openDialog(row); }; // 查看详情 const onViewDetail = (row: any) => { - router.push({ path: '/knowledge/document', query: { datasetId: row.id, datasetName: row.name } }); + router.push({ path: '/knowledge/document', query: { knowledgeId: row.id, knowledgeName: row.name } }); }; // 管理文档 const onManageDocuments = (row: any) => { - router.push({ path: '/knowledge/document', query: { datasetId: row.id, datasetName: row.name } }); + router.push({ path: '/knowledge/document', query: { knowledgeId: row.id, knowledgeName: row.name } }); }; // 状态切换 @@ -218,7 +218,7 @@ const onStatusChange = async (row: any) => { const newStatus = row.statusEnabled ? 'enable' : 'disable'; const statusText = row.statusEnabled ? '启用' : '禁用'; try { - await updateDatasetStatus({ id: row.id, status: newStatus }); + await updateknowledgeStatus({ id: row.id, status: newStatus }); ElMessage.success(`${statusText}成功`); } catch (_error) { row.statusEnabled = !row.statusEnabled; @@ -232,40 +232,42 @@ const onRowDel = (row: any) => { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', - }).then(async () => { - try { - await deleteDataset(row.id); - ElMessage.success('删除成功'); - getDatasetList(); - } catch (_error) { - ElMessage.error('删除失败'); - } - }).catch(() => {}); + }) + .then(async () => { + try { + await deleteknowledge(row.id); + ElMessage.success('删除成功'); + getknowledgeList(); + } catch (_error) { + ElMessage.error('删除失败'); + } + }) + .catch(() => {}); }; // 分页大小改变 const onSizeChange = (size: number) => { tableData.param.pageSize = size; - getDatasetList(); + getknowledgeList(); }; // 当前页改变 const onCurrentChange = (page: number) => { tableData.param.pageNum = page; - getDatasetList(); + getknowledgeList(); }; // 页面加载时获取数据 onMounted(() => { - getDatasetList(); + getknowledgeList(); });