feat: Add SystemPromptTemplate edit support (PR #339)

- Allow users to modify SystemPromptTemplate when editing Trader
- Enable dynamic strategy switching (default/aggressive/conservative)
- Support A/B testing of different trading strategies
- Maintain backward compatibility with existing data
- Complete full data flow from database through UI to persistence
This commit is contained in:
ZhouYongyou
2025-11-03 22:37:11 +08:00
3 changed files with 25 additions and 18 deletions

View File

@@ -457,13 +457,14 @@ type UpdateTraderRequest struct {
AIModelID string `json:"ai_model_id" binding:"required"` AIModelID string `json:"ai_model_id" binding:"required"`
ExchangeID string `json:"exchange_id" binding:"required"` ExchangeID string `json:"exchange_id" binding:"required"`
InitialBalance float64 `json:"initial_balance"` InitialBalance float64 `json:"initial_balance"`
ScanIntervalMinutes int `json:"scan_interval_minutes"`
BTCETHLeverage int `json:"btc_eth_leverage"` BTCETHLeverage int `json:"btc_eth_leverage"`
AltcoinLeverage int `json:"altcoin_leverage"` AltcoinLeverage int `json:"altcoin_leverage"`
TradingSymbols string `json:"trading_symbols"` TradingSymbols string `json:"trading_symbols"`
CustomPrompt string `json:"custom_prompt"` CustomPrompt string `json:"custom_prompt"`
OverrideBasePrompt bool `json:"override_base_prompt"` OverrideBasePrompt bool `json:"override_base_prompt"`
SystemPromptTemplate string `json:"system_prompt_template"`
IsCrossMargin *bool `json:"is_cross_margin"` IsCrossMargin *bool `json:"is_cross_margin"`
ScanIntervalMinutes int `json:"scan_interval_minutes"`
} }
// handleUpdateTrader 更新交易员配置 // handleUpdateTrader 更新交易员配置
@@ -519,6 +520,12 @@ func (s *Server) handleUpdateTrader(c *gin.Context) {
scanIntervalMinutes = existingTrader.ScanIntervalMinutes // 保持原值 scanIntervalMinutes = existingTrader.ScanIntervalMinutes // 保持原值
} }
// 设置系统提示词模板,允许更新
systemPromptTemplate := req.SystemPromptTemplate
if systemPromptTemplate == "" {
systemPromptTemplate = existingTrader.SystemPromptTemplate // 保持原值
}
// 更新交易员配置 // 更新交易员配置
trader := &config.TraderRecord{ trader := &config.TraderRecord{
ID: traderID, ID: traderID,
@@ -532,7 +539,7 @@ func (s *Server) handleUpdateTrader(c *gin.Context) {
TradingSymbols: req.TradingSymbols, TradingSymbols: req.TradingSymbols,
CustomPrompt: req.CustomPrompt, CustomPrompt: req.CustomPrompt,
OverrideBasePrompt: req.OverrideBasePrompt, OverrideBasePrompt: req.OverrideBasePrompt,
SystemPromptTemplate: existingTrader.SystemPromptTemplate, // 保持原值 SystemPromptTemplate: systemPromptTemplate,
IsCrossMargin: isCrossMargin, IsCrossMargin: isCrossMargin,
ScanIntervalMinutes: scanIntervalMinutes, ScanIntervalMinutes: scanIntervalMinutes,
IsRunning: existingTrader.IsRunning, // 保持原值 IsRunning: existingTrader.IsRunning, // 保持原值

View File

@@ -213,7 +213,7 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) {
trading_symbols: data.trading_symbols, trading_symbols: data.trading_symbols,
custom_prompt: data.custom_prompt, custom_prompt: data.custom_prompt,
override_base_prompt: data.override_base_prompt, override_base_prompt: data.override_base_prompt,
system_prompt_template: data.system_prompt_template, // 添加此字段 system_prompt_template: data.system_prompt_template,
is_cross_margin: data.is_cross_margin, is_cross_margin: data.is_cross_margin,
use_coin_pool: data.use_coin_pool, use_coin_pool: data.use_coin_pool,
use_oi_top: data.use_oi_top use_oi_top: data.use_oi_top

View File

@@ -195,7 +195,7 @@ export interface TraderConfigData {
trading_symbols: string; trading_symbols: string;
custom_prompt: string; custom_prompt: string;
override_base_prompt: boolean; override_base_prompt: boolean;
system_prompt_template: string; // 添加系统提示词模板字段 system_prompt_template: string;
is_cross_margin: boolean; is_cross_margin: boolean;
use_coin_pool: boolean; use_coin_pool: boolean;
use_oi_top: boolean; use_oi_top: boolean;