Files
zszq-trs/YLErpDAL/Modules/RiskEngine/RiskRule.cs
T
尹峰 28ed20e527 feat: 规则双模式公式表达式(RuleExpr)& 字段精简重构
- 新增 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 数据
- 设计文档同步更新
2026-06-24 09:44:13 +08:00

80 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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; }
}
}