feat(ops): enhance error observability with additional context fields and UI updates
This commit is contained in:
@@ -59,7 +59,28 @@
|
||||
<div class="rounded-xl bg-gray-50 p-4 dark:bg-dark-900">
|
||||
<div class="text-xs font-bold uppercase tracking-wider text-gray-400">{{ t('admin.ops.errorDetail.model') }}</div>
|
||||
<div class="mt-1 text-sm font-medium text-gray-900 dark:text-white">
|
||||
{{ detail.model || '—' }}
|
||||
<template v-if="detail.requested_model && detail.upstream_model && detail.requested_model !== detail.upstream_model">
|
||||
<span class="font-mono">{{ detail.requested_model }}</span>
|
||||
<span class="mx-1 text-gray-400">→</span>
|
||||
<span class="font-mono text-primary-600 dark:text-primary-400">{{ detail.upstream_model }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ detail.requested_model || detail.model || '—' }}
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rounded-xl bg-gray-50 p-4 dark:bg-dark-900">
|
||||
<div class="text-xs font-bold uppercase tracking-wider text-gray-400">{{ t('admin.ops.errorDetail.inboundEndpoint') }}</div>
|
||||
<div class="mt-1 break-all font-mono text-sm font-medium text-gray-900 dark:text-white">
|
||||
{{ detail.inbound_endpoint || '—' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rounded-xl bg-gray-50 p-4 dark:bg-dark-900">
|
||||
<div class="text-xs font-bold uppercase tracking-wider text-gray-400">{{ t('admin.ops.errorDetail.upstreamEndpoint') }}</div>
|
||||
<div class="mt-1 break-all font-mono text-sm font-medium text-gray-900 dark:text-white">
|
||||
{{ detail.upstream_endpoint || '—' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -72,6 +93,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rounded-xl bg-gray-50 p-4 dark:bg-dark-900">
|
||||
<div class="text-xs font-bold uppercase tracking-wider text-gray-400">{{ t('admin.ops.errorDetail.requestType') }}</div>
|
||||
<div class="mt-1 text-sm font-medium text-gray-900 dark:text-white">
|
||||
{{ formatRequestTypeLabel(detail.request_type) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rounded-xl bg-gray-50 p-4 dark:bg-dark-900">
|
||||
<div class="text-xs font-bold uppercase tracking-wider text-gray-400">{{ t('admin.ops.errorDetail.message') }}</div>
|
||||
<div class="mt-1 truncate text-sm font-medium text-gray-900 dark:text-white" :title="detail.message">
|
||||
@@ -213,6 +241,15 @@ function isUpstreamError(d: OpsErrorDetail | null): boolean {
|
||||
return phase === 'upstream' && owner === 'provider'
|
||||
}
|
||||
|
||||
function formatRequestTypeLabel(type: number | null | undefined): string {
|
||||
switch (type) {
|
||||
case 1: return t('admin.ops.errorDetail.requestTypeSync')
|
||||
case 2: return t('admin.ops.errorDetail.requestTypeStream')
|
||||
case 3: return t('admin.ops.errorDetail.requestTypeWs')
|
||||
default: return t('admin.ops.errorDetail.requestTypeUnknown')
|
||||
}
|
||||
}
|
||||
|
||||
const correlatedUpstream = ref<OpsErrorDetail[]>([])
|
||||
const correlatedUpstreamLoading = ref(false)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user