feat: filter candidates by request resolution

This commit is contained in:
2026-05-18 15:50:08 +08:00
parent ba419cd90a
commit 73c6d43e4b
9 changed files with 629 additions and 18 deletions
+20
View File
@@ -214,6 +214,9 @@ func failureMetrics(err error, simulated bool) (string, map[string]any, time.Tim
if detail := rateLimitFailureDetail(err); len(detail) > 0 {
metrics["rateLimit"] = detail
}
if detail := store.ModelCandidateErrorDetails(err); len(detail) > 0 {
metrics["modelCandidate"] = detail
}
}
if meta.StatusCode > 0 {
metrics["statusCode"] = meta.StatusCode
@@ -230,6 +233,23 @@ func failureMetrics(err error, simulated bool) (string, map[string]any, time.Tim
return meta.RequestID, metrics, meta.ResponseStartedAt, meta.ResponseFinishedAt, meta.ResponseDurationMS
}
func buildFailureResult(code string, message string, requestID string, err error) map[string]any {
errorPayload := map[string]any{
"code": code,
"message": message,
}
if requestID != "" {
errorPayload["requestId"] = requestID
}
if detail := rateLimitFailureDetail(err); len(detail) > 0 {
errorPayload["rateLimit"] = detail
}
if detail := store.ModelCandidateErrorDetails(err); len(detail) > 0 {
errorPayload["modelCandidate"] = detail
}
return map[string]any{"error": errorPayload}
}
func rateLimitFailureDetail(err error) map[string]any {
var limitErr *store.RateLimitExceededError
if !errors.As(err, &limitErr) {