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') {
|
||||
// 已配对的 answer 由 question 那一步负责渲染;这里跳过
|
||||
if (answerAssigned.has(m.id)) return
|
||||
// 未配对的 answer 展示为独立 user 文本
|
||||
result.push({ id: m.id, role: 'user', kind: 'text', content: m.content || '' })
|
||||
// 未配对的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||
return
|
||||
} else if (m.type === 'outline') {
|
||||
let outline = {}
|
||||
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
||||
|
||||
@@ -1513,7 +1513,8 @@ const openScriptChat = async (payload = {}) => {
|
||||
questionAnswerMap.set(q.id, matched)
|
||||
}
|
||||
})
|
||||
// 未匹配的 answer(如 messageOrder 在所有 question 之前的预填充)按独立 user 消息展示
|
||||
// 未匹配的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||
clarificationAnswers.forEach(a => {
|
||||
if (!answerAssigned.has(a.id)) unmatchedAnswers.push(a)
|
||||
})
|
||||
@@ -1547,17 +1548,9 @@ const openScriptChat = async (payload = {}) => {
|
||||
} else if (m.type === 'clarification_answer') {
|
||||
// 已配对到 question 的 answer 由 question 那一步负责渲染;这里跳过
|
||||
if (answerAssigned.has(m.id)) return
|
||||
// 未配对的 answer(如用户对未识别 question 的回答)展示为独立 user 文本
|
||||
resultMessages.value.push({
|
||||
id: m.id || createMessageId(),
|
||||
role: 'user',
|
||||
kind: 'text',
|
||||
content: m.content || '',
|
||||
pending: false,
|
||||
time: formatMessageTime(),
|
||||
submitted: false,
|
||||
confirmed: false
|
||||
})
|
||||
// 未配对的 answer(如 messageOrder 在所有 question 之前的预填充)不展示
|
||||
// 原因:没有对应 question 的 answer 无法正确渲染(用户看不到问题,只显示答案会造成困惑)
|
||||
return
|
||||
} else if (m.type === 'outline') {
|
||||
let outline = {}
|
||||
try { outline = JSON.parse(m.content || '{}') } catch (e) { outline = {} }
|
||||
|
||||
Reference in New Issue
Block a user