feat(ai): 业务上下文感知与 A2UI 链路统一
- 新增代码内业务上下文元数据层(实体字典 + 三大闭环工作流) - 新增 get_business_context / get_entity_schema / get_pending_tasks 运行时工具 - SYSTEM_PROMPT 与技能目录改为先查业务流程/待办再执行 - A2UI 增加 ai_a2ui_submissions 幂等表、表单过期、ui.artifact 事件 - 提交回灌携带 submissionId / fieldErrors / 下一步建议 - 前端 uiArtifacts 归一化与过期表单禁用
This commit is contained in:
@@ -8,6 +8,7 @@ import { permittedStepKeys } from '../imports/imports.access';
|
||||
import { expandStageSheets } from '../imports/imports.mapping';
|
||||
import type { AiChatServiceContext, AiSseEmitter, ModelToolCall } from './ai-chat.types';
|
||||
import type { AgentToolContext } from './ai-chat.tools';
|
||||
import { buildA2uiArtifact } from './ai-a2ui.artifact';
|
||||
import { AiMessage } from './entities';
|
||||
import { finishToolRun, startToolRun } from './ai-chat.tools';
|
||||
import {
|
||||
@@ -155,6 +156,17 @@ export const executePreflightImport = makeImportToolExecutor(
|
||||
.join('、') || '未识别到可导入阶段'}`,
|
||||
}, emit);
|
||||
emit('ui.import_preflight', { messageId, preflight: preflightCard });
|
||||
emit('ui.artifact', {
|
||||
messageId,
|
||||
artifact: buildA2uiArtifact({
|
||||
type: 'import_preflight',
|
||||
id: `preflight-${attachment.id}`,
|
||||
status: 'pending',
|
||||
messageId,
|
||||
conversationId: assistant.conversationId,
|
||||
payload: preflightCard,
|
||||
}),
|
||||
});
|
||||
return preflightModelPayload(preflight, permittedSteps);
|
||||
});
|
||||
|
||||
@@ -241,6 +253,17 @@ export const executeStartImportWizard = makeImportToolExecutor(
|
||||
});
|
||||
}
|
||||
emit('ui.import_wizard', { messageId, wizard });
|
||||
emit('ui.artifact', {
|
||||
messageId,
|
||||
artifact: buildA2uiArtifact({
|
||||
type: 'import_wizard',
|
||||
id: `wizard-${detail.id}`,
|
||||
status: 'pending',
|
||||
messageId,
|
||||
conversationId: assistant.conversationId,
|
||||
payload: wizard,
|
||||
}),
|
||||
});
|
||||
return JSON.stringify({
|
||||
status: 'success',
|
||||
runId: detail.id,
|
||||
|
||||
Reference in New Issue
Block a user