From e426ee93a2553550766e25958dcb70a6f7339b9c Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期二, 27 八月 2024 17:13:05 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/flow_web
---
src/views/sessionManager/components/updataFile.vue | 503 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 359 insertions(+), 144 deletions(-)
diff --git a/src/views/sessionManager/components/updataFile.vue b/src/views/sessionManager/components/updataFile.vue
index 549ec2e..0a09f24 100644
--- a/src/views/sessionManager/components/updataFile.vue
+++ b/src/views/sessionManager/components/updataFile.vue
@@ -1,19 +1,7 @@
<template>
- <a-popover
- :popup-visible="visible"
- title=""
- trigger="click"
- position="tl">
- <a-button
- :disabled="onFileSelectedLoading"
- type="text"
- style="border-radius: 24px"
- @click="visible = !visible"
- >
- <icon-attachment
- size="28"
- style="color: #0960bd"
- />
+ <a-popover :popup-visible="visible" title="" trigger="click" position="tl">
+ <a-button type="text" style="border-radius: 24px" @click="visibleChange">
+ <icon-attachment size="28" style="color: #0960bd" />
</a-button>
<template #title>
<div style="display: flex; justify-content: space-between">
@@ -32,29 +20,57 @@
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 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> -->
+ <template #content>
+ <p>{{ 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"
type="primary"
size="mini"
- style="border-radius: 24px;"
+ style="border-radius: 24px"
>
- <span style="font-size: 12px;">
- 涓婁紶
- </span>
+ <span style="font-size: 12px"> 涓婁紶 </span>
</a-button>
</div>
</template>
@@ -62,135 +78,334 @@
</template>
<script lang="ts" setup>
-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 {
+ onMounted,
+ onBeforeMount,
+ reactive,
+ ref,
+ computed,
+ watch,
+ } from 'vue';
+ import axios from 'axios';
+ import { Message } from '@arco-design/web-vue';
+ import {
+ addSessionApi,
+ getParseMethodsListApi,
+ getSessionDetailsApi,
+ uploadWithoutKb,
+ } from '@/api/session';
-const visible = ref(false);
-const loading = ref(false);
-const chatDis = ref(false);
-const directory = ref(false);
-const filesBtn = ref(null);
-const onFileSelectedLoading = ref(false);
-const parser_id = ref("");
-const parser_ids = ref([]);
-const uploaditemList = ref([]);
-const activeSessionId = ref('');
-let kbtenantInfo = reactive({
- asr_id: 'paraformer-realtime-8k-v1',
- embd_id: 'BAAI/bge-large-zh-v1.5',
- img2txt_id: 'qwen-vl-max',
- llm_id: 'qwen-plus',
- name: 'wanghaos Kingdom',
- parser_ids:
- 'naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One',
- rerank_id: 'BAAI/bge-reranker-v2-m3',
- role: 'owner',
- tenant_id: '948fc6fa41ab11ef8fb80242ac120004',
- parser_idObj: {},
-});
-const uploadList = ref([]);
-const parser = reactive({
- naive: {
- "chunk_token_num": 676,
- "layout_recognize": true,
- "raptor": {
- "use_raptor": true,
- "prompt": "璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n {cluster_content}\n浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��",
- "max_token": 600,
- "threshold": 0.32,
- "max_cluster": 233,
- "random_seed": 1500
- }
- }, // 鐢ㄦ埛鍚�
-
-});
-const props = defineProps(["sessionId"]);
-const emit = defineEmits(["selectFileCallback"]);
-const uploadRef = ref();
-const files = ref([]);
-const acceptNameList = computed(() => {
- 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 visible = ref(false);
+ const loading = ref(false);
+ const chatDis = ref(false);
+ const directory = ref(false);
+ const filesBtn = ref(null);
+ const onFileSelectedLoading = ref(false);
+ const parser_id = ref('');
+ const parseridConfig = ref(false);
+ const uploaditemList = ref([]);
+ const activeSessionId = ref('');
+ let kbtenantInfo = reactive({
+ asr_id: 'paraformer-realtime-8k-v1',
+ embd_id: 'BAAI/bge-large-zh-v1.5',
+ img2txt_id: 'qwen-vl-max',
+ llm_id: 'qwen-plus',
+ name: 'wanghaos Kingdom',
+ // parser_ids: 'naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One',
+ parser_ids:
+ 'naive:閫氱敤,qa:Q&A,resume:绠�鍘�,manual:璇存槑涔�,table:琛ㄦ牸,paper:澶氭ā鎬�,book:涔︾睄,laws:娉曞緥鏂囦欢,presentation:PPT,picture:鍥剧墖,one:鏁翠綋',
+ rerank_id: 'BAAI/bge-reranker-v2-m3',
+ role: 'owner',
+ tenant_id: '948fc6fa41ab11ef8fb80242ac120004',
+ parser_idObj: {},
});
-}
+ const parser = reactive({
+ naive: {
+ chunk_token_num: 676,
+ layout_recognize: true,
+ raptor: {
+ use_raptor: true,
+ prompt:
+ '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n {cluster_content}\n浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��',
+ max_token: 600,
+ threshold: 0.32,
+ max_cluster: 233,
+ 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();
+ const files = ref([]);
+ const acceptNameList = computed(() => {
+ return '.word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,';
+ });
-const onChange = (fileList) => {
- files.value = fileList;
-};
+ 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 upDataFile = () => {
- console.log(files.value, "files");
- console.log(parser_ids.value, "瑙f瀽鏂规硶");
- if(files.value.length == 0){
- Message.warning('璇烽�夋嫨鏂囦欢');
- return;
- }
- uploaditemList.value = files.value.map((item)=>{
- return {
- name: item.name,
- size: (item.file.size/1024).toFixed(2) + 'K',
+ 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 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('鍒涘缓浼氳瘽澶辫触锛岃閲嶈瘯');
+ }
}
- })
- 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) => {
- if (res.code == 200) {
- visible.value = false;
+
+ console.log(files.value, 'files');
+ console.log(parser_ids.value, '瑙f瀽鏂规硶');
+ if (files.value.length == 0) {
+ Message.warning('璇烽�夋嫨鏂囦欢');
+ return;
+ }
+ uploaditemList.value = files.value.map((item, index) => {
+ return {
+ index: index,
+ name: item.name,
+ 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_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;
- // uploaditemList.value = [];
- emit('selectFileCallback', uploaditemList.value);
- Message.success('涓婁紶鎴愬姛');
- } else {
- Message.error('涓婁紶澶辫触');
+ if (res.code == 200) {
+ cancel();
+ // uploaditemList.value = [];
+ emit('selectFileCallback', uploaditemList.value);
+ Message.success('涓婁紶鎴愬姛');
+ } else {
+ Message.error('涓婁紶澶辫触');
+ }
+ });
+ };
+
+ const cancel = () => {
+ if (!onFileSelectedLoading.value) {
+ visible.value = false;
+ parser_id.value = '';
}
+ };
+
+ defineExpose({
+ cancel,
});
+ const getParseMethodsList = async () => {
+ let res = await getParseMethodsListApi();
+ parser_ids.value = res.data.map((item) => {
+ console.log(item, item.parser_config_str, 78787);
+ return {
+ name: item.name,
+ value: item.id,
+ parser_config: '',
+ parser_config_str: JSON.stringify(item.formats),
+ };
+ });
+ parser_idsArr.value = res.data;
+ };
+ onBeforeMount(() => {
+ init();
+ });
+ onMounted(() => {});
-};
-
-
-onBeforeMount(() => {
- init();
-
-
-
-});
-onMounted(() => {
-});
-
-watch(
- ()=>props.sessionId,
- (value, oldValue)=>{
- activeSessionId.value = value;
- }
-)
-
-
+ watch(
+ () => props.sessionId,
+ (value, oldValue) => {
+ activeSessionId.value = value;
+ }
+ );
</script>
-
+<style>
+ .upload-wrap .arco-select-view-inner {
+ display: none;
+ }
+</style>
<style scoped lang="less">
-.aUpload {
- width: 100%;
- max-height: 500px;
- overflow: hidden;
- overflow-y: auto;
-}
+ .aUpload {
+ width: 100%;
+ max-height: 500px;
+ 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