| | |
| | | public void handleStreamFailure(SseEmitter emitter, String requestId, Long sessionId, String model, long startedAt, |
| | | Long firstTokenAt, AiChatException exception, Long callLogId, |
| | | long toolSuccessCount, long toolFailureCount, |
| | | AiThinkingTraceEmitter thinkingTraceEmitter, |
| | | AiChatTraceEmitter traceEmitter, |
| | | Long tenantId, Long userId, String promptCode) { |
| | | if (isClientAbortException(exception)) { |
| | | log.warn("AI chat aborted by client, requestId={}, sessionId={}, stage={}, message={}", |
| | | requestId, sessionId, exception.getStage(), exception.getMessage()); |
| | | if (thinkingTraceEmitter != null) { |
| | | thinkingTraceEmitter.markTerminated("ABORTED"); |
| | | if (traceEmitter != null) { |
| | | traceEmitter.markTerminated("ABORTED"); |
| | | } |
| | | aiSseEventPublisher.emitSafely(emitter, "status", |
| | | aiSseEventPublisher.buildTerminalStatus(requestId, sessionId, "ABORTED", model, startedAt, firstTokenAt)); |
| | |
| | | } |
| | | log.error("AI chat failed, requestId={}, sessionId={}, category={}, stage={}, message={}", |
| | | requestId, sessionId, exception.getCategory(), exception.getStage(), exception.getMessage(), exception); |
| | | if (thinkingTraceEmitter != null) { |
| | | thinkingTraceEmitter.markTerminated("FAILED"); |
| | | if (traceEmitter != null) { |
| | | traceEmitter.markTerminated("FAILED"); |
| | | } |
| | | aiSseEventPublisher.emitSafely(emitter, "status", |
| | | aiSseEventPublisher.buildTerminalStatus(requestId, sessionId, "FAILED", model, startedAt, firstTokenAt)); |