diff --git a/src/apis/paths/conversation.ts b/src/apis/paths/conversation.ts index 90308eb942c9ebf51dbf688ec96f70d21bef4597..8c51fc98aea37063ba7de225ba0d45c4acfbffd8 100644 --- a/src/apis/paths/conversation.ts +++ b/src/apis/paths/conversation.ts @@ -64,6 +64,20 @@ export const createSession = (): Promise< > => { return post(BASE_URL); }; + + +/** + * 创建工作流debug会话 + * @param params + * @returns + */ +export const createSessionDebug = (params:any): Promise< +[ + any, any +] +> => { + return post(`/api/conversation?debug=${params.debug}`) +}; /** * 更新会话标题 * @param params @@ -233,6 +247,7 @@ export const deleteUploadedFile = ( export const sessionApi = { createSession, + createSessionDebug, updateSession, deleteSession, getSessionRecord, diff --git a/src/store/historySession.ts b/src/store/historySession.ts index 3a109a2c1bc4666845c5a51650dad7e3afd4980b..e106a7e3de6d60c8a66c29038ddac9438ab39bda 100644 --- a/src/store/historySession.ts +++ b/src/store/historySession.ts @@ -28,7 +28,7 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { const historySession = ref([]); const params = ref(); const user_selected_app = ref([]); - const selectMode = ref([]) + const selectMode = ref([]); const currentSelectedSession = ref(''); /** * 选择历史会话 @@ -41,10 +41,10 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { } currentSelectedSession.value = conversationId; const { getConversation } = useSessionStore(); - await getConversation(currentSelectedSession.value).then(()=> { + await getConversation(currentSelectedSession.value).then(() => { const a = document.getElementsByClassName('draw'); - for(let i of a){ - i.style.display = 'none' ; + for (let i of a) { + i.style.display = 'none'; } }); }; @@ -56,16 +56,14 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { const isSelectedAll = ref(false); // 不确定状态 const indeterminate = computed(() => - selectedSessionIds.value.length === 0 - ? false - : selectedSessionIds.value.length !== historySession.value.length + selectedSessionIds.value.length === 0 ? false : selectedSessionIds.value.length !== historySession.value.length, ); /** * 全选 */ const selectAllSession = (): void => { if (isSelectedAll.value) { - selectedSessionIds.value = historySession.value.map((item) => item.conversationId); + selectedSessionIds.value = historySession.value.map(item => item.conversationId); } else { selectedSessionIds.value = []; } @@ -76,7 +74,7 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { */ const selectSession = (conversationId: string): void => { if (selectedSessionIds.value.includes(conversationId)) { - selectedSessionIds.value = selectedSessionIds.value.filter((val) => val !== conversationId); + selectedSessionIds.value = selectedSessionIds.value.filter(val => val !== conversationId); } else { selectedSessionIds.value.push(conversationId); } @@ -104,13 +102,13 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { const [err, res] = await api.getSessionRecord(); const { conversationList } = storeToRefs(useSessionStore()); if (!err && res) { - historySession.value = res.result.conversations.reverse().map((item) => ({ + historySession.value = res.result.conversations.reverse().map(item => ({ conversationId: item.conversationId, createdTime: item.createdTime, title: item.title, docCount: item.doc_count || 0, })); - if(res.result.conversations.length === 0){ + if (res.result.conversations.length === 0) { await generateSession(); } if (!currentSelectedSession.value) { @@ -180,6 +178,17 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { } }; + /** + * 创建一个新的会话-debug工作流会话-需要一个传参 + */ + const generateSessionDebug = async (debug: any): Promise => { + const [_, res] = await api.createSessionDebug(debug); + if (!_ && res) { + currentSelectedSession.value = res.result.conversationId; + await getHistorySession(); + } + }; + return { params, historySession, @@ -195,6 +204,7 @@ export const useHistorySessionStore = defineStore('sessionStore', () => { createNewSession, initSessionList, generateSession, + generateSessionDebug, user_selected_app, selectMode, }; diff --git a/src/views/createapp/components/workFlow.vue b/src/views/createapp/components/workFlow.vue index bd4233a57b9e42d7dab3de20bc291180cf93dc1f..42dc6c0e3320c6708c22677dff1ab49e5610d4fb 100644 --- a/src/views/createapp/components/workFlow.vue +++ b/src/views/createapp/components/workFlow.vue @@ -39,6 +39,7 @@ const isNodeAndLineConnect = ref(false); const apiServiceList = ref([]); const allApiServiceList = ref([]); const yamlContent = ref(); +const nodeYamlId = ref(); const emits = defineEmits(['validateConnect']); const route = useRoute(); const workFlowList = ref([]); @@ -173,10 +174,11 @@ const delNode = id => { } }; // 编辑yaml -const editYamlDrawer = (name, yamlCode) => { +const editYamlDrawer = (name, yamlCode, nodeId) => { yamlContent.value = yamlCode; nodeName.value = name; isEditYaml.value = true; + nodeYamlId.value = nodeId; }; // 关闭抽屉 const closeDrawer = () => { @@ -262,6 +264,9 @@ const handleDebugDialogOps = visible => { debugDialogVisible.value = visible; }; +const getNodeStatus = nodes => { +}; + const edgesChange = edges => { if (edges?.[0]?.type === 'remove' && edges[0]?.source) { updateConnectNodeHandle(edges[0].source, edges[0]?.sourceHandle, true); @@ -411,13 +416,13 @@ const redrageFlow = (nodesList, edgesList) => { setEdges(newEdgeList); }; -const saveFlow = () => { +const saveFlow = (updateNodeParameter?) => { const appId = route.query?.appId; if (!flowObj.value.flowId) { return; } // 将对应的节点和边存储格式改造 - const updateNodes = getNodes.value.map(item => { + let updateNodes = getNodes.value.map(item => { let newItem = { enable: true, editable: false, @@ -476,6 +481,18 @@ const saveFlow = () => { }, }, ); + // 判断是否调用修改yaml文件,以确定是否修改对应的input_paramteters + if (updateNodeParameter) { + updateNodes.forEach(item => { + if (item.nodeId === updateNodeParameter.id) { + if (item.type === 'choice') { + item.parameters.input_parameters.choices = updateNodeParameter.inputStream; + } else { + item.parameters.input_parameters = updateNodeParameter.inputStream; + } + } + }); + } // return; // 更新最新的节点与边的数据 api @@ -505,6 +522,15 @@ const saveFlow = () => { }); }; +const saveNode = (yamlCode, nodeId) => { + // 调用更新接口更新当前节点数据 + const updateNodeParameter = { + id: nodeId, + inputStream: yamlCode, + }; + saveFlow(updateNodeParameter); +}; + defineExpose({ saveFlow, }); @@ -594,7 +620,7 @@ defineExpose({ - + - + diff --git a/src/views/createapp/components/workFlowConfig/BranchNode.vue b/src/views/createapp/components/workFlowConfig/BranchNode.vue index 894c5c3cfdff98bef755b39550f1b5297f2ca5d9..31787f079e945b9902f4266733c82b81ed034888 100644 --- a/src/views/createapp/components/workFlowConfig/BranchNode.vue +++ b/src/views/createapp/components/workFlowConfig/BranchNode.vue @@ -51,7 +51,7 @@ const delNode = id => { // 编辑yaml const editYaml = (nodeName, yamlCode) => { - emits('editYamlDrawer', nodeName, yamlCode); + emits('editYamlDrawer', nodeName, yamlCode, props.id); }; diff --git a/src/views/createapp/components/workFlowConfig/CustomNode.vue b/src/views/createapp/components/workFlowConfig/CustomNode.vue index a062088e49242c25b335ca0aa049c2d5fc3ed4f3..4cd53c782654fcac417efe8fc7f2eff4ad0936f0 100644 --- a/src/views/createapp/components/workFlowConfig/CustomNode.vue +++ b/src/views/createapp/components/workFlowConfig/CustomNode.vue @@ -49,7 +49,7 @@ const delNode = id => { // 编辑yaml const editYaml = (nodeName, yamlCode) => { - emits('editYamlDrawer', nodeName, yamlCode); + emits('editYamlDrawer', nodeName, yamlCode, props.id); }; diff --git a/src/views/createapp/components/workFlowConfig/yamlEditDrawer.vue b/src/views/createapp/components/workFlowConfig/yamlEditDrawer.vue index 06303d16f7776cfdb417d8319aa8d0bbdd3550df..79aff4d55d0958673d2c3be7e4b353eac66ea01d 100644 --- a/src/views/createapp/components/workFlowConfig/yamlEditDrawer.vue +++ b/src/views/createapp/components/workFlowConfig/yamlEditDrawer.vue @@ -35,7 +35,7 @@ @@ -46,6 +46,7 @@ import { ref, watch, defineProps } from 'vue'; import MirrorText from '../codeMirror/mirrorTextArea.vue'; import { IconCaretRight } from '@computing/opendesign-icons'; import yaml from 'js-yaml'; +import { ElMessage } from 'element-plus'; const visible = ref(true); const yamlInputCode = ref(); const yamlOutputCode = ref(); @@ -63,10 +64,13 @@ const yamlExpress = ref([ }, ]); const activeName = ref([yamlExpress.value[0].title, yamlExpress.value[1].title]); -const emits = defineEmits(['closeDrawer']); +const emits = defineEmits(['closeDrawer', 'saveNode']); const props = defineProps<{ yamlContent: any; nodeName: string; + appId: any; + flowId: any; + nodeYamlId: any; }>(); watch( @@ -83,6 +87,18 @@ watch( const closeDrawer = () => { emits('closeDrawer'); }; +// 完成yaml更新 +const updateNodeYaml = () => { + let transResult; + try { + transResult = yaml.load(yamlExpress.value[0].yamlCode); + } catch(error) { + ElMessage.error('请检查格式是否正确'); + } + // 调用接口并更新 + emits('saveNode', transResult, props.nodeYamlId); + closeDrawer(); +}