信贷政策计算接口
本页保留为信贷政策预览接口详细参考。MVP 研发口径以 04-风控域 为准。
风控系统对外提供的政策动态计算能力:给定 (商品 + 价格 + 客户信号),返回当下可批的首付区间、分期期数选项、价格上限。
替代 catalog SKU 静态字段(min_dp_ratio / max_dp_ratio / price_cap / promo_term),统一所有商品录入路径(catalog 选品 / IMEI 扫码 / 未来其他)的填表流程。
业务目的
首付区间、分期期数、价格上限不是商品的固有属性,是 (商品 + 价格 + 客户 + 渠道) 在当下风控策略下的动态结果。把这条政策算力收敛到风控系统单点提供,避免:
- 商品中心要承担首付/期数等政策语义,越权且难以维护
- 不同入口(catalog / IMEI 扫码)的政策计算口径不一致
- 政策策略迭代要回去改商品 SKU 字段,节奏错配
product_id 退化为商品标识,不承载政策语义。政策由风控规则引擎按客户/商品/价格/渠道分层组合产出。
调用场景
| 场景 | 触发位置 | 说明 |
|---|---|---|
| SA 办分期 Calculate 页(catalog 选品) | 商品选定 + 价格 onBlur | 用 product_id + price 调本接口取 DP 区间和 term 选项渲染填表 UI |
| SA 办分期 Calculate 页(IMEI 扫码) | 反查回填 brand/model + 价格 onBlur | 用 device.brand + device.model + price 调本接口(无 product_id) |
| 客户端办分期(远期 C 端直贷) | 选品 + 价格确认 | 同 catalog 选品路径 |
本接口是政策预览/试算,不是最终审批。最终审批走办单提交后的风控决策节点(受理时再算一次,作为决策依据落库)。
接口契约
POST /credit-policy/preview
| 项 | 说明 |
|---|---|
| 提供方 | 风控系统 |
| 触发方 | 渠道中心(SA App 办单流程)/ 客户端(远期) |
入参
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| product_id | string | 二选一 | catalog 选品路径有;与 device 二选一 |
| device.brand | string | 二选一 | IMEI 路径必填 |
| device.model | string | 二选一 | IMEI 路径必填 |
| price | number(NGN) | ✓ | SA 现场填的实际售价 |
| customer_id | string | 客户已绑定时有;未绑定时空(按全局默认 + 渠道默认) | |
| frequency | enum | weekly / monthly,影响 term 选项粒度 | |
| channel_id | string | 渠道 / 门店标识,参与渠道分层 |
出参(hard truth:调 CTA 可达性的决策依据)
| 字段 | 类型 | 说明 |
|---|---|---|
| dp_min | number(NGN) | 最低首付 |
| dp_max | number(NGN) | 最高首付 |
| suggested_dp | number(NGN) | 推荐首付(前端默认值) |
| dp_tiers | array<int> | DP 百分比档位(如 [30, 40, 50, 60, 70]) |
| term_options | array<int> | 可选分期期数(按 frequency 单位) |
| promo_term | int | 推荐分期期数(前端默认值) |
| price_cap | number(NGN) | 价格上限 |
| policy_version | string | 政策版本号(用于决策追溯) |
| policy_id | string | 本次政策计算记录 ID(落政策追溯日志,关联到后续审批) |
异常码
| 码 | 含义 | 前端处理 |
|---|---|---|
| POLICY_PRICE_OVER_CAP | 价格超出上限 | CTA 不可达,引导调价 / 走人工通道 |
| POLICY_PRODUCT_NOT_ELIGIBLE | 商品不在政策范围内(品牌/型号未覆盖) | 引导手动选品 / 拒单 |
| POLICY_CUSTOMER_REJECTED | 客户层面已拒(黑名单 / 高风险) | 引导拒单 / 走人工 |
| POLICY_UPSTREAM_UNAVAILABLE | 政策引擎不可达 | 前端按全局兜底默认 + 标记降级,办单受理时再次校验 |
政策决策维度
风控规则引擎按以下维度组合产出政策结果。具体规则细节不在契约层展开。
| 维度 | 说明 |
|---|---|
| 商品分层 | 品类(手机 / 数码 / 家电)、档位(high-end / mid-end / low-end) |
| 价格层级 | 价格段决定 DP 区间倾向、分期期数上限 |
| 客户分层 | 新户 vs 复借、评分段、历史履约 |
| 渠道分层 | 重点门店 / 一般门店 / 新接入门店 |
触发时机
| 时机 | 行为 |
|---|---|
| price onBlur | 触发请求;不在 onChange 防抖 |
| 商品变更 | 清空已渲染的 DP / term,重新触发 |
| 客户变更(绑定 / 解绑 customer_id) | 重新触发 |
| 渠道变更 | 重新触发(SA 切换门店场景) |
跨域协作
| 域 | 角色 |
|---|---|
| 渠道中心 | 调用方(SA 办分期 Calculate 页) |
| 风控系统 | 提供方 — 政策引擎规则 / 客户分层 / 商品分层 / 价格上限 |
| 商品中心 | 提供商品属性(品类 / 品牌 / 型号 / 档位)给风控政策引擎 |
| 客户系统 | 提供客户基础属性(评分段 / 历史履约)给风控政策引擎(实时查询) |
核心字段
credit_policy_preview_log
每次政策预览留痕,用于决策追溯。
| 字段 | 类型 | 说明 |
|---|---|---|
| policy_id | string | 本次政策计算记录 ID |
| request_time | timestamp | |
| product_id | string | 入参回显 |
| device_brand | string | 入参回显 |
| device_model | string | 入参回显 |
| price | number | 入参回显 |
| customer_id | string | 入参回显 |
| channel_id | string | 入参回显 |
| dp_min / dp_max / suggested_dp | number | 出参回显 |
| dp_tiers / term_options / promo_term | json | 出参回显 |
| price_cap | number | 出参回显 |
| policy_version | string | 政策版本号 |
| decision_factors | json | 命中的分层标签(商品档位 / 客户分段 / 渠道分段) |
MVP 边界
| 能力 | MVP | 二期 |
|---|---|---|
| 商品分层政策 | ✓ 硬编码 | 风控管理台配置 |
| 客户分层政策 | ✓ 新户固定档位 | 评分卡 + 客户级动态 |
| 价格上限 | ✓ 全局固定 | 商品分层动态 |
| 政策版本号 | ✓ 硬编码 | 版本管理 + A/B |
| 政策降级兜底 | ✓ 前端全局默认 | 后端兜底 + 监控告警 |
| 决策追溯日志 | ✓ 按入参/出参落表 | 完整决策链追溯(含命中规则) |
开放问题
| # | 议题 | 说明 |
|---|---|---|
| 1 | IMEI 路径商品维度的颗粒度 | 风控政策引擎依据 brand + model 匹配商品分层。若 brand/model 未在风控商品分层库中收录,降级到品类分层 or 直接 POLICY_PRODUCT_NOT_ELIGIBLE,待定 |
| 2 | 政策预览结果是否对办单受理时的二次决策有约束 | 预览态与最终决策态之间存在时间差和规则版本差,是否允许预览通过但受理被拒,需对齐产品策略 |
| 3 | customer_id 未绑定时的政策保守度 | 未绑定客户走全局默认,是否需要较严格的 DP 下限以管控风险,待风控对齐 |