package cn.iocoder.yudao.module.qcreport.engine.rule; import java.util.List; /** * 规则语法树节点。 *
* 与前端 {@code engine/rule-engine.ts} 的 RuleNode 联合类型一一对应:
* 递归下降解析成这棵树后自己求值,全程不碰 eval / 脚本引擎——
* 规则文本来自用户,一旦能被当作代码执行就是注入口子。
*/
public sealed interface RuleNode {
/** 字面量:数字(Double)/ 字符串 / 布尔 / null */
record Literal(Object value) implements RuleNode {
}
/** 上下文路径取值,如 item.actualValue */
record Path(String path) implements RuleNode {
}
/** 白名单函数调用 */
record Call(String name, List