手把手教你用规则引擎搭建贷前风控决策流(附完整配置步骤)

0 阅读9分钟

本文基于 JVS-Rules 规则引擎,手把手搭建一个完整的贷前风控决策流,涵盖数据接入、变量加工、规则集、评分卡、额度决策及API调用。

一、风控业务背景

贷前审批是信贷业务的第一道防线。一个典型的流程包括:

  1. 用户实名验证(身份证、手机号)
  2. 黑名单过滤(内部黑名单、第三方欺诈库)
  3. 反欺诈规则(设备指纹、异常行为)
  4. 信用评估(征信分、收入负债比、多头借贷)
  5. 额度计算(评分卡 → 授信额度)

传统实现方式:每个环节硬编码或使用 Drools DRL 文件。维护成本高,策略上线慢(周级),且业务人员无法参与。

使用 JVS-Rules 可视化决策流后,风控策略可做到小时级上线,且业务人员可独立完成 80% 的规则调整。

二、整体决策流设计

我们设计的贷前风控决策流包含以下节点(按执行顺序):

序号节点类型功能说明
1开始节点定义入参(用户ID、申请金额等)
2数据源节点调用征信API、查询内部数据库
3变量加工节点将原始数据转换为业务因子(负债收入比、多头借贷次数等)
4规则集节点硬规则拒绝(年龄不符、黑名单、征信分过低)
5评分卡节点对通过硬规则的用户进行信用评分
6决策表节点根据评分结果映射授信额度
7结束节点返回审批结果(通过/拒绝)、额度、拒绝原因码

下面逐步拆解每个节点的配置细节。

三、第一步:配置入参(开始节点)

在决策流基本信息中定义入参,供后续节点使用。本例入参如下:

参数名字段Key类型说明
用户IDuserIdString唯一标识
申请金额applyAmountDouble用户申请贷款金额
身份证号idNoString用于身份核验

入参 JSON 格式自动生成:

json

{
  "userId": "U10001",
  "applyAmount": 50000,
  "idNo": "410***************"
}

四、第二步:数据源接入

风控决策需要多种数据来源。JVS-Rules 支持三种数据源接入方式:

4.1 接入征信API(API数据源)

配置步骤

  1. 进入「数据源」管理,点击「新增」→「API 数据源」

  2. 填写数据方名称:「百行征信」

  3. 配置接口:

    • URL:https://api.baixingcredit.com/v1/query
    • 请求方式:POST
    • 请求头:Authorization: Bearer {{token}}
    • 入参:{ "idNo": "{{idNo}}" }
  4. 配置数据解析规则:返回 JSON 中提取 creditScore(征信分)、overdueCount(逾期次数)、debtAmount(负债总额)

  5. 保存并测试接口

4.2 接入内部黑名单表(MySQL数据源)

配置步骤

  1. 新增 MySQL 数据源,填入数据库连接信息

  2. 点击「同步结构」,选择 blacklist 表

  3. 创建复合变量「黑名单查询」:

    • 数据过滤条件:idNo = {{idNo}}
    • 输出字段:is_black(存在记录即命中)

4.3 接入用户历史订单表(SQL变量)

如果内部数据库表结构复杂,可使用 SQL 变量直接写查询语句:

sql

SELECT 
  COUNT(*) AS order_count_90d,
  SUM(amount) AS total_amount_90d
FROM orders
WHERE user_id = #{userId}
  AND create_time >= DATE_SUB(NOW(), INTERVAL 90 DAY)

配置参数:userId(String,必填),模拟值:"U10001"

五、第三步:变量加工

原始数据不能直接用于规则,需要加工成业务因子。

5.1 基础变量(函数加工)

在「变量管理」中创建以下基础变量:

变量名计算公式说明
年龄AGE(idNo)从身份证号提取年龄
负债收入比DIVIDE(debtAmount, monthlyIncome)负债总额 / 月收入
多头借贷次数SUM(applyCount_30d)近30天申请机构数
是否高龄GT(age, 60)布尔值,年龄>60为true

JVS-Rules 提供 100+ 内置函数,包括文本、数学、逻辑、集合、时间等。上述 AGEDIVIDEGT 均为内置。

5.2 复合变量(多行数据聚合)

我们需要「近6个月逾期次数」。创建复合变量:

  • 数据源:repayment_record 表
  • 过滤条件:user_id = #{userId} AND status = '逾期' AND due_date >= DATE_SUB(NOW(), INTERVAL 6 MONTH)
  • 分组:无(直接统计)
  • 聚合:COUNT(*) → 输出 overdue_count_6m

然后创建基础变量 has_overdueGT(overdue_count_6m, 0)

六、第四步:硬规则过滤(规则集节点)

在决策流画布上拖入「规则集」节点,配置多条并行判断的规则。规则之间为 OR 关系(任何一条命中即触发拒绝)。

规则集配置如下:

规则名称条件表达式命中后动作
年龄不符年龄 < 18 OR 年龄 > 65拒绝,原因码 A01
黑名单命中黑名单查询.is_black == true拒绝,原因码 B02
征信分过低creditScore < 550拒绝,原因码 C03
严重逾期overdue_count_6m >= 3拒绝,原因码 D04
多头借贷超限多头借贷次数 > 5拒绝,原因码 E05

配置界面操作

  1. 点击规则集节点 → 「添加规则」
  2. 每条规则中点击「添加关系组」,选择变量、比较符、比较值
  3. 设置命中后的分支:可连接到结束节点(拒绝),或继续执行(若设计为累计规则)

本案例设计为:任何硬规则命中,直接跳转到结束节点返回拒绝。在画布上将规则集的「拒绝」连线连接到结束节点,「通过」连线连接到评分卡节点。

七、第五步:信用评分(评分卡节点)

通过硬规则的用户进入评分卡。评分卡节点采用「简单评分卡」或「复杂评分卡」。本例使用简单评分卡。

配置评分卡

  1. 拖入「简单评分卡」节点
  2. 设置评分维度(每个维度独立评分,最后加权求和):
维度条件范围分值权重
年龄25-40岁301
年龄41-55岁201
年龄18-24岁 或 56-60岁101
月收入≥20000元401
月收入10000-19999元251
月收入5000-9999元101
征信分≥700301
征信分600-699151
征信分550-59951
负债收入比<0.3201
负债收入比0.3-0.5101
负债收入比>0.5-101

总分计算:简单求和(权重均为1时,总分 = 各维度分值之和)。最高分 = 30+40+30+20 = 120,最低分可能出现负数。

评分卡节点输出 totalScore 变量,供后续决策表使用。

八、第六步:额度决策(决策表节点)

根据评分结果和申请金额,决策表输出最终额度(或拒绝)。

决策表配置

评分区间申请金额 ≤ 额度上限审批结果授信额度拒绝原因
≥100任意通过申请金额 × 1.0-
80-99≤30000通过30000-
80-99>30000拒绝0额度不足
60-79≤10000通过10000-
60-79>10000拒绝0额度不足
<60任意拒绝0信用评分低

在 JVS-Rules 决策表节点中:

  1. 点击「新增维度」添加条件列:totalScore 区间、applyAmount 比较
  2. 添加结果列:result(通过/拒绝)、creditLimit(数值)、rejectReason(字符串)
  3. 逐行填写规则

决策表节点输出结果变量,供结束节点使用。

九、第七步:结束节点自定义输出

结束节点可以自定义输出字段。本例输出:

输出字段类型说明取值来源
approvedBoolean是否通过决策表.result == "通过"
creditLimitDouble授信额度决策表.creditLimit
rejectCodeString拒绝原因码规则集命中的原因码 或 决策表.rejectReason
totalScoreInteger评分卡得分评分卡.totalScore

配置方式:在结束节点属性中点击「新增结果」,选择「变量」类型,从下拉框中选择上述变量。

十、在线测试与API调用

10.1 在线测试

决策流配置完成后,点击「模拟测试」按钮,输入测试数据:

json

{
  "userId": "U10001",
  "applyAmount": 50000,
  "idNo": "410***************"
}

点击「执行」,系统会:

  • 高亮显示实际执行的节点路径
  • 鼠标悬停任何节点可查看输入输出
  • 最终显示结束节点的输出结果

10.2 API 调用

决策流启用后,业务系统可通过 HTTP 调用:

请求示例(cURL)

bash

curl -X POST https://your-domain/api/risk/projectFlow/call/FLOW_CREDIT_001 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_xxxxx" \
  -d '{"userId":"U10001","applyAmount":50000,"idNo":"410***************"}'

响应示例

json

{
  "code": 0,
  "msg": "success",
  "data": {
    "approved": true,
    "creditLimit": 50000,
    "rejectCode": "",
    "totalScore": 95
  },
  "timestamp": "2026-04-13T14:30:00.123Z"
}

10.3 调用日志

每次调用都会记录在「执行日志」中,可查看:

  • 完整入参和出参
  • 各节点执行耗时
  • 决策路径可视化回放

这对风控合规审计非常关键。

十一、总结

通过 JVS-Rules 规则引擎,我们仅用拖拽配置 + 少量函数就完成了一个企业级贷前风控决策流。相比硬编码方式:

对比项传统硬编码JVS-Rules 规则引擎
策略上线周期3-5 天2 小时
业务人员参与度低(只能提需求)高(可配置规则、评分卡、决策表)
规则变更风险高(代码回归)低(可视化测试,路径高亮)
合规审计需人工审查代码自动记录版本、执行日志
维护成本高(专职开发)低(运维+业务)

本文完整决策流已在 JVS-Rules 中验证通过。如果你正在构建或重构风控系统,建议尝试规则引擎方案。

注:JVS-Rules 社区版开源免费,可满足大部分中小企业的风控需求。商业版提供动态公式、交叉决策表、异步执行等高级功能。