fix(proxy): 将401/405质量检测结果调整为告警

This commit is contained in:
yangjianbo
2026-02-20 14:42:07 +08:00
parent d14c24bbf3
commit 03f69dd394
2 changed files with 30 additions and 3 deletions

View File

@@ -1908,8 +1908,13 @@ func runProxyQualityTarget(ctx context.Context, client *http.Client, target prox
} }
if _, ok := target.AllowedStatuses[resp.StatusCode]; ok { if _, ok := target.AllowedStatuses[resp.StatusCode]; ok {
item.Status = "pass" if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices {
item.Message = fmt.Sprintf("HTTP %d", resp.StatusCode) item.Status = "pass"
item.Message = fmt.Sprintf("HTTP %d", resp.StatusCode)
} else {
item.Status = "warn"
item.Message = fmt.Sprintf("HTTP %d目标可达但鉴权或方法受限", resp.StatusCode)
}
return item return item
} }

View File

@@ -52,6 +52,27 @@ func TestRunProxyQualityTarget_SoraChallenge(t *testing.T) {
} }
func TestRunProxyQualityTarget_AllowedStatusPass(t *testing.T) { func TestRunProxyQualityTarget_AllowedStatusPass(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte(`{"models":[]}`))
}))
defer server.Close()
target := proxyQualityTarget{
Target: "gemini",
URL: server.URL,
Method: http.MethodGet,
AllowedStatuses: map[int]struct{}{
http.StatusOK: {},
},
}
item := runProxyQualityTarget(context.Background(), server.Client(), target)
require.Equal(t, "pass", item.Status)
require.Equal(t, http.StatusOK, item.HTTPStatus)
}
func TestRunProxyQualityTarget_AllowedStatusWarnForUnauthorized(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusUnauthorized) w.WriteHeader(http.StatusUnauthorized)
_, _ = w.Write([]byte(`{"error":"unauthorized"}`)) _, _ = w.Write([]byte(`{"error":"unauthorized"}`))
@@ -68,6 +89,7 @@ func TestRunProxyQualityTarget_AllowedStatusPass(t *testing.T) {
} }
item := runProxyQualityTarget(context.Background(), server.Client(), target) item := runProxyQualityTarget(context.Background(), server.Client(), target)
require.Equal(t, "pass", item.Status) require.Equal(t, "warn", item.Status)
require.Equal(t, http.StatusUnauthorized, item.HTTPStatus) require.Equal(t, http.StatusUnauthorized, item.HTTPStatus)
require.Contains(t, item.Message, "目标可达")
} }