feat(crypto策略): 支持巴菲特策略纯 rawMessage 信号推送
Motivation: 新增巴菲特激进/稳健策略(PUTEJJ/PUTEWJ)的跟单推送能力。该类信号仅有 rawMessage、无 action 字段,需按原文直接推送,并过滤启动文案、本地化时间字段。 Changes: * 支持无 action 的纯 rawMessage 信号,映射为 trade.message 事件 * 新增 not_contains 条件操作符,用于过滤启动文案 * 新增 replace 模板函数,将 Time: 替换为推送时间: * 补充巴菲特策略模板、规则与渠道配置文档
This commit is contained in:
@@ -17,8 +17,9 @@ func (r *Renderer) Render(tmplContent string, data map[string]interface{}) (stri
|
||||
tmpl, err := template.New("notify").
|
||||
Option("missingkey=zero").
|
||||
Funcs(template.FuncMap{
|
||||
"line": templateLine,
|
||||
"case": templateCase,
|
||||
"line": templateLine,
|
||||
"case": templateCase,
|
||||
"replace": strings.ReplaceAll,
|
||||
}).
|
||||
Parse(tmplContent)
|
||||
if err != nil {
|
||||
|
||||
@@ -98,6 +98,19 @@ func TestRendererCaseEventSuffix(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRendererReplace(t *testing.T) {
|
||||
r := NewRenderer()
|
||||
out, err := r.Render(`{{replace .rawMessage "Time:" "推送时间:"}}`, map[string]interface{}{
|
||||
"rawMessage": "激进版AI 1.0\n市价开空\nTime: 2026.08.17 14:46:04",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(out, "推送时间: 2026.08.17 14:46:04") || strings.Contains(out, "Time:") {
|
||||
t.Fatalf("out=%q", out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRendererCaseDefault(t *testing.T) {
|
||||
r := NewRenderer()
|
||||
out, err := r.Render(`{{case .action "OPEN" "开仓" "未知"}}`, map[string]interface{}{"action": "HOLD"})
|
||||
|
||||
Reference in New Issue
Block a user