feat: paragraph

This commit is contained in:
wangdan-fit2cloud 2025-06-09 18:54:13 +08:00
parent 9ccb501a90
commit c68e35e9da
28 changed files with 383 additions and 268 deletions

View File

@ -43,9 +43,9 @@ const getKnowledgeList: (
*
* @param
*/
// const getAllDataset: (loading?: Ref<boolean>) => Promise<Result<any[]>> = (loading) => {
// return get(`${prefix}`, undefined, loading)
// }
const getAllKnowledge: (loading?: Ref<boolean>) => Promise<Result<any[]>> = (loading) => {
return get(`${prefix}`, undefined, loading)
}
/**
*
@ -260,5 +260,6 @@ export default {
getLarkDocumentList,
importLarkDocument,
generateRelated,
delKnowledge
delKnowledge,
getAllKnowledge
}

View File

@ -7,7 +7,7 @@ const prefix = '/workspace/' + localStorage.getItem('workspace_id') + '/knowledg
/**
*
* @param
* dataset_id, document_id
* knowledge_id, document_id
* {
"content": "string",
"title": "string",
@ -20,52 +20,83 @@ const prefix = '/workspace/' + localStorage.getItem('workspace_id') + '/knowledg
}
*/
const postParagraph: (
dataset_id: string,
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (dataset_id, document_id, data, loading) => {
return post(`${prefix}/${dataset_id}/document/${document_id}/paragraph`, data, undefined, loading)
) => Promise<Result<any>> = (knowledge_id, document_id, data, loading) => {
return post(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph`,
data,
undefined,
loading,
)
}
/**
*
* @param dataset_id document_id
* page {
"current_page": "string",
"page_size": "string",
}
* @param knowledge_id document_id
* param {
"title": "string",
"content": "string",
}
*/
const getParagraph: (
dataset_id: string,
knowledge_id: string,
document_id: string,
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (dataset_id, document_id, page, param, loading) => {
) => Promise<Result<any>> = (knowledge_id, document_id, page, param, loading) => {
return get(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/${page.current_page}/${page.page_size}`,
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${page.current_page}/${page.page_size}`,
param,
loading,
)
}
/**
*
* @param
* knowledge_id, document_id, paragraph_id
* {
"content": "string",
"title": "string",
"is_active": true,
"problem_list": [
{
"content": "string"
}
]
}
*/
const putParagraph: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`,
data,
undefined,
loading,
)
}
/**
*
* @param dataset_id, document_id, paragraph_id
* @param knowledge_id, document_id, paragraph_id
*/
const delParagraph: (
dataset_id: string,
knowledge_id: string,
document_id: string,
paragraph_id: string,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (dataset_id, document_id, paragraph_id, loading) => {
) => Promise<Result<boolean>> = (knowledge_id, document_id, paragraph_id, loading) => {
return del(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/${paragraph_id}`,
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`,
undefined,
{},
loading,
@ -73,50 +104,101 @@ const delParagraph: (
}
/**
*
* @param dataset_id, document_id
*
* @param knowledge_iddocument_idparagraph_id
*/
const delMulParagraph: (
dataset_id: string,
const getParagraphProblem: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (dataset_id, document_id, data, loading) => {
return del(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/_batch`,
undefined,
{ id_list: data },
loading,
)
paragraph_id: string,
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id: string) => {
return get(`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`)
}
/**
*
*
* @param
* dataset_id, document_id, paragraph_id
* knowledge_id, document_id, paragraph_id
* {
"content": "string",
"title": "string",
"is_active": true,
"problem_list": [
{
"id": "string",
"content": "string"
}
]
content": "string"
}
*/
const putParagraph: (
dataset_id: string,
const postParagraphProblem: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (dataset_id, document_id, paragraph_id, data, loading) => {
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id, data: any, loading) => {
return post(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`,
data,
{},
loading,
)
}
/**
*
* @param knowledge_id id
* @param document_id id
* @param loading
* @query data {
* paragraph_id id problem_id id
* }
*/
const putAssociationProblem: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/${paragraph_id}`,
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/association`,
{},
data,
loading,
)
}
/**
*
* @param knowledge_id, document_id
*/
const putMulParagraph: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_delete`,
{ id_list: data },
undefined,
loading,
)
}
/**
*
* @param knowledge_id, document_id
* {
"paragraph_id_list": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"prompt": "string",
"document_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
*/
const putBatchGenerateRelated: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_generate_related`,
data,
undefined,
loading,
@ -125,39 +207,25 @@ const putParagraph: (
/**
*
* @param dataset_id,target_dataset_id,
* @param knowledge_id,target_knowledge_id,
*/
const putMigrateMulParagraph: (
dataset_id: string,
knowledge_id: string,
document_id: string,
target_dataset_id: string,
target_knowledge_id: string,
target_document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (
dataset_id,
knowledge_id,
document_id,
target_dataset_id,
target_knowledge_id,
target_document_id,
data,
loading,
) => {
return put(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/migrate/dataset/${target_dataset_id}/document/${target_document_id}`,
data,
undefined,
loading,
)
}
const batchGenerateRelated: (
dataset_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (dataset_id, document_id, data, loading) => {
return put(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/batch_generate_related`,
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/migrate/dataset/${target_knowledge_id}/document/${target_document_id}`,
data,
undefined,
loading,
@ -165,36 +233,36 @@ const batchGenerateRelated: (
}
/**
*
* @param
* dataset_id, document_id, paragraph_id
* {
"id": "string",
content": "string"
}
*
* @param dataset_id, document_id,
* @query data {
* paragraph_id id problem_id id
* }
*/
const postProblem: (
const putDisassociationProblem: (
dataset_id: string,
document_id: string,
paragraph_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (dataset_id, document_id, paragraph_id, data: any, loading) => {
return post(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/${paragraph_id}/problem`,
data,
) => Promise<Result<boolean>> = (dataset_id, document_id, data, loading) => {
return put(
`${prefix}/${dataset_id}/document/${document_id}/paragraph/unassociation`,
{},
data,
loading,
)
}
export default {
getParagraph,
delParagraph,
putParagraph,
postParagraph,
delMulParagraph,
getParagraph,
putParagraph,
delParagraph,
getParagraphProblem,
postParagraphProblem,
putAssociationProblem,
putMulParagraph,
putBatchGenerateRelated,
putMigrateMulParagraph,
batchGenerateRelated,
postProblem,
putDisassociationProblem
}

View File

@ -1,7 +1,6 @@
import { Result } from '@/request/Result'
import { get, post, del, put } from '@/request/index'
import type { Ref } from 'vue'
import type { KeyValue } from '@/api/type/common'
import type { pageRequest } from '@/api/type/common'
const prefix = '/workspace/' + localStorage.getItem('workspace_id') + '/knowledge'
@ -22,13 +21,9 @@ const postProblems: (
/**
*
* @param knowledge_id,
* page {
"current_page": "string",
"page_size": "string",
}
* query {
"content": "string",
}
"content": "string",
}
*/
const getProblems: (
@ -106,7 +101,7 @@ const putMulAssociationProblem: (
*
* @param knowledge_id,
* data: array[string]
*/
*/
const putMulProblem: (
knowledge_id: string,
data: any,
@ -116,11 +111,11 @@ const putMulProblem: (
}
export default {
getProblems,
postProblems,
delProblems,
getProblems,
putProblems,
delProblems,
getDetailProblems,
putMulProblem,
putMulAssociationProblem,
putMulProblem,
}

View File

@ -51,7 +51,7 @@
/>
</el-form-item>
<el-form-item
v-if="['document', 'dataset'].includes(apiType)"
v-if="['document', 'knowledge'].includes(apiType)"
:label="$t('components.selectParagraph.title')"
prop="state"
>
@ -107,7 +107,7 @@ const stateMap = {
error: ['0', '1', '3', '4', '5', 'n']
}
const FormRef = ref()
const datasetId = ref<string>()
const knowledgeId = ref<string>()
const userId = user.userInfo?.id as string
const form = ref(prompt.get(userId))
const rules = reactive({
@ -135,7 +135,7 @@ watch(dialogVisible, (bool) => {
})
const open = (ids: string[], type: string, _datasetId?: string) => {
datasetId.value = _datasetId
knowledgeId.value = _datasetId
getModel()
idList.value = ids
apiType.value = type
@ -155,7 +155,7 @@ const submitHandle = async (formEl: FormInstance) => {
...form.value,
paragraph_id_list: idList.value
}
paragraphApi.batchGenerateRelated(id, documentId, data, loading).then(() => {
paragraphApi.putBatchGenerateRelated(id, documentId, data, loading).then(() => {
MsgSuccess(t('views.document.generateQuestion.successMessage'))
emit('refresh')
dialogVisible.value = false
@ -171,12 +171,12 @@ const submitHandle = async (formEl: FormInstance) => {
emit('refresh')
dialogVisible.value = false
})
} else if (apiType.value === 'dataset') {
} else if (apiType.value === 'knowledge') {
const data = {
...form.value,
state_list: stateMap[state.value]
}
knowledgeApi.generateRelated(id ? id : datasetId.value, data, loading).then(() => {
knowledgeApi.generateRelated(id ? id : knowledgeId.value, data, loading).then(() => {
MsgSuccess(t('views.document.generateQuestion.successMessage'))
dialogVisible.value = false
})
@ -188,7 +188,7 @@ const submitHandle = async (formEl: FormInstance) => {
function getModel() {
loading.value = true
knowledgeApi
.getKnowledgeModel(id ? id : datasetId.value)
.getKnowledgeModel(id ? id : knowledgeId.value)
.then((res: any) => {
modelOptions.value = groupBy(res?.data, 'provider')
loading.value = false

View File

@ -142,7 +142,7 @@ import { isWorkFlow } from '@/utils/application'
import { isAppIcon } from '@/utils/common'
import useStore from '@/stores'
const { common, dataset, application } = useStore()
const { common, knowledge, application } = useStore()
const route = useRoute()
const router = useRouter()
const {
@ -169,7 +169,7 @@ const isApplication = computed(() => {
return activeMenu.includes('application')
})
const isDataset = computed(() => {
return activeMenu.includes('dataset')
return activeMenu.includes('knowledge')
})
function openCreateDialog() {
@ -204,8 +204,8 @@ function changeMenu(id: string) {
function getDataset() {
loading.value = true
dataset
.asyncGetAllDataset()
knowledge
.asyncGetAllKnowledge()
.then((res: any) => {
list.value = res.data
common.saveBreadcrumb(list.value)

View File

@ -11,10 +11,9 @@ import problem from './problem'
import applicationOverview from './application-overview'
import applicationWorkflow from './application-workflow'
import paragraph from './paragraph'
import log from './log'
// import notFound from './404'
// import log from './log'
// import operateLog from './operate-log'
export default {
login,
@ -30,9 +29,8 @@ export default {
applicationOverview,
applicationWorkflow,
paragraph,
log,
// notFound,
// log,
// operateLog
}

View File

@ -0,0 +1,41 @@
export default {
title: '对话日志',
delete: {
confirmTitle: '是否删除问题:',
confirmMessage1: '删除问题关联的',
confirmMessage2: '个分段会被取消关联,请谨慎操作。'
},
buttons: {
clearStrategy: '清除策略',
prev: '上一条',
next: '下一条'
},
table: {
abstract: '摘要',
chat_record_count: '对话提问数',
user: '用户',
feedback: {
label: '用户反馈',
star: '赞同',
trample: '反对'
},
mark: '改进标注',
recenTimes: '最近对话时间'
},
addToDataset: '添加至知识库',
daysText: '天之前的对话记录',
selectDataset: '选择知识库',
selectDatasetPlaceholder: '请选择知识库',
saveToDocument: '保存至文档',
documentPlaceholder: '请选择文档',
editContent: '修改内容',
editMark: '修改标注',
form: {
content: {
placeholder: '请输入内容'
},
title: {
placeholder: '请给当前内容设置一个标题,以便管理查看'
}
}
}

View File

@ -17,10 +17,10 @@ const useDocumentStore = defineStore('document', {
})
})
},
async asyncPostDocument(datasetId: string, data: any, loading?: Ref<boolean>) {
async asyncPostDocument(knowledgeId: string, data: any, loading?: Ref<boolean>) {
return new Promise((resolve, reject) => {
documentApi
.postDocument(datasetId, data, loading)
.postDocument(knowledgeId, data, loading)
.then((data) => {
resolve(data)
})

View File

@ -31,18 +31,18 @@ const useKnowledgeStore = defineStore('knowledge', {
saveDocumentsFile(file: UploadUserFile[]) {
this.documentsFiles = file
},
// async asyncGetAllDataset(loading?: Ref<boolean>) {
// return new Promise((resolve, reject) => {
// knowledgeApi
// .getAllDataset(loading)
// .then((data) => {
// resolve(data)
// })
// .catch((error) => {
// reject(error)
// })
// })
// },
async asyncGetAllKnowledge(loading?: Ref<boolean>) {
return new Promise((resolve, reject) => {
knowledgeApi
.getAllKnowledge(loading)
.then((data) => {
resolve(data)
})
.catch((error) => {
reject(error)
})
})
},
async asyncGetKnowledgeDetail(
knowledge_id: string,
loading?: Ref<boolean>,

View File

@ -6,7 +6,7 @@ const useParagraphStore = defineStore('paragraph', {
state: () => ({}),
actions: {
async asyncPutParagraph(
datasetId: string,
knowledgeId: string,
documentId: string,
paragraphId: string,
data: any,
@ -14,7 +14,7 @@ const useParagraphStore = defineStore('paragraph', {
) {
return new Promise((resolve, reject) => {
paragraphApi
.putParagraph(datasetId, documentId, paragraphId, data, loading)
.putParagraph(knowledgeId, documentId, paragraphId, data, loading)
.then((data) => {
resolve(data)
})
@ -25,14 +25,58 @@ const useParagraphStore = defineStore('paragraph', {
},
async asyncDelParagraph(
datasetId: string,
knowledgeId: string,
documentId: string,
paragraphId: string,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
paragraphApi
.delParagraph(datasetId, documentId, paragraphId, loading)
.delParagraph(knowledgeId, documentId, paragraphId, loading)
.then((data) => {
resolve(data)
})
.catch((error) => {
reject(error)
})
})
},
async asyncDisassociationProblem(
knowledgeId: string,
documentId: string,
paragraphId: string,
problemId: string,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
const obj = {
paragraphId,
problemId,
}
paragraphApi
.putDisassociationProblem(knowledgeId, documentId, obj, loading)
.then((data) => {
resolve(data)
})
.catch((error) => {
reject(error)
})
})
},
async asyncAssociationProblem(
knowledgeId: string,
documentId: string,
paragraphId: string,
problemId: string,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
const obj = {
paragraphId,
problemId,
}
paragraphApi
.putAssociationProblem(knowledgeId, documentId, obj, loading)
.then((data) => {
resolve(data)
})

View File

@ -1,16 +1,15 @@
import { defineStore } from 'pinia'
import { type Ref } from 'vue'
import problemApi from '@/api/knowledge/problem'
import paragraphApi from '@/api/knowledge/paragraph'
import type { pageRequest } from '@/api/type/common'
const useProblemStore = defineStore('problem', {
state: () => ({}),
actions: {
async asyncPostProblem(datasetId: string, data: any, loading?: Ref<boolean>) {
async asyncPostProblem(knowledgeId: string, data: any, loading?: Ref<boolean>) {
return new Promise((resolve, reject) => {
problemApi
.postProblems(datasetId, data, loading)
.postProblems(knowledgeId, data, loading)
.then((data) => {
resolve(data)
})
@ -20,50 +19,14 @@ const useProblemStore = defineStore('problem', {
})
},
async asyncGetProblem(
datasetId: string,
knowledgeId: string,
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
problemApi
.getProblems(datasetId, page, param, loading)
.then((data) => {
resolve(data)
})
.catch((error) => {
reject(error)
})
})
},
async asyncDisassociationProblem(
datasetId: string,
documentId: string,
paragraphId: string,
problemId: string,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
paragraphApi
.disassociationProblem(datasetId, documentId, paragraphId, problemId, loading)
.then((data) => {
resolve(data)
})
.catch((error) => {
reject(error)
})
})
},
async asyncAssociationProblem(
datasetId: string,
documentId: string,
paragraphId: string,
problemId: string,
loading?: Ref<boolean>,
) {
return new Promise((resolve, reject) => {
paragraphApi
.associationProblem(datasetId, documentId, paragraphId, problemId, loading)
.getProblems(knowledgeId, page, param, loading)
.then((data) => {
resolve(data)
})

View File

@ -216,7 +216,7 @@
>
<el-dropdown-item
icon="Setting"
@click.stop="router.push({ path: `/dataset/${item.id}/setting` })"
@click.stop="router.push({ path: `/knowledge/${item.id}/setting` })"
>
{{ $t('common.setting') }}</el-dropdown-item
>

View File

@ -77,7 +77,7 @@ import { useRoute } from 'vue-router'
import documentApi from '@/api/knowledge/document'
import useStore from '@/stores'
const { dataset } = useStore()
const { knowledge } = useStore()
const route = useRoute()
const {
params: { id } // iddatasetID
@ -115,7 +115,7 @@ const submitHandle = () => {
}
function getDataset() {
dataset.asyncGetAllDataset(loading).then((res: any) => {
knowledge.asyncGetAllKnowledge(loading).then((res: any) => {
datasetList.value = res.data?.filter((v: any) => v.id !== id)
})
}

View File

@ -253,7 +253,7 @@ const isApplication = computed(() => {
return activeMenu.includes('application')
})
const isDataset = computed(() => {
return activeMenu.includes('dataset')
return activeMenu.includes('knowledge')
})
function changeHandle(val: string) {

View File

@ -140,14 +140,14 @@ import { MsgConfirm, MsgSuccess, MsgWarning } from '@/utils/message'
import { getImgUrl } from '@/utils/utils'
import { t } from '@/locales'
import type Node from 'element-plus/es/components/tree/src/model/node'
import dataset from '@/api/dataset'
import knowledgeApi from '@/api/knowledge/knowledge'
const router = useRouter()
const route = useRoute()
const {
query: { id, folder_token } // iddatasetIDid folder_tokentoken
query: { id, folder_token } // idknowledgeIDid folder_tokentoken
} = route
const datasetId = id as string
const knowledgeId = id as string
const folderToken = folder_token as string
const loading = ref(false)
@ -183,8 +183,8 @@ const props = {
const loadNode = (node: Node, resolve: (nodeData: Tree[]) => void) => {
const token = node.level === 0 ? folderToken : node.data.token // 使 folder_token使 node.data.token
dataset
.getLarkDocumentList(datasetId, token, {}, loading)
knowledgeApi
.getLarkDocumentList(knowledgeId, token, {}, loading)
.then((res: any) => {
const nodes = res.data.files as Tree[]
resolve(nodes)
@ -234,8 +234,8 @@ function submit() {
loading.value = false
return
}
dataset
.importLarkDocument(datasetId, newList, loading)
knowledge
.importLarkDocument(knowledgeId, newList, loading)
.then((res) => {
MsgSuccess(t('views.document.tip.importMessage'))
disabled.value = false

View File

@ -61,14 +61,14 @@ import documentApi from '@/api/document'
import { MsgConfirm, MsgSuccess } from '@/utils/message'
import { t } from '@/locales'
import useStore from '@/stores'
const { dataset, document } = useStore()
const documentsFiles = computed(() => dataset.documentsFiles)
const documentsType = computed(() => dataset.documentsType)
const { knowledge, document } = useStore()
const documentsFiles = computed(() => knowledge.documentsFiles)
const documentsType = computed(() => knowledge.documentsType)
const router = useRouter()
const route = useRoute()
const {
query: { id } // iddatasetIDid
query: { id } // idknowledgeIDid
} = route
const SetRulesRef = ref()
@ -93,7 +93,7 @@ async function next() {
documentApi.postQADocument(id as string, fd, loading).then((res) => {
MsgSuccess(t('common.submitSuccess'))
clearStore()
router.push({ path: `/dataset/${id}/document` })
router.push({ path: `/knowledge/${id}/document` })
})
}
} else if (documentsType.value === 'table') {
@ -108,7 +108,7 @@ async function next() {
documentApi.postTableDocument(id as string, fd, loading).then((res) => {
MsgSuccess(t('common.submitSuccess'))
clearStore()
router.push({ path: `/dataset/${id}/document` })
router.push({ path: `/knowledge/${id}/document` })
})
}
} else {
@ -123,8 +123,8 @@ const prev = () => {
}
function clearStore() {
dataset.saveDocumentsFile([])
dataset.saveDocumentsType('')
knowledge.saveDocumentsFile([])
knowledge.saveDocumentsType('')
}
function submit() {
loading.value = true
@ -148,7 +148,7 @@ function submit() {
.then(() => {
MsgSuccess(t('common.submitSuccess'))
clearStore()
router.push({ path: `/dataset/${id}/document` })
router.push({ path: `/knowledge/${id}/document` })
})
.catch(() => {
loading.value = false

View File

@ -1,6 +1,6 @@
<template>
<el-scrollbar>
<el-result icon="success" :title="`🎉 ${$t('views.dataset.ResultSuccess.title')} 🎉`">
<el-result icon="success" :title="`🎉 ${$t('views.knowledge.ResultSuccess.title')} 🎉`">
<template #sub-title>
<div class="mt-8">
<span class="bold">{{ data?.document_list.length || 0 }}</span>
@ -8,7 +8,7 @@
<el-divider direction="vertical" />
<span class="bold">{{ paragraph_count || 0 }}</span>
<el-text type="info" class="ml-4">{{
$t('views.dataset.ResultSuccess.paragraph')
$t('views.knowledge.ResultSuccess.paragraph')
}}</el-text>
<el-divider direction="vertical" />
<span class="bold">{{ numberFormat(char_length) || 0 }}</span>
@ -16,16 +16,16 @@
</div>
</template>
<template #extra>
<el-button @click="router.push({ path: `/dataset` })">{{
$t('views.dataset.ResultSuccess.buttons.toDataset')
<el-button @click="router.push({ path: `/knowledge` })">{{
$t('views.knowledge.ResultSuccess.buttons.toDataset')
}}</el-button>
<el-button type="primary" @click="router.push({ path: `/dataset/${data?.id}/${currentFolder.id}/document` })">{{
$t('views.dataset.ResultSuccess.buttons.toDocument')
<el-button type="primary" @click="router.push({ path: `/knowledge/${data?.id}/${currentFolder.id}/document` })">{{
$t('views.knowledge.ResultSuccess.buttons.toDocument')
}}</el-button>
</template>
</el-result>
<div class="result-success">
<p class="bolder">{{ $t('views.dataset.ResultSuccess.documentList') }}</p>
<p class="bolder">{{ $t('views.knowledge.ResultSuccess.documentList') }}</p>
<el-card
shadow="never"
class="file-List-card mt-8"
@ -43,7 +43,7 @@
<div>
<el-text type="info" class="mr-16"
>{{ item && item?.paragraph_count }}
{{ $t('views.dataset.ResultSuccess.paragraph_count') }}</el-text
{{ $t('views.knowledge.ResultSuccess.paragraph_count') }}</el-text
>
<el-text v-if="item.status === '1'">
<el-icon class="success"><SuccessFilled /></el-icon>
@ -52,7 +52,7 @@
<el-icon class="danger"><CircleCloseFilled /></el-icon>
</el-text>
<el-text v-else-if="item.status === '0'">
<el-icon class="is-loading primary"><Loading /></el-icon> {{ $t('views.dataset.ResultSuccess.loading') }}...
<el-icon class="is-loading primary"><Loading /></el-icon> {{ $t('views.knowledge.ResultSuccess.loading') }}...
</el-text>
</div>
</div>

View File

@ -120,13 +120,13 @@
</template>
<script setup lang="ts">
import { ref, computed, onMounted, reactive, watch } from 'vue'
import ParagraphPreview from '@/views/dataset/component/ParagraphPreview.vue'
import ParagraphPreview from '@/views/knowledge/component/ParagraphPreview.vue'
import { cutFilename } from '@/utils/utils'
import documentApi from '@/api/document'
import useStore from '@/stores'
import type { KeyValue } from '@/api/type/common'
const { dataset } = useStore()
const documentsFiles = computed(() => dataset.documentsFiles)
const { knowledge } = useStore()
const documentsFiles = computed(() => knowledge.documentsFiles)
const splitPatternList = ref<Array<KeyValue<string, string>>>([])
const radio = ref('1')

View File

@ -202,9 +202,9 @@ import { MsgError } from '@/utils/message'
import documentApi from '@/api/document'
import useStore from '@/stores'
import { t } from '@/locales'
const { dataset } = useStore()
const documentsFiles = computed(() => dataset.documentsFiles)
const documentsType = computed(() => dataset.documentsType)
const { knowledge } = useStore()
const documentsFiles = computed(() => knowledge.documentsFiles)
const documentsType = computed(() => knowledge.documentsType)
const form = ref({
fileType: 'txt',
fileList: [] as any
@ -218,8 +218,8 @@ const rules = reactive({
const FormRef = ref()
watch(form.value, (value) => {
dataset.saveDocumentsType(value.fileType)
dataset.saveDocumentsFile(value.fileList)
knowledge.saveDocumentsType(value.fileType)
knowledge.saveDocumentsFile(value.fileList)
})
function downloadTemplate(type: string) {

View File

@ -18,23 +18,23 @@
>
<el-form-item
:label="$t('views.dataset.datasetForm.form.source_url.label')"
:label="$t('views.knowledge.form.source_url.label')"
prop="source_url"
v-if="datasetForm.type === '1'"
>
<el-input
v-model="datasetForm.source_url"
:placeholder="$t('views.dataset.datasetForm.form.source_url.placeholder')"
:placeholder="$t('views.knowledge.form.source_url.placeholder')"
@blur="datasetForm.source_url = datasetForm.source_url.trim()"
/>
</el-form-item>
<el-form-item
:label="$t('views.dataset.datasetForm.form.selector.label')"
:label="$t('views.knowledge.form.selector.label')"
v-if="datasetForm.type === '1'"
>
<el-input
v-model="datasetForm.selector"
:placeholder="$t('views.dataset.datasetForm.form.selector.placeholder')"
:placeholder="$t('views.knowledge.form.selector.placeholder')"
@blur="datasetForm.selector = datasetForm.selector.trim()"
/>
</el-form-item>
@ -119,7 +119,7 @@ const rules = reactive({
source_url: [
{
required: true,
message: t('views.dataset.datasetForm.form.source_url.requiredMessage'),
message: t('views.knowledge.form.source_url.requiredMessage'),
trigger: 'blur'
}
],
@ -147,14 +147,14 @@ const rules = reactive({
user_id: [
{
required: true,
message: t('views.dataset.datasetForm.form.user_id.requiredMessage'),
message: t('views.knowledge.form.user_id.requiredMessage'),
trigger: 'blur'
}
],
token: [
{
required: true,
message: t('views.dataset.datasetForm.form.token.requiredMessage'),
message: t('views.knowledge.form.token.requiredMessage'),
trigger: 'blur'
}
]
@ -186,21 +186,21 @@ const submitHandle = async () => {
}
knowledgeApi.postDataset(obj, loading).then((res) => {
MsgSuccess(t('common.createSuccess'))
router.push({ path: `/dataset/${res.data.id}/document` })
router.push({ path: `/knowledge/${res.data.id}/document` })
emit('refresh')
})
} else if (datasetForm.value.type === '1') {
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
knowledgeApi.postWebDataset(obj, loading).then((res) => {
MsgSuccess(t('common.createSuccess'))
router.push({ path: `/dataset/${res.data.id}/document` })
router.push({ path: `/knowledge/${res.data.id}/document` })
emit('refresh')
})
} else if (datasetForm.value.type === '2') {
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
knowledgeApi.postLarkDataset(obj, loading).then((res) => {
MsgSuccess(t('common.createSuccess'))
router.push({ path: `/dataset/${res.data.id}/document` })
router.push({ path: `/knowledge/${res.data.id}/document` })
emit('refresh')
})
}

View File

@ -325,7 +325,7 @@ function openCreateDialog(data: any) {
// if (res?.data) {
// CreateDatasetDialogRef.value.open()
// } else if (res?.code === 400) {
// MsgConfirm(t('common.tip'), t('views.dataset.tip.professionalMessage'), {
// MsgConfirm(t('common.tip'), t('views.knowledge.tip.professionalMessage'), {
// cancelButtonText: t('common.confirm'),
// confirmButtonText: t('common.professional'),
// })
@ -388,7 +388,7 @@ function openCreateFolder() {
const GenerateRelatedDialogRef = ref<InstanceType<typeof GenerateRelatedDialog>>()
function openGenerateDialog(row: any) {
if (GenerateRelatedDialogRef.value) {
GenerateRelatedDialogRef.value.open([], 'dataset', row.id)
GenerateRelatedDialogRef.value.open([], 'knowledge', row.id)
}
}

View File

@ -120,7 +120,7 @@ function changeState(row: any) {
const GenerateRelatedDialogRef = ref<InstanceType<typeof GenerateRelatedDialog>>()
function openGenerateDialog(row: any) {
if (GenerateRelatedDialogRef.value) {
GenerateRelatedDialogRef.value.open([], 'dataset', row.id)
GenerateRelatedDialogRef.value.open([], 'knowledge', row.id)
}
}
function openSelectDocumentDialog(row?: any) {

View File

@ -33,7 +33,7 @@
<ProblemComponent
:problemId="problemId"
:docId="document_id"
:datasetId="dataset_id"
:knowledgeId="dataset_id"
ref="ProblemRef"
/>
</el-col>

View File

@ -63,12 +63,12 @@ import useStore from '@/stores'
const props = defineProps({
problemId: String,
docId: String,
datasetId: String
knowledgeId: String,
})
const route = useRoute()
const {
params: { id, documentId } // iddatasetId
params: { id, documentId }, // idknowledgeId
} = route as any
const { problem } = useStore()
@ -90,19 +90,19 @@ watch(
}
},
{
immediate: true
}
immediate: true,
},
)
function delProblemHandle(item: any, index: number) {
if (item.id) {
problem
.asyncDisassociationProblem(
props.datasetId || id,
props.knowledgeId || id,
documentId || props.docId,
props.problemId || '',
item.id,
loading
loading,
)
.then((res: any) => {
getProblemList()
@ -115,7 +115,7 @@ function delProblemHandle(item: any, index: number) {
function getProblemList() {
loading.value = true
paragraphApi
.getProblem(props.datasetId || id, documentId || props.docId, props.problemId || '')
.getParagraphProblem(props.knowledgeId || id, documentId || props.docId, props.problemId || '')
.then((res) => {
problemList.value = res.data
loading.value = false
@ -135,20 +135,20 @@ function addProblemHandle(val: string) {
if (props.problemId) {
const api = problemOptions.value.some((option) => option.id === val)
? problem.asyncAssociationProblem(
props.datasetId || id,
props.knowledgeId || id,
documentId || props.docId,
props.problemId,
val,
loading
loading,
)
: paragraphApi.postProblem(
props.datasetId || id,
: paragraphApi.postParagraphProblem(
props.knowledgeId || id,
documentId || props.docId,
props.problemId,
{
content: val
content: val,
},
loading
loading,
)
api.then(() => {
getProblemList()
@ -174,10 +174,10 @@ const remoteMethod = (query: string) => {
function getProblemOption(filterText?: string) {
return problem
.asyncGetProblem(
props.datasetId || (id as string),
props.knowledgeId || (id as string),
{ current_page: 1, page_size: 100 },
filterText && { content: filterText },
optionLoading
optionLoading,
)
.then((res: any) => {
problemOptions.value = res.data.records
@ -194,11 +194,7 @@ onUnmounted(() => {
})
defineExpose({
problemList
problemList,
})
</script>
<style scoped lang="scss">
.question-tag {
// width: 217px;
}
</style>
<style scoped lang="scss"></style>

View File

@ -89,7 +89,7 @@ import type { FormInstance, FormRules } from 'element-plus'
import paragraphApi from '@/api/knowledge/paragraph'
import useStore from '@/stores'
import { t } from '@/locales'
const { dataset, document } = useStore()
const { knowledge, document } = useStore()
const route = useRoute()
const {
@ -144,7 +144,7 @@ function getDocument(id: string) {
}
function getDataset() {
dataset.asyncGetAllDataset(loading).then((res: any) => {
knowledge.asyncGetAllKnowledge(loading).then((res: any) => {
datasetList.value = res.data
})
}

View File

@ -76,27 +76,36 @@
<VueDraggable
ref="el"
v-bind:modelValue="paragraphDetail"
:disabled="isBatch === true"
handle=".handle"
:animation="150"
ghostClass="ghost"
@end="onEnd"
>
<template v-for="(item, index) in paragraphDetail" :key="item.id">
<div class="handle paragraph-card flex" :id="item.id">
<img
src="@/assets/sort.svg"
alt=""
height="15"
class="handle-img mr-8 mt-24 cursor"
/>
<ParagraphCard
:data="item"
class="mb-8 w-full"
@changeState="changeState"
@deleteParagraph="deleteParagraph"
/>
</div>
</template>
<el-checkbox-group v-model="multipleSelection">
<template v-for="(item, index) in paragraphDetail" :key="item.id">
<!-- 批量操作 -->
<div class="paragraph-card flex" :id="item.id" v-if="isBatch === true">
<el-checkbox :value="item.id" />
<ParagraphCard :data="item" class="mb-8 w-full" />
</div>
<!-- 非批量操作 -->
<div class="handle paragraph-card flex" :id="item.id" v-else>
<img
src="@/assets/sort.svg"
alt=""
height="15"
class="handle-img mr-8 mt-24 cursor"
/>
<ParagraphCard
:data="item"
class="mb-8 w-full"
@changeState="changeState"
@deleteParagraph="deleteParagraph"
/>
</div>
</template>
</el-checkbox-group>
</VueDraggable>
</InfiniteScroll>
</div>
@ -206,7 +215,7 @@ function deleteMulParagraph() {
)
.then(() => {
paragraphApi
.delMulParagraph(id, documentId, multipleSelection.value, changeStateloading)
.putMulParagraph(id, documentId, multipleSelection.value, changeStateloading)
.then(() => {
paragraphDetail.value = paragraphDetail.value.filter(
(v) => !multipleSelection.value.includes(v.id),

View File

@ -120,7 +120,7 @@ const { problem, document } = useStore()
const route = useRoute()
const {
params: { id }, // datasetId
params: { id }, // knowledgeId
} = route as any
const emit = defineEmits(['refresh'])

View File

@ -141,7 +141,7 @@ import { ref, computed, onMounted } from 'vue'
import { relatedObject } from '@/utils/utils'
import { SearchMode } from '@/enums/application'
import useStore from '@/stores'
const { dataset, application, user } = useStore()
const { knowledge, application, user } = useStore()
const {
params: { id }
} = app.config.globalProperties.$route as any
@ -208,7 +208,7 @@ function getDataset() {
datasetList.value = res.data
})
} else {
dataset.asyncGetAllDataset(datasetLoading).then((res: any) => {
knowledge.asyncGetAllKnowledge(datasetLoading).then((res: any) => {
datasetList.value = res.data?.filter((v: any) => v.user_id === user.userInfo?.id)
})
}