mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-04 16:37:46 +08:00
fix(observability): preserve admin upstream error diagnostics
This commit is contained in:
@@ -477,6 +477,18 @@
|
||||
HTTP {{ currentAttemptRequestError.statusCode }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="currentAttemptRequestError.upstreamStatusCode != null && currentAttemptRequestError.upstreamStatusCode !== currentAttemptRequestError.statusCode"
|
||||
class="error-upstream-status text-xs text-muted-foreground mb-1"
|
||||
>
|
||||
上游响应状态:HTTP {{ currentAttemptRequestError.upstreamStatusCode }}(本次尝试状态见上方)
|
||||
</div>
|
||||
<div
|
||||
v-if="currentAttemptRequestError.finalStatusCode != null"
|
||||
class="error-final-status text-xs text-muted-foreground mb-1"
|
||||
>
|
||||
请求最终状态:HTTP {{ currentAttemptRequestError.finalStatusCode }}(与本次尝试状态不同)
|
||||
</div>
|
||||
<div
|
||||
v-if="currentAttemptRequestError.message"
|
||||
class="error-msg"
|
||||
@@ -1630,21 +1642,19 @@ const shouldShowAttemptMessageWithUpstreamResponse = (
|
||||
rawMessage: string,
|
||||
upstreamResponse: Record<string, unknown> | null,
|
||||
): boolean => {
|
||||
if (!upstreamResponse) return true
|
||||
if (!upstreamResponse || !hasRenderableValue(upstreamResponse.body)) return true
|
||||
const normalized = rawMessage.trim()
|
||||
if (!normalized) return false
|
||||
if (isLocalSyncFinalizeDiagnostic(normalized)) return true
|
||||
if (isConversionDiagnosticMessage(normalized)) return true
|
||||
if (isGenericExecutionRuntimeStatusMessage(normalized)) return false
|
||||
|
||||
const hasBody = hasRenderableValue(upstreamResponse.body)
|
||||
const bodyState = (readStringField(upstreamResponse, 'body_state') ?? '').toLowerCase()
|
||||
return !hasBody && bodyState === 'disabled'
|
||||
return false
|
||||
}
|
||||
|
||||
const currentAttemptRequestError = computed<{
|
||||
message: string
|
||||
statusCode?: number
|
||||
upstreamStatusCode?: number
|
||||
finalStatusCode?: number
|
||||
upstreamResponse: Record<string, unknown> | null
|
||||
diagnostic: Record<string, unknown> | null
|
||||
} | null>(() => {
|
||||
@@ -1654,11 +1664,16 @@ const currentAttemptRequestError = computed<{
|
||||
const extra = extractObject(attempt.extra_data)
|
||||
const upstreamResponse = extractObject(extra?.upstream_response)
|
||||
const errorFlow = extractObject(extra?.error_flow)
|
||||
const statusCode = readNumberField(upstreamResponse ?? {}, 'status_code')
|
||||
const upstreamStatusCode = readNumberField(upstreamResponse ?? {}, 'status_code')
|
||||
?? readNumberField(upstreamResponse ?? {}, 'statusCode')
|
||||
const statusCode = attempt.status_code
|
||||
?? upstreamStatusCode
|
||||
?? readNumberField(errorFlow ?? {}, 'status_code')
|
||||
?? readNumberField(errorFlow ?? {}, 'statusCode')
|
||||
?? attempt.status_code
|
||||
const finalStatusCode = !['pending', 'streaming'].includes(computedFinalStatus.value)
|
||||
&& props.overrideStatusCode != null && props.overrideStatusCode !== statusCode
|
||||
? props.overrideStatusCode
|
||||
: undefined
|
||||
const flowMessage = errorFlow
|
||||
? readStringField(errorFlow, 'message')
|
||||
: ''
|
||||
@@ -1671,6 +1686,7 @@ const currentAttemptRequestError = computed<{
|
||||
const diagnosticMessage = extractVisibleDiagnosticMessage(extra)
|
||||
const rawMessage = chooseAttemptRawErrorMessage(flowMessage || '', fallbackMessage, diagnosticMessage)
|
||||
const message = formatAttemptErrorMessage(rawMessage, statusCode) || fallbackType
|
||||
|| '本次尝试失败,链路追踪未包含详细错误内容。'
|
||||
const upstreamResponseDisplay = normalizeUpstreamResponseDisplay(extra?.upstream_response)
|
||||
const visibleDiagnosticObjects = extractVisibleDiagnosticObjects(extra)
|
||||
const shouldAttachDiagnostic = Boolean(
|
||||
@@ -1695,20 +1711,16 @@ const currentAttemptRequestError = computed<{
|
||||
const response = Object.keys(upstreamResponseData).length > 0
|
||||
? upstreamResponseData
|
||||
: null
|
||||
if (
|
||||
!message
|
||||
&& statusCode == null
|
||||
&& !response
|
||||
&& !diagnostic
|
||||
) return null
|
||||
const showMessage = shouldShowAttemptMessageWithUpstreamResponse(
|
||||
rawMessage || fallbackType,
|
||||
upstreamResponseDisplay,
|
||||
)
|
||||
|
||||
return {
|
||||
message: showMessage ? (message || '未知错误') : '',
|
||||
message: showMessage ? message : '',
|
||||
statusCode,
|
||||
upstreamStatusCode,
|
||||
finalStatusCode,
|
||||
upstreamResponse: response,
|
||||
diagnostic,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user