import { MessageItem, SubmitData, MESSAGE_STATUS, AI_MODELS } from '../type' import { createUserMessage, createAiMessage } from '../chat-embed-message' import axios from 'axios' import { getToken } from '../../../../src/utils/auth' export default { sendMessageToMcp(submitData: SubmitData, sessionId: string) { return new Promise((resolve, reject) => { const requestParams = { question: submitData.question, messageId: sessionId, systemCode: submitData.systemCode } axios.defaults.headers.common.Authorization = getToken() axios .post(window.$vueApp.config.globalProperties.baseAPI + '/component/ai/mcp/chart', requestParams) .then((res: any) => { if (res) { const response = res.data if (response.code === 200) { if (!response.answer) { resolve({ errorMessage: '未能返回有效信息' }) return } if (response.answer?.sqlInfo?.sql) { delete response.answer.sqlInfo.sql } // if (response.type == 'markdown') { // resolve({ answerMessage: response.answer }) // } else if (response.type === 'chartSettingList') { // if (response.answer?.length > 0) { // const realMessahgeList: string[] = [] // response.answer.forEach((item: any) => { // realMessahgeList.push( // `` // ) // }) // resolve({ answerMessage: realMessahgeList.join('\n') }) // } // resolve({ errorMessage: '未能返回有效信息' }) // return // } else if (response.type === 'sourceData') { // resolve({ // answerMessage: `` // }) // } else if (response.type === 'chartData') { // resolve({ // answerMessage: `` // }) // } const message = handleMcpMessage(response) if (message) { resolve(message) } else { resolve({ answerMessage: '未能返回有效信息' }) } } else if (response.code === 500) { resolve({ errorMessage: response.message }) } else { if (response.message) { const msg = JSON.parse(response.message) resolve({ errorMessage: msg.message }) } } } else { resolve({ answerMessage: '未能返回有效信息' }) } }) .catch((error: any) => { if (error.response?.data?.code) { resolve({ errorMessage: error.response.data.code }) } else { resolve({ errorMessage: error.message }) } }) }) }, getChildTableData(requestParams: any) { return new Promise((resolve, reject) => { window.$vueApp.config.globalProperties.$http .post(window.$vueApp.config.globalProperties.baseAPI + '/component/ai/mcp/getChildData', requestParams) .then((res: any) => { resolve(res) }) .catch((error: any) => { if (error.response?.data?.code) { resolve({ errorMessage: error.response.data.code }) } else { resolve({ errorMessage: error.message }) } }) }) } } function encodeAttr(val: any): string { return encodeURIComponent(JSON.stringify(val)).replace(/'/g, '%27') } export function handleMcpMessage(response: any): any { if (response.type == 'markdown') { return { answerMessage: response.answer } } else if (response.type === 'chartSettingList') { if (response.answer?.length > 0) { const realMessahgeList: string[] = [] response.answer.forEach((item: any) => { realMessahgeList.push( `` ) }) return { answerMessage: realMessahgeList.join('\n') } } return { errorMessage: '未能返回有效信息' } } else if (response.type === 'sourceData') { return { answerMessage: `` } } else if (response.type === 'chartData') { return { answerMessage: `
` } } }