Files
X-Financial/web/src/composables/workbenchAiMode/workbenchAiPlanningThinkingModel.js
caoxiaozhu bc560145a4 feat(web): AI 工作台意图规划与规划思考模型
- 新增 workbenchAiIntentPlannerModel,基于 LLM function_call 解析建单/草稿/提交意图,区分 model 与 rule_fallback 来源
- 新增 workbenchAiPlanningThinkingModel 合并规划思考事件流,按 eventId 去重合并
- application gate/preview 模型接入意图规划,usePersonalWorkbenchAiMode/useWorkbenchAiStewardFlow/useWorkbenchAiActionRouter 链路适配,支持上下文提交
- steward 服务与 stewardPlanModel 适配新动作结构,receipt-folder-view 微调样式
- 新增 intent-planner-model/application-context-submit/steward-actions-service 测试,更新 gate-model/action-router/plan-message-copy/fast-preview 测试
2026-06-24 21:58:46 +08:00

81 lines
2.2 KiB
JavaScript

export function mergeWorkbenchAiThinkingEvents(...groups) {
const merged = []
const indexById = new Map()
groups.flat().filter(Boolean).forEach((event) => {
const eventId = String(event.eventId || event.event_id || '').trim()
if (!eventId || !indexById.has(eventId)) {
if (eventId) {
indexById.set(eventId, merged.length)
}
merged.push(event)
return
}
const index = indexById.get(eventId)
merged.splice(index, 1, {
...merged[index],
...event,
eventId
})
})
return merged
}
export function completeWorkbenchAiThinkingEvents(events = []) {
return events.map((event) => ({
...event,
status: event.status === 'failed' ? 'failed' : 'completed'
}))
}
export function buildInitialModelPlanningThinkingEvents() {
return [
{
eventId: 'model-planning-intent',
title: '判断办理意图',
content: '正在判断这句话是要办申请、做报销、处理附件,还是普通咨询。',
status: 'running'
}
]
}
export function buildModelPlanningProgressSchedule() {
return [
{
delayMs: 900,
event: {
eventId: 'model-planning-slots',
title: '抽取关键信息',
content: '正在整理日期、地点、事由、交通方式、附件和“保存/提交”等动作线索。',
status: 'running'
}
},
{
delayMs: 2200,
event: {
eventId: 'model-planning-steps',
title: '规划执行步骤',
content: '正在生成可执行动作序列,例如填充申请表、校验必填项、保存草稿或发起提交。',
status: 'running'
}
},
{
delayMs: 5200,
event: {
eventId: 'model-planning-tools',
title: '匹配业务工具',
content: '正在把模型计划映射到白名单工具,避免未确认的提交或附件关联直接产生副作用。',
status: 'running'
}
},
{
delayMs: 9000,
event: {
eventId: 'model-planning-fallback',
title: '准备兜底策略',
content: '如果模型等待过久或调用失败,会按保守规则继续识别,保证申请、报销和草稿流程还能推进。',
status: 'running'
}
}
]
}