feat(steward): 前端支持 off_topic 与引导话术

- assistantSessionScope.js:新增 ASSISTANT_SCOPE_ACTION_FILL_COMPOSER 常量
- assistantSuggestedActionPrefill.js:识别 fill_composer 与 payload.fill_text
- stewardPlanModel.js:normalizeStewardPlan 透传 suggestedPrompts;
  buildStewardPlanMessageText / buildStewardSuggestedActions
  新增 off_topic 分支,按钮填充输入框不提交
- useStewardPlanFlow.js:isPendingStewardActionMessage 排除 off_topic
- steward-plan-off-topic.test.mjs:覆盖 normalize/文案/按钮/兼容路径
This commit is contained in:
caoxiaozhu
2026-06-18 14:15:30 +08:00
parent cce19e4c40
commit 43432534d8
5 changed files with 323 additions and 25 deletions

View File

@@ -2,6 +2,7 @@ import {
buildStewardPlanMessageText,
buildStewardPlanRequest,
buildStewardSuggestedActions,
isOffTopicStewardPlan,
normalizeStewardPlan
} from './stewardPlanModel.js'
import { SESSION_TYPE_STEWARD } from './travelReimbursementConversationModel.js'
@@ -384,7 +385,14 @@ export function useStewardPlanFlow({
function isPendingStewardActionMessage(message) {
if (message?.stewardPlan) {
return message.stewardPlan.streamStatus !== 'streaming'
if (message.stewardPlan.streamStatus === 'streaming') {
return false
}
// off_topic 是引导用户重新编辑输入,不参与"确定/确认"快捷回复链路。
if (isOffTopicStewardPlan(message.stewardPlan)) {
return false
}
return true
}
return (
String(message?.assistantName || '').trim() === '小财管家'