feat(observability): 引入错误链路 error_flow 元数据并区分上游/客户端错误

- 网关在本地 failover 时构建 error_flow 元数据(分类/决策/传播策略),写入 report_context
- scheduler-core 解析并透传 error_flow 至候选 extra_data
- admin usage 详情拆分 request/upstream/client/failure_summary 错误域,敏感上游错误标记为 suppressed
- 前端 RequestDetailDrawer 拆出"返回客户端"与"上游响应"双错误卡片
- HorizontalRequestTimeline 节点详情展示真实请求错误及 error_flow 标签
This commit is contained in:
fawney19
2026-04-25 16:58:17 +08:00
parent bc97e383d3
commit 00744c0ce5
9 changed files with 997 additions and 44 deletions

View File

@@ -115,6 +115,33 @@ export interface VideoBilling {
status?: string // 计费状态
}
export interface RequestErrorDomain {
source?: string | null
status_code?: number | null
type?: string | null
message?: string | null
code?: string | number | null
content_type?: string | null
body?: unknown
category?: string | null
}
export interface RequestErrorDomains {
request_error?: RequestErrorDomain | null
upstream_error?: RequestErrorDomain | null
client_error?: RequestErrorDomain | null
failure_summary?: RequestErrorDomain | null
}
export interface RequestErrorFlow {
source?: string | null
status_code?: number | null
propagation?: string | null
client_response_source?: string | null
safe_to_expose_upstream?: boolean | null
summary_source?: string | null
}
export interface RequestDetail {
id: string // UUID
request_id: string
@@ -173,6 +200,12 @@ export interface RequestDetail {
status_code: number
status?: string // pending, streaming, completed, failed, cancelled
error_message?: string
request_error?: RequestErrorDomain | null
upstream_error?: RequestErrorDomain | null
client_error?: RequestErrorDomain | null
failure_summary?: RequestErrorDomain | null
errors?: RequestErrorDomains | null
error_flow?: RequestErrorFlow | null
response_time_ms: number
created_at: string
request_headers?: Record<string, unknown>