feat: 支持更新 Trader 的系统提示词模板

允许在编辑 Trader 时更新系统提示词模板(SystemPromptTemplate)。

系统提示词模板用于控制 AI 交易决策的行为模式。目前创建 Trader 时可以指定模板,但编辑时无法修改。

1. **UpdateTraderRequest** 添加 `SystemPromptTemplate` 字段
   ```go
   SystemPromptTemplate string `json:"system_prompt_template"`
   ```

2. **handleUpdateTrader** 添加处理逻辑
   - 如果请求中提供新模板,使用新值
   - 如果为空字符串,保持数据库中的原有值

   ```go
   systemPromptTemplate := req.SystemPromptTemplate
   if systemPromptTemplate == "" {
       systemPromptTemplate = existingTrader.SystemPromptTemplate
   }
   ```

3. **TraderRecord** 设置 SystemPromptTemplate 字段
   ```go
   SystemPromptTemplate: systemPromptTemplate,
   ```

-  支持在编辑 Trader 时更新系统提示词模板
-  空值时保持原有值不变(向后兼容)
-  与创建 Trader 时的行为保持一致
-  无破坏性变更

1. 用户创建 Trader 时使用了默认模板
2. 后续想切换到自定义模板(如更激进或保守的策略)
3. 通过编辑功能修改 SystemPromptTemplate 字段
4. 保存后,AI 将使用新的提示词模板进行决策

1. 创建 Trader(使用默认模板 "default")
2. 编辑 Trader,修改 system_prompt_template 为 "aggressive"
3. 保存并验证修改成功
4. 再次编辑,不修改 system_prompt_template(传空字符串)
5. 验证保持 "aggressive" 不变
This commit is contained in:
Liu Xiang Qian
2025-11-03 22:04:00 +08:00
parent df83a87bb0
commit b0de71bdf5

View File

@@ -393,10 +393,11 @@ type UpdateTraderRequest struct {
ScanIntervalMinutes int `json:"scan_interval_minutes"`
BTCETHLeverage int `json:"btc_eth_leverage"`
AltcoinLeverage int `json:"altcoin_leverage"`
TradingSymbols string `json:"trading_symbols"`
CustomPrompt string `json:"custom_prompt"`
OverrideBasePrompt bool `json:"override_base_prompt"`
IsCrossMargin *bool `json:"is_cross_margin"`
TradingSymbols string `json:"trading_symbols"`
CustomPrompt string `json:"custom_prompt"`
OverrideBasePrompt bool `json:"override_base_prompt"`
SystemPromptTemplate string `json:"system_prompt_template"`
IsCrossMargin *bool `json:"is_cross_margin"`
}
// handleUpdateTrader 更新交易员配置
@@ -452,6 +453,12 @@ func (s *Server) handleUpdateTrader(c *gin.Context) {
scanIntervalMinutes = existingTrader.ScanIntervalMinutes // 保持原值
}
// 设置系统提示词模板,允许更新
systemPromptTemplate := req.SystemPromptTemplate
if systemPromptTemplate == "" {
systemPromptTemplate = existingTrader.SystemPromptTemplate // 保持原值
}
// 更新交易员配置
trader := &config.TraderRecord{
ID: traderID,
@@ -465,7 +472,7 @@ func (s *Server) handleUpdateTrader(c *gin.Context) {
TradingSymbols: req.TradingSymbols,
CustomPrompt: req.CustomPrompt,
OverrideBasePrompt: req.OverrideBasePrompt,
SystemPromptTemplate: existingTrader.SystemPromptTemplate, // 保持原值
SystemPromptTemplate: systemPromptTemplate,
IsCrossMargin: isCrossMargin,
ScanIntervalMinutes: scanIntervalMinutes,
IsRunning: existingTrader.IsRunning, // 保持原值