perf: lighten routes and improve ai runtime events

This commit is contained in:
2026-06-21 21:01:38 +08:00
parent 0c52bf0641
commit 9647a227da
13 changed files with 130 additions and 74 deletions
@@ -214,6 +214,18 @@ export function useEventHandler(config: EventHandlerConfig) {
};
};
const getStreamErrorMessage = (event: StreamEvent) =>
event.error_message ||
event.message ||
event.error ||
event.content ||
'执行失败';
const isSuccessEvent = (event: StreamEvent) =>
!event.error_message &&
!event.error &&
(!event.status || event.status === 'success' || event.status === 'completed');
/** 处理流式事件 */
const handleStreamEvent = (event: StreamEvent, msgId: string) => {
switch (event.type) {
@@ -357,18 +369,19 @@ export function useEventHandler(config: EventHandlerConfig) {
}
case 'error': {
const errorMessage = getStreamErrorMessage(event);
currentSteps.value.push({
type: 'error',
content: event.message || event.content || '执行失败',
content: errorMessage,
node_id: event.node_id,
node_type: event.node_type,
...buildReasoningMeta(event),
status: 'completed',
status: 'failed',
timestamp: new Date().toISOString(),
});
updateAssistantMessage(msgId, {
status: 'failed',
error_message: event.message || event.content || '执行失败',
error_message: errorMessage,
reasoning_steps: [...currentSteps.value],
});
running.value = false;
@@ -535,25 +548,30 @@ export function useEventHandler(config: EventHandlerConfig) {
event.node_type,
event.node_label,
);
const nodeSucceeded = isSuccessEvent(event);
const nodeStatus = nodeSucceeded ? 'completed' : 'failed';
const nodeContent = nodeSucceeded
? completeLabel
: `${completeLabel || event.node_id || '节点'}${getStreamErrorMessage(event)}`;
if (existingIndex === -1) {
currentSteps.value.push({
type: 'node_complete',
content: completeLabel,
content: nodeContent,
node_id: event.node_id,
node_type: event.node_type,
...buildReasoningMeta(event),
output: event.outputs,
status: 'completed',
status: nodeStatus,
timestamp: new Date().toISOString(),
});
} else {
currentSteps.value[existingIndex] = {
...currentSteps.value[existingIndex]!,
type: 'node_complete',
content: completeLabel,
content: nodeContent,
...buildReasoningMeta(event),
output: event.outputs,
status: 'completed',
status: nodeStatus,
};
}
updateAssistantMessage(msgId, {