perf: lighten routes and improve ai runtime events
This commit is contained in:
@@ -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, {
|
||||
|
||||
Reference in New Issue
Block a user