From ab3cab9a93fe6a6539e5005042a7d91cdc6115df Mon Sep 17 00:00:00 2001 From: ZhouYongyou <128128010+zhouyongyou@users.noreply.github.com> Date: Sun, 2 Nov 2025 07:11:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=B5=B1=E4=B8=80=20handleTraderList=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AE=8C=E6=95=B4=20AI=20model=20ID=EF=BC=88?= =?UTF-8?q?=E4=BF=9D=E6=8C=81=E8=88=87=20handleGetTraderConfig=20=E4=B8=80?= =?UTF-8?q?=E8=87=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 問題: - handleTraderList 仍在截斷 AI model ID (admin_deepseek → deepseek) - 與 handleGetTraderConfig 返回的完整 ID 不一致 - 導致前端 isModelInUse 檢查失效 修復: - 移除 handleTraderList 中的截斷邏輯 - 返回完整 AIModelID (admin_deepseek) - 與其他 API 端點保持一致 測試: - GET /api/traders → ai_model: admin_deepseek ✓ - GET /api/traders/:id → ai_model: admin_deepseek ✓ - 模型使用檢查邏輯正確 ✓ --- api/server.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/api/server.go b/api/server.go index a21dbb46..7e5acaba 100644 --- a/api/server.go +++ b/api/server.go @@ -754,19 +754,12 @@ func (s *Server) handleTraderList(c *gin.Context) { } } - // AIModelID 应该已经是 provider(如 "deepseek"),直接使用 - // 如果是旧数据格式(如 "admin_deepseek"),提取 provider 部分 - aiModelID := trader.AIModelID - // 兼容旧数据:如果包含下划线,提取最后一部分作为 provider - if strings.Contains(aiModelID, "_") { - parts := strings.Split(aiModelID, "_") - aiModelID = parts[len(parts)-1] - } - + // 返回完整的 AIModelID(如 "admin_deepseek"),不要截断 + // 前端需要完整 ID 来验证模型是否存在(与 handleGetTraderConfig 保持一致) result = append(result, map[string]interface{}{ "trader_id": trader.ID, "trader_name": trader.Name, - "ai_model": aiModelID, + "ai_model": trader.AIModelID, // 使用完整 ID "exchange_id": trader.ExchangeID, "is_running": isRunning, "initial_balance": trader.InitialBalance,