mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-04 16:37:46 +08:00
fix(usage): 修复含失败信号的 pending 请求被误判为活跃的问题
- pending/streaming 状态含 status_code >= 400 或 error_message 时视为 failed - 候选状态派生改为 failed 优先于 stale pending/streaming - 活跃请求轮询时保留失败信号字段的更新 - 图片流支持 partial_image 事件转发及从 response.completed 读取最终图片
This commit is contained in:
@@ -520,6 +520,7 @@ interface NodeGroup {
|
||||
|
||||
// 用量数据类型
|
||||
interface UsageData {
|
||||
status?: string | null
|
||||
tokens: {
|
||||
input: number
|
||||
output: number
|
||||
@@ -547,6 +548,8 @@ const props = defineProps<{
|
||||
requestId?: string | null
|
||||
/** 外部传入的状态码,用于覆盖 trace.final_status 的判断 */
|
||||
overrideStatusCode?: number
|
||||
/** 外部传入的请求状态,用于识别已失败/取消的终态请求 */
|
||||
requestStatus?: string | null
|
||||
/** 请求侧 API 格式(客户端入口格式) */
|
||||
requestApiFormat?: string | null
|
||||
/** 用量和费用数据 */
|
||||
@@ -577,6 +580,7 @@ const computedFinalStatus = computed(() => {
|
||||
return resolveTimelineFinalStatus({
|
||||
hasPendingCandidates: hasPending,
|
||||
statusCode: props.overrideStatusCode,
|
||||
requestStatus: props.requestStatus ?? usageData.value?.status,
|
||||
traceFinalStatus: trace.value?.final_status,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -411,6 +411,7 @@
|
||||
ref="timelineRef"
|
||||
:request-id="detail.request_id || detail.id"
|
||||
:override-status-code="detail.status_code"
|
||||
:request-status="detail.status"
|
||||
:request-api-format="detail.api_format || null"
|
||||
:request-metadata="traceRequestMetadata"
|
||||
/>
|
||||
@@ -711,6 +712,7 @@ import { getEffectiveInputTokens } from '../token-normalization'
|
||||
import {
|
||||
formatUsageStreamLabel,
|
||||
isUsageUpstreamStream,
|
||||
resolveDisplayRequestStatus,
|
||||
resolveUsageStreamLabelSegments,
|
||||
} from '../utils/status'
|
||||
|
||||
@@ -1766,7 +1768,8 @@ function handleClose() {
|
||||
|
||||
function isRequestCompleted(): boolean {
|
||||
if (!detail.value?.status) return true
|
||||
return !['pending', 'streaming'].includes(detail.value.status)
|
||||
const displayStatus = resolveDisplayRequestStatus(detail.value)
|
||||
return displayStatus !== 'pending' && displayStatus !== 'streaming'
|
||||
}
|
||||
|
||||
function stopAutoRefresh() {
|
||||
|
||||
Reference in New Issue
Block a user