fix(lint): 修复 golangci-lint 报告的代码问题

- errcheck: 修复类型断言未检查返回值的问题
  - pool.go: 添加 sync.Map 类型断言安全检查
  - req_client_pool.go: 添加 sync.Map 类型断言安全检查
  - concurrency_cache_benchmark_test.go: 显式忽略断言返回值
  - gateway_service.go: 显式忽略 WriteString 返回值

- gofmt: 修复代码格式问题
  - redis.go: 注释对齐
  - api_key_repo.go: 结构体字段对齐
  - concurrency_cache.go: 字段对齐
  - http_upstream.go: 注释对齐

- unused: 删除未使用的代码
  - user_repo.go: 删除未使用的 sql 字段
  - usage_service.go: 删除未使用的 calculateStats 函数

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
yangjianbo
2025-12-31 14:51:58 +08:00
parent dbc0cf33a1
commit 682f546c0e
10 changed files with 30 additions and 47 deletions

View File

@@ -58,7 +58,9 @@ var sharedClients sync.Map
func GetClient(opts Options) (*http.Client, error) { func GetClient(opts Options) (*http.Client, error) {
key := buildClientKey(opts) key := buildClientKey(opts)
if cached, ok := sharedClients.Load(key); ok { if cached, ok := sharedClients.Load(key); ok {
return cached.(*http.Client), nil if client, ok := cached.(*http.Client); ok {
return client, nil
}
} }
client, err := buildClient(opts) client, err := buildClient(opts)
@@ -72,7 +74,10 @@ func GetClient(opts Options) (*http.Client, error) {
} }
actual, _ := sharedClients.LoadOrStore(key, client) actual, _ := sharedClients.LoadOrStore(key, client)
return actual.(*http.Client), nil if c, ok := actual.(*http.Client); ok {
return c, nil
}
return client, nil
} }
func buildClient(opts Options) (*http.Client, error) { func buildClient(opts Options) (*http.Client, error) {

View File

@@ -22,7 +22,7 @@ func BenchmarkAccountConcurrency(b *testing.B) {
_ = rdb.Close() _ = rdb.Close()
}() }()
cache := NewConcurrencyCache(rdb, benchSlotTTLMinutes).(*concurrencyCache) cache, _ := NewConcurrencyCache(rdb, benchSlotTTLMinutes).(*concurrencyCache)
ctx := context.Background() ctx := context.Background()
for _, size := range []int{10, 100, 1000} { for _, size := range []int{10, 100, 1000} {

View File

@@ -35,7 +35,9 @@ var sharedReqClients sync.Map
func getSharedReqClient(opts reqClientOptions) *req.Client { func getSharedReqClient(opts reqClientOptions) *req.Client {
key := buildReqClientKey(opts) key := buildReqClientKey(opts)
if cached, ok := sharedReqClients.Load(key); ok { if cached, ok := sharedReqClients.Load(key); ok {
return cached.(*req.Client) if c, ok := cached.(*req.Client); ok {
return c
}
} }
client := req.C().SetTimeout(opts.Timeout) client := req.C().SetTimeout(opts.Timeout)
@@ -47,7 +49,10 @@ func getSharedReqClient(opts reqClientOptions) *req.Client {
} }
actual, _ := sharedReqClients.LoadOrStore(key, client) actual, _ := sharedReqClients.LoadOrStore(key, client)
return actual.(*req.Client) if c, ok := actual.(*req.Client); ok {
return c
}
return client
} }
func buildReqClientKey(opts reqClientOptions) string { func buildReqClientKey(opts reqClientOptions) string {

View File

@@ -16,15 +16,14 @@ import (
type userRepository struct { type userRepository struct {
client *dbent.Client client *dbent.Client
sql sqlExecutor
} }
func NewUserRepository(client *dbent.Client, sqlDB *sql.DB) service.UserRepository { func NewUserRepository(client *dbent.Client, sqlDB *sql.DB) service.UserRepository {
return newUserRepositoryWithSQL(client, sqlDB) return newUserRepositoryWithSQL(client, sqlDB)
} }
func newUserRepositoryWithSQL(client *dbent.Client, sqlq sqlExecutor) *userRepository { func newUserRepositoryWithSQL(client *dbent.Client, _ sqlExecutor) *userRepository {
return &userRepository{client: client, sql: sqlq} return &userRepository{client: client}
} }
func (r *userRepository) Create(ctx context.Context, userIn *service.User) error { func (r *userRepository) Create(ctx context.Context, userIn *service.User) error {

View File

@@ -197,7 +197,7 @@ func (s *GatewayService) extractCacheableContent(parsed *ParsedRequest) string {
if cc, ok := partMap["cache_control"].(map[string]any); ok { if cc, ok := partMap["cache_control"].(map[string]any); ok {
if cc["type"] == "ephemeral" { if cc["type"] == "ephemeral" {
if text, ok := partMap["text"].(string); ok { if text, ok := partMap["text"].(string); ok {
builder.WriteString(text) _, _ = builder.WriteString(text)
} }
} }
} }

View File

@@ -235,32 +235,6 @@ func (s *UsageService) GetDailyStats(ctx context.Context, userID int64, days int
return stats, nil return stats, nil
} }
// calculateStats 计算统计数据
func (s *UsageService) calculateStats(logs []UsageLog) *UsageStats {
stats := &UsageStats{}
for _, log := range logs {
stats.TotalRequests++
stats.TotalInputTokens += int64(log.InputTokens)
stats.TotalOutputTokens += int64(log.OutputTokens)
stats.TotalCacheTokens += int64(log.CacheCreationTokens + log.CacheReadTokens)
stats.TotalTokens += int64(log.TotalTokens())
stats.TotalCost += log.TotalCost
stats.TotalActualCost += log.ActualCost
if log.DurationMs != nil {
stats.AverageDurationMs += float64(*log.DurationMs)
}
}
// 计算平均持续时间
if stats.TotalRequests > 0 {
stats.AverageDurationMs /= float64(stats.TotalRequests)
}
return stats
}
// Delete 删除使用日志(管理员功能,谨慎使用) // Delete 删除使用日志(管理员功能,谨慎使用)
func (s *UsageService) Delete(ctx context.Context, id int64) error { func (s *UsageService) Delete(ctx context.Context, id int64) error {
if err := s.usageRepo.Delete(ctx, id); err != nil { if err := s.usageRepo.Delete(ctx, id); err != nil {