feat:增加单条rule增删改函数,以及application全量刷新函数。

This commit is contained in:
ruisu
2026-07-09 18:01:55 +08:00
parent 66381e5dc4
commit 18fdb9e9f1
@@ -205,6 +205,50 @@ namespace YLErp.Modules.RiskEngine
Preload();
}
/// <summary>
/// 刷新单条规则缓存:重新加载规则与应用列表,只编译指定规则。
/// </summary>
public RuleCompileResult RefreshOneRuleCache(long ruleId)
{
lock (_cacheLock)
{
_logger.Info($"[风控引擎] RefreshOneRuleCache 开始 - RuleId: {ruleId}");
// 从数据库加载最新规则列表
_cachedRules = LoadRulesFromDb();
var rule = _cachedRules.FirstOrDefault(r => r.Id == ruleId);
if (rule == null)
{
RuleCompiledCache.Remove(ruleId.ToString());
_logger.Info($"[风控引擎] RefreshOneRuleCache 未找到规则,已移除缓存 - RuleId: {ruleId}");
return RuleCompileResult.Fail("规则不存在或已删除");
}
if (rule.Status != RiskRuleStatus.Active)
{
RuleCompiledCache.Remove(ruleId.ToString());
_logger.Info($"[风控引擎] RefreshOneRuleCache 规则非活跃,已移除缓存 - RuleId: {ruleId}, Status: {rule.Status}");
return RuleCompileResult.Fail("规则不存在或非活跃状态");
}
var compileResult = RuleCompiler.ValidateAndCompileRule(rule);
_logger.Info($"[风控引擎] RefreshOneRuleCache 完成 - RuleId: {ruleId}, Success: {compileResult.Success}, Error: {compileResult.ErrorMessage}");
return compileResult;
}
}
/// <summary>
/// 仅刷新规则应用列表,不清空规则编译缓存。
/// </summary>
public void RefreshApplication()
{
lock (_cacheLock)
{
_cachedApplications = LoadApplicationsFromDb();
_logger.Info($"[风控引擎] RefreshApplication 完成 - 应用数: {_cachedApplications.Count}");
}
}
/// <summary>
/// 从内存缓存获取规则列表;缓存为空时兜底加载并填充缓存。
/// </summary>