diff --git a/src/api/generatedApi/embedding.js b/src/api/generatedApi/embedding.js index 6ff3614..16ff9e2 100644 --- a/src/api/generatedApi/embedding.js +++ b/src/api/generatedApi/embedding.js @@ -28,6 +28,15 @@ export function extractEmbedding(data) { }) } +// 上传到知识库 - 拆分和题词内容 +export function splitAndExtractEmbedding(data) { + return request({ + url: getUrl(`/datasetDocumentEx/splitAndExtract/embedding`), + method: 'post', + data + }) +} + // 上传到知识库 - 原文件 export function directEmbedding(data) { return request({ @@ -72,3 +81,12 @@ export function extractSegmentEstimate(data) { data }) } + +// 分段预览-拆分和题词题词内容 +export function splitAndExtractSegmentEstimate(data) { + return request({ + url: getUrl(`/datasetDocumentEx/splitAndExtract/segment_estimate`), + method: 'post', + data + }) +} diff --git a/src/api/generatedApi/index.js b/src/api/generatedApi/index.js index 468752e..03a3e62 100644 --- a/src/api/generatedApi/index.js +++ b/src/api/generatedApi/index.js @@ -9,6 +9,7 @@ export function docManageDataset(data) { data }) } + //单一知识库详情 export function getDatasetById(params) { return request({ @@ -18,6 +19,7 @@ export function getDatasetById(params) { noLoading: true }) } + // 知识库内容修改 export function datasetUpdate(data) { return request({ @@ -27,6 +29,7 @@ export function datasetUpdate(data) { noLoading: true }) } + // 知识库新增 export function datasetCreate(data) { return request({ @@ -53,6 +56,7 @@ export function datasetDelete(data) { method: 'delete' }) } + export function datasetsExPages(data) { return request({ url: getUrl(`/datasetDocumentEx/page`), @@ -77,6 +81,7 @@ export function minerUBbox(params) { params: params }) } + //minerU 重试 export function minerURetry(params) { return request({ @@ -86,6 +91,7 @@ export function minerURetry(params) { noLoading: true }) } + //minerU 获取文档处理状态 export function minerUQuery(params) { return request({ @@ -95,6 +101,7 @@ export function minerUQuery(params) { noLoading: true }) } + //minerU 获取markdown export function minerUMarkDown(params) { return getUrl(`/document/mineru/md?documentId=${params.documentId}`) @@ -112,6 +119,7 @@ export function minerUMarkDownUpdate(data) { data }) } + // 规则分页 export function getRulesPage(data) { return request({ @@ -120,6 +128,7 @@ export function getRulesPage(data) { data }) } + export function getRulesList(data) { return request({ url: getUrl(`/rules/list`), @@ -127,6 +136,7 @@ export function getRulesList(data) { data }) } + // 拆分规则-新增 export function addRuleSplit(data) { return request({ @@ -135,6 +145,7 @@ export function addRuleSplit(data) { data }) } + // 拆分规则-详情 export function getRuleDetail(id) { return request({ @@ -142,6 +153,7 @@ export function getRuleDetail(id) { method: 'get' }) } + // 拆分规则-编辑 export function updateRuleSplit(data) { return request({ @@ -150,6 +162,7 @@ export function updateRuleSplit(data) { data }) } + // 拆分规则-下一步校验 export function execSplit(data) { return request({ @@ -158,6 +171,7 @@ export function execSplit(data) { data }) } + // 拆分结果预览 export function splitResultPreview(params) { return request({ @@ -166,6 +180,7 @@ export function splitResultPreview(params) { params: params }) } + // 题词-新增 export function addRuleExtract(data) { return request({ @@ -174,6 +189,7 @@ export function addRuleExtract(data) { data }) } + // 题词-编辑 export function updateRuleExtractSplit(data) { return request({ @@ -182,6 +198,7 @@ export function updateRuleExtractSplit(data) { data }) } + // 题词-下一步校验 export function execExtract(data) { return request({ @@ -240,6 +257,7 @@ export function uploadFileByCustom(data) { } }) } + /*一键上传*/ export function directEmbedding(data) { return request({ @@ -274,6 +292,7 @@ export function datasetQuerySegments(data) { // 知识文档详情查询(包含json的题词和拆分规则) export function datasetDocumentEx(data) { return request({ + noLoading: true, url: getUrl(`/datasetDocumentEx/query`), method: 'get', params: data @@ -288,6 +307,7 @@ export function getTaskDetail(params) { params }) } + // 知识库文件删除 export function datasetQueryDelete(data) { return request({ @@ -323,6 +343,7 @@ export function getMd_info(params) { noLoading: true }) } + export function mdIndex(params) { return request({ url: getUrl(`/document/mineru/md`), @@ -341,6 +362,7 @@ export function embedding(data) { data }) } + // 查询知识库元数据列表 export function getMetadataList(data) { return request({ @@ -350,6 +372,7 @@ export function getMetadataList(data) { noLoading: true }) } + // 新增元数据 export function createMetadata(data) { return request({ @@ -358,6 +381,7 @@ export function createMetadata(data) { data }) } + // 修改元数据 export function updateMetadata(data) { return request({ @@ -366,6 +390,7 @@ export function updateMetadata(data) { data }) } + // 删除元数据 export function deleteMetadata(data) { return request({ @@ -374,6 +399,7 @@ export function deleteMetadata(data) { data }) } + // 启用/禁用内置元数据 export function builtInEnableMetadata(data) { return request({ @@ -382,6 +408,7 @@ export function builtInEnableMetadata(data) { data }) } + // 查询文档元数据列表 export function getMetaDataDocList(data) { return request({ @@ -390,6 +417,7 @@ export function getMetaDataDocList(data) { data }) } + // 新增文档元数据 export function addMetaDataDoc(data) { return request({ @@ -398,6 +426,7 @@ export function addMetaDataDoc(data) { data }) } + // 删除文档元数据 export function deleteMetaDataDoc(data) { return request({ @@ -406,6 +435,7 @@ export function deleteMetaDataDoc(data) { data }) } + // 编辑文档元数据 export function updateMetaDataDoc(data) { return request({ @@ -414,6 +444,7 @@ export function updateMetaDataDoc(data) { data }) } + export function uploadImage(data) { return request({ url: getUrl(`/image/upload`), @@ -439,6 +470,7 @@ export function segmentDelete(data) { params: data }) } + // 新增分段 export function segmentCreate(data) { return request({ @@ -453,6 +485,7 @@ export function segmentTemplate(model) { // model 分别时 qa general return getUrl(`/template/download/${model}`) } + // 导入分段 export function importSegment(data) { return request({ @@ -461,6 +494,7 @@ export function importSegment(data) { data }) } + // 导出分段 export function exportSegment(data) { @@ -478,6 +512,7 @@ export function switchStatus(data) { noLoading: true }) } + // 知识库关联智能体 export function relatedApps(data) { return request({ @@ -486,7 +521,17 @@ export function relatedApps(data) { params: data }) } + // 下载知识原文件 export function downloadOriginalFile(data) { return getUrl(`/datasetDocumentEx/download/original_file?documentId=` + data) } + +// 获取知识库里未完成的知识挖掘数据 +export function getUnfinishedExtract(data) { + return request({ + url: getUrl(`/datasetDocumentEx/unfinishedExtract?datasetId=` + data), + method: 'get', + noLoading: true + }) +} diff --git a/src/components/RenderMinerU/index.vue b/src/components/RenderMinerU/index.vue index 50f55a8..4c1e72c 100644 --- a/src/components/RenderMinerU/index.vue +++ b/src/components/RenderMinerU/index.vue @@ -367,6 +367,7 @@ export default { // } }, changePageDown(type) { + this.changeTab(0) if (this.page <= 0) { return false } @@ -396,6 +397,7 @@ export default { }, changePageUp(type) { + this.changeTab(0) if (this.page >= this.mdJsons.length) { return false } @@ -580,6 +582,7 @@ export default { }, // 保存markdown async saveMarkDown() { + this.changeTab(0) let promises = [] this.mdJsons.map(item => { diff --git a/src/router/generatedRouter/index.js b/src/router/generatedRouter/index.js index 7e2b900..c374ee6 100644 --- a/src/router/generatedRouter/index.js +++ b/src/router/generatedRouter/index.js @@ -1,5 +1,6 @@ import layout from '@/views/app/layout/layout.vue' import redirect from '@/views/app/redirect/index.vue' + const home = () => import('@/views/app/Home') export default [ @@ -99,7 +100,11 @@ export default [ icon: 'el-icon-s-home' } }, - + { + path: '/knowledge/detail/customWord', + name: 'custom-word', + component: () => import('@/views/knowledge/detail/components/words/WordIndex.vue') + }, { path: '/knowledge/reviewKnowledge', name: 'knowledge-review-knowledge', diff --git a/src/views/knowledge/detail/components/split/SplitPreview.vue b/src/views/knowledge/detail/components/split/SplitPreview.vue index 3ff2e60..eda7af6 100644 --- a/src/views/knowledge/detail/components/split/SplitPreview.vue +++ b/src/views/knowledge/detail/components/split/SplitPreview.vue @@ -52,13 +52,13 @@ @click="handleConfirm" >下一步 - 直接上传至知识库 + + + + + + + diff --git a/src/views/knowledge/detail/components/words/ExtractPreview.vue b/src/views/knowledge/detail/components/words/ExtractPreview.vue index a9dfc00..1066980 100644 --- a/src/views/knowledge/detail/components/words/ExtractPreview.vue +++ b/src/views/knowledge/detail/components/words/ExtractPreview.vue @@ -5,6 +5,7 @@ title="题词结果预览" :visible.sync="visible" width="700px" + @update:visible='handleClose' :close-on-click-modal="false" >
diff --git a/src/views/knowledge/detail/components/words/Index.vue b/src/views/knowledge/detail/components/words/Index.vue index ddb3d45..fa6e930 100644 --- a/src/views/knowledge/detail/components/words/Index.vue +++ b/src/views/knowledge/detail/components/words/Index.vue @@ -1,75 +1,145 @@ @@ -78,6 +148,7 @@ import CustomSplitDialog from './CustomWords.vue' import ExtractPreview from './ExtractPreview.vue' import { execExtract, + extractUpdate, getExtractResultList, saveContentToDocument } from '@/api/generatedApi' @@ -98,26 +169,35 @@ export default { splitOptions: [ { icon: 'el-icon-setting', - title: '自动题词', + title: '立即挖掘', description: '使用系统默认的题词方式,适合新手或紧急任务,直接使用系统预设题词规则处理文本。', tip: '提示:首次使用时建议先用自动题词测试效果,再决定是否调整。' }, { icon: 'el-icon-medal', - title: '自定义题词', + title: '自定义规则', description: '使用自定义题词方式可以根据具体需求灵活调整文本分割逻辑。', tip: '但需要权衡灵活性与复杂度,需要用户具备一定的题词经验。' } ], - documentId: '' + isRedig: false, + // 题词结果 + digRes: [], + documentId: '', + isEdit: false, + digResBackup: [] } }, props: { documentList: { type: Array, default: () => [] + }, + documentExtractId: { + type: String, + default: () => '' } }, watch: {}, @@ -174,19 +254,19 @@ export default { // 获取题词结果列表 - 修改后的方法 async getExtractResultOperation(documentId) { if (documentId) { - this.documentId = documentId + this.documentId = this.documentExtractId } - this.previewLoading = true - const params = { documentId } + // this.previewLoading = true + const params = { documentId: this.documentExtractId } const res = await getExtractResultList(params) if (res.content.result !== '0') { throw new Error(res.content.resultMessage || '获取题词结果失败') } - const results = res.content.content || [] + this.digRes = res.content.content || [] // 显示预览弹窗 - this.showExtractPreview(results) + // this.showExtractPreview(results) }, // 处理预览确认 handlePreviewConfirm(extractResults) { @@ -221,44 +301,120 @@ export default { }, // 主方法 - nextStep(documentId) { + async nextStep(documentId, active) { this.documentId = documentId - return new Promise(async (resolve, reject) => { - try { - // 1. 执行题词 - const params = this.buildExecExtractParams(documentId) - this.execExtractOperation(params).then(async res => { - if (res) { - // await this.getExtractResultOperation(documentId) - // 显示预览弹窗 - this.showExtractPreview(res) - } - }) - } catch (error) { - console.error('题词操作失败:', error) - reject({ - success: false, - message: error.message || '题词操作失败' - }) + this.$router.push({ + path: '/knowledge/detail/create', + query: { + ...this.$route.query, + documentId: this.documentId, + activeLevel: 2, + active: active } }) + // return new Promise(async (resolve, reject) => { + // try { + // // 1. 执行题词 + // const params = this.buildExecExtractParams(documentId) + // this.execExtractOperation(params).then(async res => { + // if (res) { + // await this.getExtractResultOperation(documentId) + // // 显示预览弹窗 + // // this.showExtractPreview(res) + // } + // }) + // } catch (error) { + // console.error('题词操作失败:', error) + // reject({ + // success: false, + // message: error.message || '题词操作失败' + // }) + // } + // }) + }, + redig() { + this.$router.push({ + name: 'custom-word', + query: { ...this.$router.query, documentId: this.documentExtractId } + }) + }, + handleEdit() { + this.isEdit = true + // 深拷贝一份备份 + this.digResBackup = JSON.parse(JSON.stringify(this.digRes)) + }, + handleSave() { + this.isEdit = false + let params = { + documentId: this.documentExtractId, + resultDTOList: this.digRes.map(item => ({ + id: item.id, + attribute: item.attribute, + attributeContent: item.attributeContent + })) + } + extractUpdate(params).then(res => { + if (res) { + this.$message.success('保存成功') + } + }) + }, + handleCancel() { + this.isEdit = false + // 恢复原内容 + this.digRes = JSON.parse(JSON.stringify(this.digResBackup)) } }, - created() {}, + created() { + this.getExtractResultOperation() + }, mounted() {}, - computed: {} + computed: { + columns: vm => { + return [ + { + prop: 'attribute', + label: '属性', + width: 90 + }, + { + prop: 'attributeContent', + label: '题词内容', + render: (h, p) => { + return h('el-input', { + props: { + value: p.row.attributeContent, + size: 'medium', + disabled: !vm.isEdit + }, + on: { + input: value => { + p.row.attributeContent = value + } + } + }) + } + } + ] + } + } } diff --git a/src/views/knowledge/detail/components/words/WordIndex.vue b/src/views/knowledge/detail/components/words/WordIndex.vue new file mode 100644 index 0000000..55f038c --- /dev/null +++ b/src/views/knowledge/detail/components/words/WordIndex.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/src/views/knowledge/detail/create.vue b/src/views/knowledge/detail/create.vue index be90506..b10a37d 100644 --- a/src/views/knowledge/detail/create.vue +++ b/src/views/knowledge/detail/create.vue @@ -29,7 +29,7 @@
2
- +