From bb2503ed5613cc39582acf1dd516fa7ac47540e7 Mon Sep 17 00:00:00 2001 From: liudong <liudong> Date: 星期六, 24 八月 2024 20:31:54 +0800 Subject: [PATCH] 知识库列表修改 --- src/views/sessionManager/components/updataFile.vue | 276 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 234 insertions(+), 42 deletions(-) diff --git a/src/views/sessionManager/components/updataFile.vue b/src/views/sessionManager/components/updataFile.vue index ecd2970..47f35bd 100644 --- a/src/views/sessionManager/components/updataFile.vue +++ b/src/views/sessionManager/components/updataFile.vue @@ -31,19 +31,30 @@ ref="uploadRef" @change="onChange" multiple + :limit="1" /> - <div style="width: 100%;margin-top: 10px;display: flex; justify-content: space-between;"> + <div style="width: 100%;margin-top: 10px;display: flex; justify-content: space-between;" class="upload-wrap"> <div> <span>瑙f瀽鏂规硶: </span> - <a-radio-group v-model="parser_id"> - <a-radio - v-for="item in parser_ids" - :key="item.value" - :value="item.value" - style="margin-right: 10px" - >{{item.name}}</a-radio> + <a-radio-group v-model="parser_id" style="width: 400px;" @change="parserChange"> + <a-popover title="" + v-for="item in filterData" + :key="item.value" + > + <a-radio + :value="item.value" + style="margin-right: 10px" + >{{item.name}}</a-radio> + <template #content> + <p style="max-width: 300px">{{item.parser_config_str}}</p> + </template> + </a-popover> </a-radio-group> </div> + <a-select :style="{width:'100px', margin: '0 10px'}" :default-value="['閫氱敤', '澶氭ā鎬�']" v-model="parser_configs" multiple size="small"> + <a-option v-for="item in parser_ids" :key="item.value">{{ item.name }}</a-option> + </a-select> + <p class="config-text">鏇村閰嶇疆</p> <a-button :loading="onFileSelectedLoading" @click="upDataFile" @@ -64,7 +75,7 @@ import { onMounted, onBeforeMount, reactive, ref, computed, watch } from "vue"; import axios from "axios"; import { Message } from "@arco-design/web-vue"; -import { uploadWithoutKb } from "@/api/session"; +import { addSessionApi, getParseMethodsListApi, getSessionDetailsApi, uploadWithoutKb } from "@/api/session"; const visible = ref(false); const loading = ref(false); @@ -73,7 +84,7 @@ const filesBtn = ref(null); const onFileSelectedLoading = ref(false); const parser_id = ref(""); -const parser_ids = ref([]); +const parseridConfig = ref(false); const uploaditemList = ref([]); const activeSessionId = ref(''); let kbtenantInfo = reactive({ @@ -89,7 +100,6 @@ tenant_id: '948fc6fa41ab11ef8fb80242ac120004', parser_idObj: {}, }); -const uploadList = ref([]); const parser = reactive({ naive: { "chunk_token_num": 676, @@ -103,8 +113,104 @@ "random_seed": 1500 } }, // 鐢ㄦ埛鍚� + qa: { + "entity_types": [ + "organization", + "person", + "location", + "event", + "time" + ], + "raptor": { + "use_raptor": false + } + }, + resume: {}, + manual: {}, + table: {}, + paper: {}, + book: {}, + laws: {}, + presentation: {}, + picture: {}, + one: {}, }); +const parser_configs = ref(['閫氱敤', '澶氭ā鎬�']); +const parser_ids = ref([ + { + name: '閫氱敤', + value: 'naive', + parser_config: parser.naive, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丒XCEL銆丳PT銆両MAGE銆丳DF銆乀XT' + }, + { + name: 'Q&A', + value: 'qa', + parser_config: parser.qa, + parser_config_str: '鏀寔 excel 鍜� csv/txt 鏂囦欢鏍煎紡銆� \n' + + '濡傛灉鏂囦欢浠� excel 鏍煎紡锛屽垯搴旂敱涓や釜鍒楃粍鎴� 娌℃湁鏍囬锛氫竴涓彁鍑洪棶棰橈紝鍙︿竴涓敤浜庣瓟妗堬紝 绛旀鍒椾箣鍓嶇殑闂鍒椼�俓n' + + '濡傛灉鏂囦欢浠� csv/txt 鏍煎紡涓� 鐢ㄤ綔鍒嗗紑闂鍜岀瓟妗堢殑瀹氱晫绗︺�俓n' + }, + { + name: '绠�鍘�', + value: 'resume', + parser_config: parser.resume, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丳DF銆乀XT' + }, + { + name: '璇存槑涔�', + value: 'manual', + parser_config: parser.manual, + parser_config_str: '浠呮敮鎸丳DF' + }, + { + name: '琛ㄦ牸', + value: 'table', + parser_config: parser.table, + parser_config_str: '鏀寔EXCEL鍜孋SV/TXT鏍煎紡鏂囥�� \n' + + '瀵逛簬 csv 鎴� txt 鏂囦欢锛屽垪涔嬮棿鐨勫垎闅旂涓� TAB锛孿n' + + '绗竴琛屽繀椤绘槸鍒楁爣棰樸�俓n' + }, + { + name: '澶氭ā鎬�', + value: 'paper', + parser_config: parser.paper, + parser_config_str: '浠呮敮鎸丳DF鏂囦欢' + }, + { + name: '涔︾睄', + value: 'book', + parser_config: parser.book, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丳DF銆乀XT' + }, + { + name: '娉曞緥鏂囦欢', + value: 'laws', + parser_config: parser.laws, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丳DF銆乀XT' + }, + { + name: 'PPT', + value: 'presentation', + parser_config: parser.presentation, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负PDF銆丳PTX' + }, + { + name: '鍥剧墖', + value: 'picture', + parser_config: parser.picture, + parser_config_str: '鏀寔鍥惧儚鏂囦欢' + }, + { + name: '鏁翠綋', + value: 'one', + parser_config: parser.one, + parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丒XCEL銆丳DF銆乀XT' + }, +]); +const parser_idsArr = ref([]); +const uploadList = ref([]); const props = defineProps(["sessionId"]); const emit = defineEmits(["selectFileCallback"]); const uploadRef = ref(); @@ -113,26 +219,85 @@ return ".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,"; }); -const init = () => { - parser_ids.value = kbtenantInfo.parser_ids.split(",").map((item) => { - const [value1, value2] = item.split(":"); - return { - name: value2, - value: value1 - }; +const filterData = computed(() => { + const result = parser_ids.value.filter(val => parser_configs.value.includes(val.name)).reverse().slice(0,4).reverse(); + result.unshift({ + name: '鏅鸿兘璇嗗埆', + value: '', + parser_config_str: '', + parser_config: '' }); + return result; +}); + +const init = () => { + // parser_ids.value = kbtenantInfo.parser_ids.split(",").map((item) => { + // const [value1, value2] = item.split(":"); + // return { + // name: value2, + // value: value1 + // }; + // }); + getParseMethodsList(); } + +const chooseParser = (item) => { + console.log(item); +}; const onChange = (fileList) => { files.value = fileList; + files.value.forEach((item) => { + + }); + }; +const parserChange = ()=>{ + parseridConfig.value = false; +} const visibleChange = (e) => { e.stopPropagation(); visible.value = !visible.value; } -const upDataFile = () => { + +const getIconByExtension = (extension) => { + const fileExtension = ref(''); + fileExtension.value = extension.split('.').pop(); + let type = ''; + parser_idsArr.value.forEach((item)=>{ + // 鍖呭惈鍏冪礌 + if (item.formats.includes(fileExtension.value)){ + type = item.id; + } + }) + return type; +}; + +const upDataFile = async () => { + // if (!activeSessionId.value) { + // //鏂板缓浼氳瘽 + // const res = await addSessionApi({ + // dialog_id: '', + // conversation_desc: '', + // }); + // // console.log(res, "res"); + // if (res.code == 200) { + // // console.log(res.data.conversation_id); + // activeSessionId.value = res.data?.conversation_id; + // const { code, data } = await getSessionDetailsApi(res.data?.conversation_id); + // if (code === 200) { + // console.log(data, '鏂板缓浼氳瘽璇︽儏'); + // } + // } else { + // Message.error('鍒涘缓浼氳瘽澶辫触锛岃閲嶈瘯'); + // } + // } + + + + console.log(files.value, "files"); console.log(parser_ids.value, "瑙f瀽鏂规硶"); if(files.value.length == 0){ @@ -146,28 +311,29 @@ size: (item.file.size/1024).toFixed(2) + 'K', } }) - // onFileSelectedLoading.value = true; - // const formData = new FormData(); - // for (let i = 0; i < files.value.length; i++) { - // formData.append('file', files.value[i].file); - // formData.append('conversation_id', activeSessionId.value); - // formData.append('parser_id', parser_id.value); - // formData.append('parser_config', ''); - // } - // uploadWithoutKb(formData).then((res) => { - // onFileSelectedLoading.value = false; - // if (res.code == 200) { - // cancel(); - // // uploaditemList.value = []; - // emit('selectFileCallback', uploaditemList.value); - // Message.success('涓婁紶鎴愬姛'); - // } else { - // Message.error('涓婁紶澶辫触'); - // } - // }); - - cancel(); - emit('selectFileCallback', uploaditemList.value); + onFileSelectedLoading.value = true; + const formData = new FormData(); + for (let i = 0; i < files.value.length; i++) { + formData.append('file', files.value[i].file); + formData.append('conversation_id', activeSessionId.value); + formData.append('parser_config', ''); + if(!parser_id.value){ + formData.append('parser_id', getIconByExtension(files.value[i].name)); + }else{ + formData.append('parser_id', parser_id.value); + } + } + uploadWithoutKb(formData).then((res) => { + onFileSelectedLoading.value = false; + if (res.code == 200) { + cancel(); + // uploaditemList.value = []; + emit('selectFileCallback', uploaditemList.value); + Message.success('涓婁紶鎴愬姛'); + } else { + Message.error('涓婁紶澶辫触'); + } + }); @@ -184,6 +350,19 @@ defineExpose({ cancel }) + +const getParseMethodsList = async () => { + let res = await getParseMethodsListApi(); + parser_ids.value = res.data.map((item) => { + return { + name: item.name, + value: item.id, + parser_config: '', + parser_config_str: item.parser_config_str + }; + }); + parser_idsArr.value = res.data; +} onBeforeMount(() => { @@ -204,7 +383,11 @@ </script> - +<style> +.upload-wrap .arco-select-view-inner{ + display: none; +} +</style> <style scoped lang="less"> .aUpload { width: 100%; @@ -212,4 +395,13 @@ overflow: hidden; overflow-y: auto; } +.upload-wrap { + position: relative; +} +.config-text { + position: absolute; + right: 70px; + bottom: -11px; + font-size: 12px; +} </style> -- Gitblit v1.8.0