Merge pull request #323 from IanShaw027/fix/ops-error-classification-consistency

fix(ops): 统一 request-errors 接口与 SLA 计算的错误分类逻辑
This commit is contained in:
Wesley Liddick
2026-01-18 14:32:04 +08:00
committed by GitHub

View File

@@ -992,7 +992,8 @@ func buildOpsErrorLogsWhere(filter *service.OpsErrorLogFilter) (string, []any) {
} }
// View filter: errors vs excluded vs all. // View filter: errors vs excluded vs all.
// Excluded = upstream 429/529 and business-limited (quota/concurrency/billing) errors. // Excluded = business-limited errors (quota/concurrency/billing).
// Upstream 429/529 are included in errors view to match SLA calculation.
view := "" view := ""
if filter != nil { if filter != nil {
view = strings.ToLower(strings.TrimSpace(filter.View)) view = strings.ToLower(strings.TrimSpace(filter.View))
@@ -1000,15 +1001,13 @@ func buildOpsErrorLogsWhere(filter *service.OpsErrorLogFilter) (string, []any) {
switch view { switch view {
case "", "errors": case "", "errors":
clauses = append(clauses, "COALESCE(is_business_limited,false) = false") clauses = append(clauses, "COALESCE(is_business_limited,false) = false")
clauses = append(clauses, "COALESCE(upstream_status_code, status_code, 0) NOT IN (429, 529)")
case "excluded": case "excluded":
clauses = append(clauses, "(COALESCE(is_business_limited,false) = true OR COALESCE(upstream_status_code, status_code, 0) IN (429, 529))") clauses = append(clauses, "COALESCE(is_business_limited,false) = true")
case "all": case "all":
// no-op // no-op
default: default:
// treat unknown as default 'errors' // treat unknown as default 'errors'
clauses = append(clauses, "COALESCE(is_business_limited,false) = false") clauses = append(clauses, "COALESCE(is_business_limited,false) = false")
clauses = append(clauses, "COALESCE(upstream_status_code, status_code, 0) NOT IN (429, 529)")
} }
if len(filter.StatusCodes) > 0 { if len(filter.StatusCodes) > 0 {
args = append(args, pq.Array(filter.StatusCodes)) args = append(args, pq.Array(filter.StatusCodes))