From b2141a96e28bb768bc70ec43c49a956af4cdc054 Mon Sep 17 00:00:00 2001 From: QTom Date: Sun, 1 Mar 2026 16:39:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E4=BF=AE=E5=A4=8D=20golangci-lint?= =?UTF-8?q?=20=E5=92=8C=20API=20=E5=90=88=E7=BA=A6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 errcheck: singleflight 返回值类型断言添加 ok 检查 - 修复 gofmt: 格式化 setting_service.go 和 claude_code_validator_test.go - 修复 TestAPIContracts: 在 GET /admin/settings 期望中添加 min_claude_code_version 字段 --- backend/internal/server/api_contract_test.go | 3 ++- .../service/claude_code_validator_test.go | 26 +++++++++---------- backend/internal/service/setting_service.go | 7 +++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/backend/internal/server/api_contract_test.go b/backend/internal/server/api_contract_test.go index f8a3a9dd..3c3c0c8f 100644 --- a/backend/internal/server/api_contract_test.go +++ b/backend/internal/server/api_contract_test.go @@ -511,7 +511,8 @@ func TestAPIContracts(t *testing.T) { "home_content": "", "hide_ccs_import_button": false, "purchase_subscription_enabled": false, - "purchase_subscription_url": "" + "purchase_subscription_url": "", + "min_claude_code_version": "" } }`, }, diff --git a/backend/internal/service/claude_code_validator_test.go b/backend/internal/service/claude_code_validator_test.go index 3688006c..f87c56e8 100644 --- a/backend/internal/service/claude_code_validator_test.go +++ b/backend/internal/service/claude_code_validator_test.go @@ -65,11 +65,11 @@ func TestExtractVersion(t *testing.T) { }{ {"claude-cli/2.1.22 (darwin; arm64)", "2.1.22"}, {"claude-cli/1.0.0", "1.0.0"}, - {"Claude-CLI/3.10.5 (linux; x86_64)", "3.10.5"}, // 大小写不敏感 - {"curl/8.0.0", ""}, // 非 Claude CLI - {"", ""}, // 空字符串 - {"claude-cli/", ""}, // 无版本号 - {"claude-cli/2.1.22-beta", "2.1.22"}, // 带后缀仍提取主版本号 + {"Claude-CLI/3.10.5 (linux; x86_64)", "3.10.5"}, // 大小写不敏感 + {"curl/8.0.0", ""}, // 非 Claude CLI + {"", ""}, // 空字符串 + {"claude-cli/", ""}, // 无版本号 + {"claude-cli/2.1.22-beta", "2.1.22"}, // 带后缀仍提取主版本号 } for _, tt := range tests { got := v.ExtractVersion(tt.ua) @@ -82,14 +82,14 @@ func TestCompareVersions(t *testing.T) { a, b string want int }{ - {"2.1.0", "2.1.0", 0}, // 相等 - {"2.1.1", "2.1.0", 1}, // patch 更大 - {"2.0.0", "2.1.0", -1}, // minor 更小 - {"3.0.0", "2.99.99", 1}, // major 更大 - {"1.0.0", "2.0.0", -1}, // major 更小 - {"0.0.1", "0.0.0", 1}, // patch 差异 - {"", "1.0.0", -1}, // 空字符串 vs 正常版本 - {"v2.1.0", "2.1.0", 0}, // v 前缀处理 + {"2.1.0", "2.1.0", 0}, // 相等 + {"2.1.1", "2.1.0", 1}, // patch 更大 + {"2.0.0", "2.1.0", -1}, // minor 更小 + {"3.0.0", "2.99.99", 1}, // major 更大 + {"1.0.0", "2.0.0", -1}, // major 更小 + {"0.0.1", "0.0.0", 1}, // patch 差异 + {"", "1.0.0", -1}, // 空字符串 vs 正常版本 + {"v2.1.0", "2.1.0", 0}, // v 前缀处理 } for _, tt := range tests { got := CompareVersions(tt.a, tt.b) diff --git a/backend/internal/service/setting_service.go b/backend/internal/service/setting_service.go index f0800c8f..40d5229d 100644 --- a/backend/internal/service/setting_service.go +++ b/backend/internal/service/setting_service.go @@ -891,7 +891,7 @@ func (s *SettingService) GetMinClaudeCodeVersion(ctx context.Context) string { } } // singleflight: 同一时刻只有一个 goroutine 查询 DB,其余复用结果 - result, _, _ := minVersionSF.Do("min_version", func() (interface{}, error) { + result, _, _ := minVersionSF.Do("min_version", func() (any, error) { // 二次检查,避免排队的 goroutine 重复查询 if cached, ok := minVersionCache.Load().(*cachedMinVersion); ok { if time.Now().UnixNano() < cached.expiresAt { @@ -917,7 +917,10 @@ func (s *SettingService) GetMinClaudeCodeVersion(ctx context.Context) string { }) return value, nil }) - return result.(string) + if s, ok := result.(string); ok { + return s + } + return "" } // SetStreamTimeoutSettings 设置流超时处理配置