Skip to content

Commit 82d4a33

Browse files
feat: paragraph
1 parent 0342aee commit 82d4a33

File tree

8 files changed

+165
-82
lines changed

8 files changed

+165
-82
lines changed

ui/src/api/knowledge/knowledge.ts

Lines changed: 130 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import {Result} from '@/request/Result'
2-
import {get, post, del, put} from '@/request/index'
3-
import {type Ref} from 'vue'
4-
import type {pageRequest} from '@/api/type/common'
5-
import type {knowledgeData} from '@/api/type/knowledge'
1+
import { Result } from '@/request/Result'
2+
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
3+
import { type Ref } from 'vue'
4+
import type { pageRequest } from '@/api/type/common'
5+
import type { knowledgeData } from '@/api/type/knowledge'
66

77
const prefix = '/workspace/' + localStorage.getItem('workspace_id')
88

@@ -14,10 +14,10 @@ const prefix = '/workspace/' + localStorage.getItem('workspace_id')
1414
* user_id: string,
1515
* desc: string,}
1616
*/
17-
const getKnowledgeByFolder: (
18-
data?: any,
19-
loading?: Ref<boolean>,
20-
) => Promise<Result<Array<any>>> = (data, loading) => {
17+
const getKnowledgeByFolder: (data?: any, loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
18+
data,
19+
loading,
20+
) => {
2121
return get(`${prefix}/knowledge`, data, loading)
2222
}
2323

@@ -36,11 +36,7 @@ const getKnowledgeList: (
3636
param?: any,
3737
loading?: Ref<boolean>,
3838
) => Promise<Result<any>> = (page, param, loading) => {
39-
return get(
40-
`${prefix}/knowledge/${page.current_page}/${page.page_size}`,
41-
param,
42-
loading,
43-
)
39+
return get(`${prefix}/knowledge/${page.current_page}/${page.page_size}`, param, loading)
4440
}
4541

4642
/**
@@ -61,12 +57,7 @@ const putSyncWebKnowledge: (
6157
sync_type: string,
6258
loading?: Ref<boolean>,
6359
) => Promise<Result<any>> = (knowledge_id, sync_type, loading) => {
64-
return put(
65-
`${prefix}/knowledge/${knowledge_id}/sync`,
66-
undefined,
67-
{sync_type},
68-
loading,
69-
)
60+
return put(`${prefix}/knowledge/${knowledge_id}/sync`, undefined, { sync_type }, loading)
7061
}
7162

7263
/**
@@ -77,22 +68,17 @@ const putReEmbeddingKnowledge: (
7768
knowledge_id: string,
7869
loading?: Ref<boolean>,
7970
) => Promise<Result<any>> = (knowledge_id, loading) => {
80-
return put(
81-
`${prefix}/knowledge/${knowledge_id}/embedding`,
82-
undefined,
83-
undefined,
84-
loading,
85-
)
71+
return put(`${prefix}/knowledge/${knowledge_id}/embedding`, undefined, undefined, loading)
8672
}
8773

8874
/**
8975
* 知识库详情
9076
* @param 参数 knowledge_id
9177
*/
92-
const getKnowledgeDetail: (
93-
knowledge_id: string,
94-
loading?: Ref<boolean>,
95-
) => Promise<Result<any>> = (knowledge_id, loading) => {
78+
const getKnowledgeDetail: (knowledge_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
79+
knowledge_id,
80+
loading,
81+
) => {
9682
return get(`${prefix}/knowledge/${knowledge_id}`, undefined, loading)
9783
}
9884

@@ -106,10 +92,10 @@ const getKnowledgeDetail: (
10692
"embedding": "string"
10793
}
10894
*/
109-
const postKnowledge: (
110-
data: knowledgeData,
111-
loading?: Ref<boolean>,
112-
) => Promise<Result<any>> = (data, loading) => {
95+
const postKnowledge: (data: knowledgeData, loading?: Ref<boolean>) => Promise<Result<any>> = (
96+
data,
97+
loading,
98+
) => {
11399
return post(`${prefix}/knowledge/base`, data, undefined, loading, 1000 * 60 * 5)
114100
}
115101

@@ -125,10 +111,10 @@ const postKnowledge: (
125111
"selector": "string"
126112
}
127113
*/
128-
const postWebKnowledge: (
129-
data: any,
130-
loading?: Ref<boolean>,
131-
) => Promise<Result<any>> = (data, loading) => {
114+
const postWebKnowledge: (data: any, loading?: Ref<boolean>) => Promise<Result<any>> = (
115+
data,
116+
loading,
117+
) => {
132118
return post(`${prefix}/knowledge/web`, data, undefined, loading)
133119
}
134120
/**
@@ -148,6 +134,105 @@ const putKnowledge: (
148134
return put(`${prefix}/knowledge/${knowledge_id}`, data, undefined, loading)
149135
}
150136

137+
/**
138+
* 命中测试列表
139+
* @param knowledge_id
140+
* @param loading
141+
* @query { query_text: string, top_number: number, similarity: number }
142+
* @returns
143+
*/
144+
const getKnowledgeHitTest: (
145+
knowledge_id: string,
146+
data: any,
147+
loading?: Ref<boolean>,
148+
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
149+
return get(`${prefix}/${knowledge_id}/hit_test`, data, loading)
150+
}
151+
152+
/**
153+
* 导出知识库
154+
* @param knowledge_name 知识库名称
155+
* @param knowledge_id 知识库id
156+
* @returns
157+
*/
158+
const exportKnowledge: (
159+
knowledge_name: string,
160+
knowledge_id: string,
161+
loading?: Ref<boolean>,
162+
) => Promise<any> = (knowledge_name, knowledge_id, loading) => {
163+
return exportExcel(knowledge_name + '.xlsx', `dataset/${knowledge_id}/export`, undefined, loading)
164+
}
165+
/**
166+
*导出Zip知识库
167+
* @param knowledge_name 知识库名称
168+
* @param knowledge_id 知识库id
169+
* @param loading 加载器
170+
* @returns
171+
*/
172+
const exportZipKnowledge: (
173+
knowledge_name: string,
174+
knowledge_id: string,
175+
loading?: Ref<boolean>,
176+
) => Promise<any> = (knowledge_name, knowledge_id, loading) => {
177+
return exportFile(
178+
knowledge_name + '.zip',
179+
`dataset/${knowledge_id}/export_zip`,
180+
undefined,
181+
loading,
182+
)
183+
}
184+
185+
/**
186+
* 获取当前用户可使用的模型列表
187+
* @param application_id
188+
* @param loading
189+
* @query { query_text: string, top_number: number, similarity: number }
190+
* @returns
191+
*/
192+
const getKnowledgeModel: (
193+
knowledge_id: string,
194+
loading?: Ref<boolean>,
195+
) => Promise<Result<Array<any>>> = (knowledge_id, loading) => {
196+
return get(`${prefix}/${knowledge_id}/model`, loading)
197+
}
198+
/**
199+
* 获取飞书文档列表
200+
* @param knowledge_id
201+
* @param folder_token
202+
* @param loading
203+
* @returns
204+
*/
205+
const getLarkDocumentList: (
206+
knowledge_id: string,
207+
folder_token: string,
208+
data: any,
209+
loading?: Ref<boolean>,
210+
) => Promise<Result<Array<any>>> = (knowledge_id, folder_token, data, loading) => {
211+
return post(`${prefix}/lark/${knowledge_id}/${folder_token}/doc_list`, data, null, loading)
212+
}
213+
214+
const importLarkDocument: (
215+
knowledge_id: string,
216+
data: any,
217+
loading?: Ref<boolean>,
218+
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
219+
return post(`${prefix}/lark/${knowledge_id}/import`, data, null, loading)
220+
}
221+
/**
222+
* 生成关联问题
223+
* @param knowledge_id 知识库id
224+
* @param data
225+
* @param loading
226+
* @returns
227+
*/
228+
const generateRelated: (
229+
knowledge_id: string,
230+
data: any,
231+
loading?: Ref<boolean>,
232+
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
233+
return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading)
234+
}
235+
151236
export default {
152237
getKnowledgeByFolder,
153238
getKnowledgeList,
@@ -157,4 +242,11 @@ export default {
157242
postKnowledge,
158243
postWebKnowledge,
159244
putKnowledge,
245+
getKnowledgeHitTest,
246+
exportKnowledge,
247+
exportZipKnowledge,
248+
getKnowledgeModel,
249+
getLarkDocumentList,
250+
importLarkDocument,
251+
generateRelated,
160252
}

ui/src/components/generate-related-dialog/index.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ const submitHandle = async (formEl: FormInstance) => {
176176
...form.value,
177177
state_list: stateMap[state.value]
178178
}
179-
datasetApi.generateRelated(id ? id : datasetId.value, data, loading).then(() => {
179+
knowledgeApi.generateRelated(id ? id : datasetId.value, data, loading).then(() => {
180180
MsgSuccess(t('views.document.generateQuestion.successMessage'))
181181
dialogVisible.value = false
182182
})
@@ -187,8 +187,8 @@ const submitHandle = async (formEl: FormInstance) => {
187187
188188
function getModel() {
189189
loading.value = true
190-
datasetApi
191-
.getDatasetModel(id ? id : datasetId.value)
190+
knowledgeApi
191+
.getKnowledgeModel(id ? id : datasetId.value)
192192
.then((res: any) => {
193193
modelOptions.value = groupBy(res?.data, 'provider')
194194
loading.value = false

ui/src/stores/modules/knowledge.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const useKnowledgeStore = defineStore('knowledge', {
5858
})
5959
})
6060
},
61-
async asyncSyncDataset(
61+
async asyncSyncKnowledge(
6262
id: string,
6363
sync_type: string,
6464
loading?: Ref<boolean>,

ui/src/views/hit-test/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ function getHitTestList() {
312312
...formInline.value,
313313
}
314314
if (isDataset.value) {
315-
datasetApi.getDatasetHitTest(id, obj, loading).then((res) => {
315+
knowledgeApi.getDatasetHitTest(id, obj, loading).then((res) => {
316316
paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true)
317317
questionTitle.value = inputValue.value
318318
inputValue.value = ''

ui/src/views/knowledge/component/SyncWebDialog.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@
3838
import { ref, watch } from 'vue'
3939
4040
import useStore from '@/stores'
41-
const { dataset } = useStore()
41+
const { knowledge } = useStore()
4242
4343
const emit = defineEmits(['refresh'])
4444
const loading = ref<boolean>(false)
4545
const method = ref('replace')
46-
const datasetId = ref('')
46+
const knowledgeId = ref('')
4747
4848
const dialogVisible = ref<boolean>(false)
4949
@@ -54,12 +54,12 @@ watch(dialogVisible, (bool) => {
5454
})
5555
5656
const open = (id: string) => {
57-
datasetId.value = id
57+
knowledgeId.value = id
5858
dialogVisible.value = true
5959
}
6060
6161
const submit = () => {
62-
dataset.asyncSyncDataset(datasetId.value, method.value, loading).then((res: any) => {
62+
knowledge.asyncSyncKnowledge(knowledgeId.value, method.value, loading).then((res: any) => {
6363
emit('refresh', res.data)
6464
dialogVisible.value = false
6565
})

ui/src/views/knowledge/create-component/CreateWebKnowledgeDialog copy.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,21 +184,21 @@ const submitHandle = async () => {
184184
...BaseFormRef.value.form,
185185
type: datasetForm.value.type
186186
}
187-
datasetApi.postDataset(obj, loading).then((res) => {
187+
knowledgeApi.postDataset(obj, loading).then((res) => {
188188
MsgSuccess(t('common.createSuccess'))
189189
router.push({ path: `/dataset/${res.data.id}/document` })
190190
emit('refresh')
191191
})
192192
} else if (datasetForm.value.type === '1') {
193193
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
194-
datasetApi.postWebDataset(obj, loading).then((res) => {
194+
knowledgeApi.postWebDataset(obj, loading).then((res) => {
195195
MsgSuccess(t('common.createSuccess'))
196196
router.push({ path: `/dataset/${res.data.id}/document` })
197197
emit('refresh')
198198
})
199199
} else if (datasetForm.value.type === '2') {
200200
const obj = { ...BaseFormRef.value.form, ...datasetForm.value }
201-
datasetApi.postLarkDataset(obj, loading).then((res) => {
201+
knowledgeApi.postLarkDataset(obj, loading).then((res) => {
202202
MsgSuccess(t('common.createSuccess'))
203203
router.push({ path: `/dataset/${res.data.id}/document` })
204204
emit('refresh')

ui/src/views/paragraph/component/ParagraphCard.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
@mouseleave="cardLeave()"
77
>
88
<h2 class="mb-16">{{ data.title || '-' }}</h2>
9-
<el-card
9+
<el-card
10+
v-show="show"
1011
class="paragraph-box-operation mt-8 mr-8"
1112
shadow="always"
1213
style="--el-card-padding: 8px 12px; --el-card-border-radius: 8px"
@@ -75,6 +76,7 @@ import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vu
7576
import ParagraphDialog from '@/views/paragraph/component/ParagraphDialog.vue'
7677
import SelectDocumentDialog from '@/views/paragraph/component/SelectDocumentDialog.vue'
7778
import { MsgSuccess, MsgConfirm } from '@/utils/message'
79+
7880
const { paragraph } = useStore()
7981
8082
const route = useRoute()
@@ -85,6 +87,8 @@ const props = defineProps<{
8587
data: any
8688
}>()
8789
90+
const emit = defineEmits(['changeState', 'deleteParagraph'])
91+
const loading = ref(false)
8892
const changeStateloading = ref(false)
8993
const show = ref(false)
9094
// card上面存在dropdown菜单
@@ -105,8 +109,7 @@ function changeState(row: any) {
105109
paragraph
106110
.asyncPutParagraph(id, documentId, row.id, obj, changeStateloading)
107111
.then((res) => {
108-
// const index = paragraphDetail.value.findIndex((v) => v.id === row.id)
109-
// paragraphDetail.value[index].is_active = !paragraphDetail.value[index].is_active
112+
emit('changeState', row.id)
110113
return true
111114
})
112115
.catch(() => {
@@ -138,8 +141,7 @@ function deleteParagraph(row: any) {
138141
)
139142
.then(() => {
140143
paragraph.asyncDelParagraph(id, documentId, row.id, loading).then(() => {
141-
// const index = paragraphDetail.value.findIndex((v) => v.id === row.id)
142-
// paragraphDetail.value.splice(index, 1)
144+
emit('deleteParagraph', row.id)
143145
MsgSuccess(t('common.deleteSuccess'))
144146
})
145147
})
@@ -163,7 +165,6 @@ function refreshMigrateParagraph() {}
163165
border: 1px solid #ffffff;
164166
box-shadow: none !important;
165167
position: relative;
166-
z-index: 9999;
167168
&:hover {
168169
background: rgba(31, 35, 41, 0.1);
169170
border: 1px solid #dee0e3;

0 commit comments

Comments
 (0)