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 {
async sendQmsReportRequest(submitData: SubmitData, sessionId: string) {
axios.defaults.headers.common.Authorization = getToken()
const baseAPI = window.$vueApp.config.globalProperties.baseAPI
try {
const requestParams = {
question: submitData.question,
messageId: sessionId,
systemCode: submitData.systemCode
}
const questionsRes = await axios.post(`${baseAPI}/component/ai/qms-report/get-questions`, requestParams)
const questions = questionsRes.data
if (!questions || !Array.isArray(questions) || questions.length === 0) {
return { errorMessage: '未能返回有效问题列表' }
}
const dataRequests = questions.map((question: string) => {
return axios.post(`${baseAPI}/component/ai/qms-report/get-data`, {
...requestParams,
question: question
})
})
const dataResponses = await Promise.all(dataRequests)
const chartData = dataResponses.map(res => res.data)
await axios.post(`${baseAPI}/component/ai/qms-report/save-history`, {
...requestParams,
chartData: chartData
})
return handleQmsReportMessage(chartData)
} catch (error: any) {
if (error.response?.data?.code) {
return { errorMessage: error.response.data.code }
} else {
return { errorMessage: error.message }
}
}
}
}
function encodeAttr(val: any): string {
return encodeURIComponent(JSON.stringify(val)).replace(/'/g, '%27')
}
export function handleQmsReportMessage(response: any): any {
let exportChart = false
if (Array.isArray(response)) {
// 如果response是数组,则遍历数组,响应多个消息
let answerMessage = ''
for (let i = 0; i < response.length; i++) {
const item = response[i]
if (item.code === 500) {
answerMessage = item.message || '请求失败'
continue
}
if (item.answer?.sqlInfo?.sql) {
delete item.answer.sqlInfo.sql
}
if (item.type == 'markdown') {
answerMessage += item.answer + '\n'
} else if (item.type === 'chartSettingList') {
if (item.answer?.length > 0) {
const realMessahgeList: string[] = []
item.answer.forEach((subItem: any) => {
realMessahgeList.push(
`