Commit Graph
35 Commits
Author SHA1 Message Date
ruisu cfd5efd3d3 feat:优化风控引擎运行时,变量表的读取 2026-08-05 17:19:50 +08:00
ruisu 8fb3c4392c feat:风控触发时显示应用ID、
新老风控组合校验:
老风控Error/Warning,新风控需审批——点击特批即两边都放行
老风控Error/Warning,新风控禁止——不展示
老风控Error/Warning——展示特批,且只特批老风控。
新增风控流程日志
2026-08-05 14:39:01 +08:00
ruisu c77d44b54a feat:支持变量的表达式具体业务值报警。优化性能 2026-07-28 16:45:32 +08:00
ruisu 2977f658f7 feat:支持变量为复杂表达式。 2026-07-27 15:01:51 +08:00
ruisu 9b98a0dd88 feat:风控引擎执行异常或者现场编译异常时视为不通过,并且返回前端,落数据库 2026-07-17 14:29:44 +08:00
ruisu 9dad4cb8d0 fix:风控引擎的数据库对象不再采用全局,防止追踪所有查询出的对象 2026-07-17 10:28:21 +08:00
ruisu bcb1ee25b1 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-17 09:27:39 +08:00
ruisu d9002e8d36 feat:修改测试用例 2026-07-17 09:27:25 +08:00
尹峰 220657cb5c 批量启停规则和应用优化 2026-07-16 19:58:26 +08:00
ruisu 78cf89be0d fix:修改风控application字段,将标的类型字段修改为UnderlyingAssetClass,内容为汉字 2026-07-14 18:33:45 +08:00
ruisu 8e0e779133 feat:根据ai merge意见修改:dbContext取消与单例riskEngienService的绑定,反射代码修改。
支持老风控Error情况下的二次特批
2026-07-14 17:18:33 +08:00
ruisu 82688fa930 feat:风控引擎内存上下文改为查询数据库,修改注释中的相应规则, 2026-07-13 15:47:37 +08:00
ruisu b5f6b7f61a feat:增加ruleid为空的校验,以支持rule新增。增加preload成功编译rule的日志 2026-07-10 10:31:41 +08:00
ruisu 18fdb9e9f1 feat:增加单条rule增删改函数,以及application全量刷新函数。 2026-07-09 18:01:55 +08:00
ruisu 4e6d887b68 feat:修改本地规则 2026-07-09 16:18:28 +08:00
ruisu dc0cb9ec7b feat:老风控特批使用单独bool量识别,新风控需审批采用新状态RiskWarning,风控流程状态优先级Error>Warning(老风控特批,给前端CODE为ERROR)>RiskWarning>Success(可能带有ShowTIip)。新风控特批时,识别RULEID,不再采用BOOL统一通过 2026-07-06 17:41:13 +08:00
ruisu ecb71b35f6 fix:解决冲突 2026-07-02 17:04:20 +08:00
ruisu 3ec484c2ec Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-07-02 16:56:20 +08:00
ruisu 917eacc7b7 feat:增加内存刷新接口,优化rule日志记录,不再使用EXception。非ACTIVE的rule不再编译。 2026-07-02 16:46:28 +08:00
尹峰 10b08f8f21 优化字段类型 2026-06-29 18:34:46 +08:00
尹峰 94da9748a2 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-06-29 18:10:13 +08:00
尹峰 d7c09c793a fix(risk-engine): 修复多个风控引擎问题
- ScopeIsGlobal 类型由 bool 改为 int 以兼容前端传输 0/1
- 修复 QueryApplicationList 中 Status 投影 EF Core enum 转换失败
- 新增 Scope 字段查询支持(逗号分隔集合精确匹配)
- 新增变量列表 DataType 筛选
- 修复审计日志日期查询范围(EndDate 纳入整天数据)
- 统一 Application 审计日志 OperationType 前缀(APP_xxx)
- 审计日志 OperationDetail 枚举值映射为中文
2026-06-29 18:09:19 +08:00
ruisu 9777698a9a feat:修改互换交易样式以支持展示新风控内容,将rule与application加载前移到系统启动时 2026-06-29 17:29:36 +08:00
ruisu 0c2a4b3afb feat:打通前后端链路。老风控新风控映射:禁止=》Error,需审批=》RiskWarning(新状态,需二次确认,并记录日志),提示、通过=》Success(提示增加TIpMessage) 2026-06-26 17:01:21 +08:00
ruisu 32b7de93e2 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-06-25 17:26:48 +08:00
ruisu 7747d26ed0 支持从数据库读取rule与application,进行匹配校验,以及拼接返回值 2026-06-25 17:25:47 +08:00
尹峰 193123a9bf Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-06-24 18:24:15 +08:00
尹峰 c2fc699e57 feat(risk-engine): 完善风控规则种子数据与 CRUD 接口优化
1. 新增 21 条通用风控规则及应用配置种子数据(seed_rules.sql / seed_applications.sql)
2. 新增 9 个风控变量(偏离度类、执行价、最低保证金率、参考价格)
3. DTO 字段重命名:ExpectedVersion → Version,Keyword → RuleName/VariableName
4. 规则列表返回 ConditionJson 和 RuleExpr 字段
5. 应用列表查询支持按规则名称数据库级筛选(替代内存过滤)
6. 启用/停用操作不再递增 Version 号
7. RiskEngineService 单例构造使用 SystemUser 替代 null
8. RiskRuleService 移除冗余实例字段,改用 GetInstance() 直接调用
2026-06-24 18:23:43 +08:00
ruisu fb9c7430e9 Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine 2026-06-24 15:44:07 +08:00
ruisu 1fa7a8b79c 将Application与编译独立,跑通基础链路 2026-06-24 15:05:24 +08:00
尹峰 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
尹峰 5b77bbf53e merge and fix conflict 2026-06-23 16:06:01 +08:00
尹峰 a259b745ce feat(风控引擎): RiskRuleService/RiskRuleController 权限控制及需求对齐
【权限控制】
  - FunctionRight.xml 注册 16 个风控引擎权限标识(规则/应用/变量/日志 四类 Tab+操作权限)
  - RiskRuleController 28 个 Action 均添加 [MyAuthorize] 校验
  - 权限管理员角色自动获得全部风控权限(UserInfo.cs)

【需求对齐】对照 v1.15 需求文档修复差异:
  - 审计日志操作类型命名对齐:APPLICATION_* → APP_*,VARIABLE_* → VAR_*
  - 规则列表新增按变量编码筛选(QueryRiskRuleReq.VariableCode → FormulaJson.Contains)
  - 变量列表新增分页支持(QueryRiskVariableReq 继承 BaseSearchReq,QueryVariableList → SearchListResult)
  - 需求文档同步至 v1.16
2026-06-23 16:01:31 +08:00
陈斐andClaude 3e357312c2 feat: 风控引擎核心重构 - 表达式树编译 + Roslyn Scripting + 规则模型合并
本次提交实现风控引擎从占位代码到可运行版本的核心升级:

【模型合并】
- RiskRule.cs:删除 RiskRuleApplication,将策略/时点/范围合并到 RiskRule
- 新增 FormulaJson 字段,用于 Roslyn 脚本解析
- 新增 CompiledScript 运行时字段(预编译委托,不持久化)

【规则编译器 - RuleCompiler.cs】
- ParseFormulaJson:解析 FormulaJson 条件列表
- BuildScriptCode:生成 Roslyn C# 脚本代码
- CompileScript:用 Roslyn 编译为 Func<RiskContext, bool> 委托
- 支持多条件 AND(逗号分隔自动拆分)
- 变量类型映射:YLErp.DBModels.trade 等

【EvaluateRisk 升级】
- LoadRules → 筛选 TriggerPoint → 执行 CompiledScript → 按策略聚合
- 异常处理:返回 NeedApproval(审批类,可审批通过)
- 示例规则:名义本金>1亿 且 保证金比例>50% → 禁止

【项目依赖】
- 新增 Microsoft.CodeAnalysis.CSharp (4.12.0)
- 升级 System.Text.Encoding.CodePages 6.0.0 → 7.0.0

【验证】
- 簿记交易确认(BOOK_CONFIRM)已接入 QuotaMonitorService
- 编译通过,运行验证通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 19:31:20 +08:00
陈斐andClaude 4140293b36 feat: 新增风控引擎RiskEngine模块(第一版骨架)
- 新增YLErpDAL/Modules/RiskEngine文件夹,与RiskModule平级隔离
- 新增核心模型:
  - RiskContext.cs:风控上下文(TradeId, TriggerPoint, DataMap)
  - RiskResult.cs:风控结果(Passed, Blocked, NeedApproval, Warnings, TriggeredRules)
- 新增RiskEngineService:
  - Evaluate():1==1占位,验证服务可实例化
  - EvaluateRisk(RiskContext, triggerPoint):核心风控检查入口
- 集成到现有流程:
  - QuotaMonitorService.QuotaCheck()末尾接入风控引擎
  - 触发时点:BOOK_CONFIRM(簿记交易确认)
  - 按策略映射回QuotaTrialStatusEnum(Blocked→Error, NeedApproval→Warning)
- 文件头包含完整技术方案与TODO清单

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 11:23:11 +08:00