feat: 更新 created_by_message_id 字段的赋值逻辑,确保使用 tool_call_id 进行消息关联

This commit is contained in:
oudecheng 2026-06-25 10:50:16 +08:00
parent c72853c79d
commit ef18500100
3 changed files with 12 additions and 16 deletions

View File

@ -200,12 +200,7 @@ impl BusToolCallEmitter {
priority: "medium".to_string(),
created_at: now + idx as i64,
updated_at: now,
created_by_message_id: item
.get("created_by_message_id")
.and_then(|v| v.as_str())
.filter(|s| !s.is_empty())
.map(|s| s.to_string())
.or_else(|| Some(message.id.clone())),
created_by_message_id: message.tool_call_id.clone(),
})
})
.collect();

View File

@ -235,12 +235,7 @@ impl SubAgentEmitter {
priority: "medium".to_string(),
created_at: now + idx as i64,
updated_at: now,
created_by_message_id: item
.get("created_by_message_id")
.and_then(|v| v.as_str())
.filter(|s| !s.is_empty())
.map(|s| s.to_string())
.or_else(|| Some(message.id.clone())),
created_by_message_id: message.tool_call_id.clone(),
})
})
.collect();

View File

@ -401,11 +401,12 @@ function App() {
// 点击待办项后滚动到对应消息
const handleTodoClick = useCallback((todo: TodoItemSummary) => {
// 直接使用后端返回的 created_by_message_id
if (todo.created_by_message_id) {
setHighlightedMessageId(todo.created_by_message_id)
// 先清再设,确保同一 todo 重复点击也能触发 useEffect
setHighlightedMessageId(null)
const msgId = todo.created_by_message_id
setTimeout(() => setHighlightedMessageId(msgId), 0)
} else {
// 如果消息 ID 不存在(旧数据),给出友好提示
alert('该待办的完成记录无法定位,可能是历史数据')
}
}, [setHighlightedMessageId])
@ -485,7 +486,12 @@ function App() {
}
}
return result
// 过滤无实质内容的 merged_tool无结果且非等待中
return result.filter(msg => {
if (msg.type !== 'merged_tool') return true
if (msg.status === 'pending') return true
return !!(msg.resultContent && msg.resultContent.trim())
})
}, [messages])
// 视图标识:用于 MessageList 保存/恢复每个视图的滚动位置