- 新增 RuleExpr 字段,支持结构化拼接和自由文本两种模式,二选一互斥 - 删除 RuleCode/FormulaText/ApplicationCode/SourceExpression/IsImplemented/VariableCode/TargetCode - 重命名 FormulaJson→ConditionJson, FormulaExpr→RuleExpr, ImplementationScript→VariableExpr, RuleDescription→RuleText - RuleId(bigint)→RuleIds(varchar) 多规则支持 - FormulaCondition: variableCode(string)→variableId(long), thresholdVariableCode→thresholdVariableId - 新增 44 条变量池 seed 数据 - 设计文档同步更新
80 lines
3.1 KiB
C#
80 lines
3.1 KiB
C#
using System;
|
||
|
||
namespace YLErp.Modules.RiskEngine
|
||
{
|
||
/// <summary>
|
||
/// 风控规则(合并模型:规则定义 + 应用配置合一)
|
||
///
|
||
/// 最终设计说明:
|
||
/// 业务上不需要 "一个 Rule 对应多个 Application" 的复杂关系。
|
||
/// 每条规则自身包含:公式定义 + 校验策略 + 触发时点 + 适用范围。
|
||
/// 规则创建时即完成脚本编译,判风控时直接执行已编译委托(零解析开销)。
|
||
/// </summary>
|
||
public class RiskRule
|
||
{
|
||
// === 基础信息 ===
|
||
public int Id { get; set; }
|
||
public string RuleName { get; set; }
|
||
public string RuleText { get; set; }
|
||
|
||
/// <summary>
|
||
/// 【核心】条件JSON(结构化模式的条件列表存储),如
|
||
/// {"conditions":[{"variableId":1,"operator":">","value":100000000}]}
|
||
/// 由 RuleCompiler 解析并编译为 CompiledScript
|
||
/// </summary>
|
||
public string ConditionJson { get; set; }
|
||
|
||
/// <summary>
|
||
/// 【核心】规则表达式(自由文本模式,类C#表达式)
|
||
/// 由 RuleCompiler 编译为 CompiledScript
|
||
/// </summary>
|
||
public string RuleExpr { get; set; }
|
||
|
||
// === 校验策略(原 Application.ControlStrategy)===
|
||
/// <summary>
|
||
/// 校验策略:1=禁止, 2=审批, 3=提示
|
||
/// </summary>
|
||
public int ControlStrategy { get; set; }
|
||
|
||
// === 触发时点(原 Application.TriggerPoints)===
|
||
/// <summary>
|
||
/// 触发时点,逗号分隔(如 BOOK_CONFIRM,CLOSE_REVIEW)
|
||
/// </summary>
|
||
public string TriggerPoints { get; set; }
|
||
|
||
// === 适用范围(原 Application.Scope*)===
|
||
/// <summary>
|
||
/// 是否全局适用(true=所有交易适用,忽略其他 Scope 字段)
|
||
/// </summary>
|
||
public bool ScopeIsGlobal { get; set; }
|
||
public string ScopeAssetBookIds { get; set; }
|
||
public string ScopeClientIds { get; set; }
|
||
public string ScopeUnderlyingTypes { get; set; }
|
||
public string ScopeTradeTypes { get; set; }
|
||
|
||
// === 生命周期 ===
|
||
/// <summary>
|
||
/// 状态:1=已生效(Active), 2=已停用(Disabled), 3=已删除(Deleted)
|
||
/// </summary>
|
||
public int Status { get; set; }
|
||
public int Version { get; set; }
|
||
public bool IsDeleted { get; set; }
|
||
|
||
// === 审计字段 ===
|
||
public int OptId { get; set; }
|
||
public string OptName { get; set; }
|
||
public DateTime OptDate { get; set; }
|
||
public int UpdateOptId { get; set; }
|
||
public string UpdateOptName { get; set; }
|
||
public DateTime UpdateDate { get; set; }
|
||
|
||
// === 运行时内存字段(不持久化到数据库)===
|
||
/// <summary>
|
||
/// 【核心】预编译的可执行委托
|
||
/// 在规则创建/加载时由 RuleCompiler.Compile(this) 生成
|
||
/// 判风控时直接调用:rule.CompiledScript(context) → bool
|
||
/// </summary>
|
||
public Func<RiskContext, bool> CompiledScript { get; set; }
|
||
}
|
||
}
|