fix(qa): ISSUE-002 — 修复 parseExpression {field} 占位符残留 SQL 语法错误

当衍生指标表达式引用未在 indicators 中勾选的字段时,
原代码返回 {fieldCode} 占位符,导致生成的 SQL 包含大括号语法错误。
改为始终返回裸 fieldCode,避免 SQL 错误。
This commit is contained in:
lmk
2026-06-16 18:56:45 +08:00
parent ae9ada7f9d
commit 6e6f9087b6
+4 -1
View File
@@ -360,6 +360,8 @@ func (b *SQLBuilder) buildTimeGroupExpr(dateField, timeGroup string) string {
}
// parseExpression 解析衍生指标表达式
// 将 {fieldCode} 占位符替换为原始字段名,当字段不在 indicators 中时仍返回 fieldCode
// 避免未替换的 {fieldCode} 占位符泄漏到 SQL 中导致语法错误
func (b *SQLBuilder) parseExpression(expr string, indicators []model.IndicatorSelect) string {
re := regexp.MustCompile(`\{([^}]+)\}`)
return re.ReplaceAllStringFunc(expr, func(match string) string {
@@ -369,7 +371,8 @@ func (b *SQLBuilder) parseExpression(expr string, indicators []model.IndicatorSe
return fieldCode
}
}
return match
// 字段不在 indicators 中也返回裸字段名(避免 {fieldCode} 残留 SQL 导致语法错误)
return fieldCode
})
}