refactor: extract ResolveClaw402WalletKey to store layer and expand OKX margin mode tests

- Move duplicated claw402 wallet resolution logic into store.AIModelStore.ResolveClaw402WalletKey
- api/strategy.go and manager/trader_manager.go now delegate to the shared method
- Add detailed doc comment on OKX SetMarginMode explaining the local-state-only approach
  and why the legacy /api/v5/account/set-isolated-mode endpoint is not called
- Add 3 new test cases: cross mode leverage, OpenShort tdMode, SetTakeProfit tdMode
This commit is contained in:
root
2026-04-17 10:57:42 +08:00
parent b9b0a52137
commit 802590c2b9
5 changed files with 115 additions and 45 deletions

View File

@@ -708,36 +708,5 @@ func (s *Server) runRealAITest(userID, modelID, systemPrompt, userPrompt string)
}
func (s *Server) resolveStrategyDataWalletKey(userID, selectedModelID string) (string, error) {
if selectedModelID != "" {
model, err := s.store.AIModel().Get(userID, selectedModelID)
if err != nil {
return "", fmt.Errorf("failed to load selected AI model")
}
if model.Provider == "claw402" {
walletKey := string(model.APIKey)
if walletKey == "" {
return "", fmt.Errorf("selected claw402 model is missing wallet private key")
}
return walletKey, nil
}
}
models, err := s.store.AIModel().List(userID)
if err != nil {
return "", fmt.Errorf("failed to load AI models")
}
for _, model := range models {
if model == nil || model.Provider != "claw402" {
continue
}
walletKey := string(model.APIKey)
if walletKey != "" {
return walletKey, nil
}
}
return "", nil
return s.store.AIModel().ResolveClaw402WalletKey(userID, selectedModelID)
}