Enhance Step5Interaction component to improve response handling and survey result processing

- Updated response handling to prioritize replies from Reddit over Twitter and ensure compatibility with both object and array formats.
- Refactored survey result processing to convert response data into a structured array, maintaining clarity and consistency in agent responses.
- Improved error handling and logging for better debugging and user feedback.
This commit is contained in:
666ghj 2025-12-16 22:41:12 +08:00
parent d096aa2b26
commit efc7fbc4f7

View file

@ -704,11 +704,32 @@ const sendToAgent = async (message) => {
})
if (res.success && res.data) {
const results = res.data.results || res.data
if (results && results.length > 0) {
// : res.data.result.results
// : {"twitter_0": {...}, "reddit_0": {...}} {"reddit_0": {...}}
const resultData = res.data.result || res.data
const resultsDict = resultData.results || resultData
// reddit
let responseContent = null
const agentId = selectedAgentIndex.value
if (typeof resultsDict === 'object' && !Array.isArray(resultsDict)) {
// 使 reddit twitter
const redditKey = `reddit_${agentId}`
const twitterKey = `twitter_${agentId}`
const agentResult = resultsDict[redditKey] || resultsDict[twitterKey] || Object.values(resultsDict)[0]
if (agentResult) {
responseContent = agentResult.response || agentResult.answer
}
} else if (Array.isArray(resultsDict) && resultsDict.length > 0) {
//
responseContent = resultsDict[0].response || resultsDict[0].answer
}
if (responseContent) {
chatHistory.value.push({
role: 'assistant',
content: results[0].response || results[0].answer || '无响应',
content: responseContent,
timestamp: new Date().toISOString()
})
addLog(`${selectedAgent.value.username} 已回复`)
@ -767,18 +788,46 @@ const submitSurvey = async () => {
})
if (res.success && res.data) {
const results = res.data.results || res.data
surveyResults.value = results.map((result, i) => {
const agentIdx = interviews[i].agent_id
// : res.data.result.results
// : {"twitter_0": {...}, "reddit_0": {...}, "twitter_1": {...}, ...}
const resultData = res.data.result || res.data
const resultsDict = resultData.results || resultData
//
const surveyResultsList = []
for (const interview of interviews) {
const agentIdx = interview.agent_id
const agent = profiles.value[agentIdx]
return {
// 使 reddit twitter
let responseContent = '无响应'
if (typeof resultsDict === 'object' && !Array.isArray(resultsDict)) {
const redditKey = `reddit_${agentIdx}`
const twitterKey = `twitter_${agentIdx}`
const agentResult = resultsDict[redditKey] || resultsDict[twitterKey]
if (agentResult) {
responseContent = agentResult.response || agentResult.answer || '无响应'
}
} else if (Array.isArray(resultsDict)) {
//
const matchedResult = resultsDict.find(r => r.agent_id === agentIdx)
if (matchedResult) {
responseContent = matchedResult.response || matchedResult.answer || '无响应'
}
}
surveyResultsList.push({
agent_id: agentIdx,
agent_name: agent?.username || `Agent ${agentIdx}`,
profession: agent?.profession,
question: surveyQuestion.value.trim(),
answer: result.response || result.answer || '无响应'
}
})
answer: responseContent
})
}
surveyResults.value = surveyResultsList
addLog(`收到 ${surveyResults.value.length} 条回复`)
} else {
throw new Error(res.error || '请求失败')