# DWBG9FB3 个人风险档案 — 响应结构说明 ## 概述 `DWBG9FB3`(个人风险档案)本身是一个独立接口,接收三要素入参后,**并发**调用 12 个子产品处理器,将各子接口原始返回数据**直接拼接融合**为一个 JSON 对象返回。 - 不使用 `success` / `data` / `error` 等包装结构 - 顶层 key 为简短**英文单词**字段名 - 每个大字段的 value 即为对应子处理器的原始返回对象 - 子产品调用失败时,该字段值为 `null`,不影响其他字段 - 汇总时递归剔除上游流水号字段:`order_no`、`orderNo` ## 最终扁平结构(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` | 核验维度安全分 | ## 请求参数 ```json { "id_card": "110101199001011234", "name": "张三", "mobile_no": "13800138000" } ``` ## 响应结构 顶层为一个扁平对象,包含总体风险评估 `RA` 与 12 个子维度字段: ```json { "RA": { "ra_score": 495, "ra_level": "F", "ra_fraud_score": 890, "ra_credit_score": 0, "ra_judicial_score": 580, "ra_verify_score": 850 }, "presence": { }, "duration": { }, "triple": { }, "identity": { }, "fraud": { }, "probe": { }, "rating": { }, "intent": { }, "special": { }, "complaint": { }, "behavior": { }, "judicial": { } } ``` ## 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) ## 响应示例 ```json { "RA": { "ra_score": 495, "ra_level": "F", "ra_fraud_score": 890, "ra_credit_score": 0, "ra_judicial_score": 580, "ra_verify_score": 850 }, "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[英文字段名]子处理器原始数据`。 - 子产品数据保持各处理器原有返回结构,不做二次转换。