fix:过滤未配对澄清答案(避免显示孤立 answer 如「love」)
问题:DB 中部分 clarification_answer 没有对应 question(如 messageOrder=1 的「love」), 原逻辑将其渲染为独立 user 文本消息,导致用户看到无法理解的孤立答案气泡。 修复: - 未配对的 clarification_answer 不再展示为 user 文本消息,直接 return 跳过 - 原因:没有 question 上下文的 answer 无法正确渲染,只显示答案会造成用户困惑 - ScriptView.vue 和 ScriptDetailView.vue 保持一致 数据影响: - 「十年后的来信」剧本 messageOrder=1 的「love」answer 将被过滤 - 正常配对的 answer(如「family」→「家人」「sibling」→「兄弟姐妹」)仍正常显示
This commit is contained in:
@@ -193,8 +193,9 @@ const rebuildResultMessages = (scriptData, messages) => {
|
|||||||
} else if (m.type === 'clarification_answer') {
|
} else if (m.type === 'clarification_answer') {
|
||||||
// 已配对的 answer 由 question 那一步负责渲染;这里跳过
|
// 已配对的 answer 由 question 那一步负责渲染;这里跳过
|
||||||
if (answerAssigned.has(m.id)) return
|
if (answerAssigned.has(m.id)) return
|
||||||
// 未配对的 answer 展示为独立 user 文本
|
// 未配对的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||||
result.push({ id: m.id, role: 'user', kind: 'text', content: m.content || '' })
|
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||||
|
return
|
||||||
} else if (m.type === 'outline') {
|
} else if (m.type === 'outline') {
|
||||||
let outline = {}
|
let outline = {}
|
||||||
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
||||||
|
|||||||
@@ -1513,7 +1513,8 @@ const openScriptChat = async (payload = {}) => {
|
|||||||
questionAnswerMap.set(q.id, matched)
|
questionAnswerMap.set(q.id, matched)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// 未匹配的 answer(如 messageOrder 在所有 question 之前的预填充)按独立 user 消息展示
|
// 未匹配的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||||
|
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||||
clarificationAnswers.forEach(a => {
|
clarificationAnswers.forEach(a => {
|
||||||
if (!answerAssigned.has(a.id)) unmatchedAnswers.push(a)
|
if (!answerAssigned.has(a.id)) unmatchedAnswers.push(a)
|
||||||
})
|
})
|
||||||
@@ -1547,17 +1548,9 @@ const openScriptChat = async (payload = {}) => {
|
|||||||
} else if (m.type === 'clarification_answer') {
|
} else if (m.type === 'clarification_answer') {
|
||||||
// 已配对到 question 的 answer 由 question 那一步负责渲染;这里跳过
|
// 已配对到 question 的 answer 由 question 那一步负责渲染;这里跳过
|
||||||
if (answerAssigned.has(m.id)) return
|
if (answerAssigned.has(m.id)) return
|
||||||
// 未配对的 answer(如用户对未识别 question 的回答)展示为独立 user 文本
|
// 未配对的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||||
resultMessages.value.push({
|
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||||
id: m.id || createMessageId(),
|
return
|
||||||
role: 'user',
|
|
||||||
kind: 'text',
|
|
||||||
content: m.content || '',
|
|
||||||
pending: false,
|
|
||||||
time: formatMessageTime(),
|
|
||||||
submitted: false,
|
|
||||||
confirmed: false
|
|
||||||
})
|
|
||||||
} else if (m.type === 'outline') {
|
} else if (m.type === 'outline') {
|
||||||
let outline = {}
|
let outline = {}
|
||||||
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
||||||
|
|||||||
Reference in New Issue
Block a user