refactor: 移除冗余中间类型和不必要代码

- 移除 ScheduledTestOutcome 中间类型,RunTestBackground 直接返回 *ScheduledTestResult
- 简化 SaveResult 直接接受 *ScheduledTestResult
- 移除 handler 中不必要的 nil 检查
- 移除前端 ScheduledTestsPanel 中多余的 String() 转换

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
guoyongchang
2026-03-05 16:37:07 +08:00
parent 817a491087
commit 831abf7977
6 changed files with 20 additions and 47 deletions

View File

@@ -1564,7 +1564,7 @@ func (s *AccountTestService) sendErrorAndEnd(c *gin.Context, errorMsg string) er
// RunTestBackground executes an account test in-memory (no real HTTP client),
// capturing SSE output via httptest.NewRecorder, then parses the result.
func (s *AccountTestService) RunTestBackground(ctx context.Context, accountID int64, modelID string) (*ScheduledTestOutcome, error) {
func (s *AccountTestService) RunTestBackground(ctx context.Context, accountID int64, modelID string) (*ScheduledTestResult, error) {
startedAt := time.Now()
w := httptest.NewRecorder()
@@ -1574,28 +1574,25 @@ func (s *AccountTestService) RunTestBackground(ctx context.Context, accountID in
testErr := s.TestAccountConnection(ginCtx, accountID, modelID)
finishedAt := time.Now()
latencyMs := finishedAt.Sub(startedAt).Milliseconds()
body := w.Body.String()
responseText, errMsg := parseTestSSEOutput(body)
outcome := &ScheduledTestOutcome{
Status: "success",
ResponseText: responseText,
ErrorMessage: errMsg,
LatencyMs: latencyMs,
StartedAt: startedAt,
FinishedAt: finishedAt,
}
status := "success"
if testErr != nil || errMsg != "" {
outcome.Status = "failed"
status = "failed"
if errMsg == "" && testErr != nil {
outcome.ErrorMessage = testErr.Error()
errMsg = testErr.Error()
}
}
return outcome, nil
return &ScheduledTestResult{
Status: status,
ResponseText: responseText,
ErrorMessage: errMsg,
LatencyMs: finishedAt.Sub(startedAt).Milliseconds(),
StartedAt: startedAt,
FinishedAt: finishedAt,
}, nil
}
// parseTestSSEOutput extracts response text and error message from captured SSE output.