Files
tyapi-server/internal/domains/api/services/processors/dwbg/dwbg9fb3.md

225 lines
5.9 KiB
Markdown
Raw Normal View History

2026-06-10 16:05:47 +08:00
# DWBG9FB3 个人风险档案 — 响应结构说明
## 概述
`DWBG9FB3`(个人风险档案)本身是一个独立接口,接收三要素入参后,**并发**调用 12 个子产品处理器,将各子接口原始返回数据**直接拼接融合**为一个 JSON 对象返回。
- 不使用 `success` / `data` / `error` 等包装结构
- 顶层 key 为简短**英文单词**字段名
- 每个大字段的 value 即为对应子处理器的原始返回对象
- 子产品调用失败时,该字段值为 `null`,不影响其他字段
2026-06-10 17:47:36 +08:00
- 汇总时递归剔除上游流水号字段:`order_no``orderNo`
2026-06-10 16:05:47 +08:00
2026-06-10 17:47:36 +08:00
## 最终扁平结构dwbg9FB3OutputSchema
顶层共 **13 个 key**,由 `buildDWBG9FB3Response``dwbg9FB3OutputSchema` 构造:
| 序号 | 顶层 key | 产品编码 | 数据来源方法 | value 类型 |
| :--- | :--- | :--- | :--- | :--- |
| 1 | `RA` | — | `buildDWBG9FB3RA` | 对象6 个评分字段) |
| 2 | `presence` | YYSYE7V5 | `ProcessYYSYE7V5Request` | 对象 / null |
| 3 | `duration` | YYSYP0T4 | `ProcessYYSYP0T4Request` | 对象 / null |
| 4 | `triple` | YYSYK9R4 | `ProcessYYSYK9R4Request` | 对象 / null |
| 5 | `identity` | IVYZN2P8 | `ProcessIVYZN2P8Request` | 对象 / null |
| 6 | `fraud` | JRZQV3HM | `ProcessJRZQV3HMRequest` | 对象 / null |
| 7 | `probe` | JRZQ4B6C | `ProcessJRZQ4B6CRequest` | 对象 / null |
| 8 | `rating` | JRZQ5E9F | `ProcessJRZQ5E9FRequest` | 对象 / null |
| 9 | `intent` | JRZQ3C7B | `ProcessJRZQ3C7BRequest` | 对象 / null |
| 10 | `special` | JRZQV7MD | `ProcessJRZQV7MDRequest` | 对象 / null |
| 11 | `complaint` | JRZQVT43 | `ProcessJRZQVT43Request` | 对象 / null |
| 12 | `behavior` | JRZQV0MD | `ProcessJRZQV0MDRequest` | 对象 / null |
| 13 | `judicial` | FLXG7E8F | `ProcessFLXG7E8FRequest` | 对象 / null |
### RA 子结构
| key | 计算方法 | 说明 |
| :--- | :--- | :--- |
| `ra_score` | `buildDWBG9FB3RA` | 综合安全分(千分制) |
| `ra_level` | `raLevelFromScore` | A-F 等级(每档 100 分) |
| `ra_fraud_score` | `calcRAFraudScore` | 欺诈维度安全分 |
| `ra_credit_score` | `calcRACreditScore` | 借贷维度安全分 |
| `ra_judicial_score` | `calcRAJudicialScore` | 司法维度安全分 |
| `ra_verify_score` | `calcRAVerifyScore` | 核验维度安全分 |
2026-06-10 16:05:47 +08:00
## 请求参数
```json
{
"id_card": "110101199001011234",
"name": "张三",
"mobile_no": "13800138000"
}
```
## 响应结构
2026-06-10 17:47:36 +08:00
顶层为一个扁平对象,包含总体风险评估 `RA` 与 12 个子维度字段:
2026-06-10 16:05:47 +08:00
```json
{
2026-06-10 17:47:36 +08:00
"RA": {
"ra_score": 495,
"ra_level": "F",
"ra_fraud_score": 890,
"ra_credit_score": 0,
"ra_judicial_score": 580,
"ra_verify_score": 850
},
2026-06-10 16:05:47 +08:00
"presence": { },
"duration": { },
"triple": { },
"identity": { },
"fraud": { },
"probe": { },
"rating": { },
"intent": { },
"special": { },
"complaint": { },
"behavior": { },
"judicial": { }
}
```
2026-06-10 17:47:36 +08:00
## RA 总体安全评估(千分制,越高越安全)
| 字段 | 计算方法 | 说明 |
| :--- | :--- | :--- |
| `ra_fraud_score` | `calcRAFraudScore` | 欺诈/黑名单维度安全分 |
| `ra_credit_score` | `calcRACreditScore` | 借贷/逾期维度安全分 |
| `ra_judicial_score` | `calcRAJudicialScore` | 司法涉诉维度安全分 |
| `ra_verify_score` | `calcRAVerifyScore` | 身份/在网核验维度安全分 |
| `ra_score` | `buildDWBG9FB3RA` | 四维安全分加权汇总 |
| `ra_level` | `raLevelFromScore` | A 最安全F 最不安全 |
综合分权重:`fraud 25% + credit 35% + judicial 25% + verify 15%`
等级划分A(900-1000)、B(800-899)、C(700-799)、D(600-699)、E(500-599)、F(0-499)
各维度统计方式:先由 `*RiskPoints` 方法累计风险扣分,再 `安全分 = 1000 - 扣分`
详细规则见 [dwbg9fb3_ra.md](./dwbg9fb3_ra.md)
2026-06-10 16:05:47 +08:00
## 响应示例
```json
{
2026-06-10 17:47:36 +08:00
"RA": {
"ra_score": 495,
"ra_level": "F",
"ra_fraud_score": 890,
"ra_credit_score": 0,
"ra_judicial_score": 580,
"ra_verify_score": 850
},
2026-06-10 16:05:47 +08:00
"presence": {
"status": "1",
"operator": "1"
},
"duration": {
"result": "3",
"desc": "在网时长12-24个月"
},
"triple": {
"state": "1",
"operator": "1"
},
"identity": {
"result": 0,
"desc": "一致",
"sex": "男",
"birthday": "1990-01-01",
"address": "北京市东城区"
},
"fraud": {
"hit": 0
},
"probe": {
"score": 650,
"risk_level": "B"
},
"rating": {
"score": 720,
"level": "A"
},
"intent": {
"apply_loan": {
"d7": { "id": 0, "cell": 1 },
"m1": { "id": 1, "cell": 2 }
}
},
"special": {
"hit": 0
},
"complaint": {
"hit": 0
},
"behavior": {
"hit": 0
},
"judicial": {
"judicial_data": {
"lawsuitStat": {
"count_total": 0,
"count_jie_total": 0,
"count_wei_total": 0
},
"breachCaseList": [],
"consumptionRestrictionList": []
}
}
}
```
## 部分失败示例
某个子产品查无记录或异常时,对应字段为 `null`,其余字段正常返回:
```json
{
"presence": {
"status": "1",
"operator": "1"
},
"judicial": null
}
```
## 调用流程
```mermaid
flowchart LR
A[DWBG9FB3 请求] --> B[参数校验]
B --> C[并发调用 12 个子处理器]
C --> D1[presence]
C --> D2[duration]
C --> D3[triple]
C --> D4[identity]
C --> D5[fraud]
C --> D6[probe]
C --> D7[rating]
C --> D8[intent]
C --> D9[special]
C --> D10[complaint]
C --> D11[behavior]
C --> D12[judicial]
D1 --> E[拼接融合为一个对象]
D2 --> E
D3 --> E
D4 --> E
D5 --> E
D6 --> E
D7 --> E
D8 --> E
D9 --> E
D10 --> E
D11 --> E
D12 --> E
E --> F[返回 JSON]
```
## 实现说明
- 复用 `dwbg8b4d` 中的 `callProcessor`,通过 `CombService.GetProcessor` 按产品编码路由。
- 12 个 goroutine 并发执行,结果写入 `map[英文字段名]子处理器原始数据`
- 子产品数据保持各处理器原有返回结构,不做二次转换。