diff --git a/public/example.json b/public/example.json index 9896270..93c2f4b 100644 --- a/public/example.json +++ b/public/example.json @@ -1,4 +1,537 @@ [ + { + "feature": { + "featureName": "支付行为指数", + "sort": 1 + }, + "data": { + "apiID": "JRZQ3C9R", + "data": { + "code": "200", + "data": { + "ppcm_m24_nbank_fin_qyorg": 1, + "ppcm_m24_overorg": -1, + "ppcm_m6_nbank_other_fail_repamt": -1, + "ppcm_m1_cred_succ_repnum": -1, + "ppcm_m24_succ_reporg": -1, + "ppcm_m1_nbank_fin_qyorg": -1, + "ppcm_m1_nbank_other_fail_repamt": -1, + "ppcm_m6_qynum": 3, + "ppcm_m12_nbank_other_succ_repnum": -1, + "ppcm_d7_loanamt_max": -1, + "ppcm_d7_succ_repamt_max": -1, + "ppcm_m3_nbank_other_qyorg": 2, + "ppcm_m24_nbank_fin_loannum": -1, + "ppcm_m3_succ_repnum_avg": -1, + "ppcm_m1_nbank_other_qyorg": 2, + "ppcm_m6_reporg": -1, + "ppcm_m3_nbank_fin_succ_repnum": -1, + "ppcm_m24_bank_fail_reporg": -1, + "ppcm_m24_bank_loanorg": -1, + "ppcm_m12_nbank_other_fail_reporg": -1, + "ppcm_m6_succ_repnum_avg": -1, + "ppcm_m1_repday": -1, + "ppcm_m12_bank_loanorg": -1, + "ppcm_m6_m24_nbank_fin_fail_repnum_ratio": -1, + "ppcm_m3_m24_nbank_other_qynum_ratio": 0.17, + "ppcm_m12_bank_fail_repamt": -1, + "ppcm_m6_overnum": -1, + "ppcm_m24_loanamt": -1, + "ppcm_m6_nbank_fin_fail_repamt": -1, + "ppcm_m3_succ_reporg": -1, + "ppcm_m6_cred_fail_repnum": -1, + "ppcm_d7_bank_qyorg": -1, + "ppcm_m1_succ_reporg": -1, + "ppcm_m1_nbank_fin_succ_repamt": -1, + "ppcm_d7_nbank_other_qyorg": 2, + "ppcm_m6_cred_succ_repnum": -1, + "ppcm_m24_qyorg": 6, + "ppcm_m6_succ_reporg": -1, + "ppcm_m6_m24_fail_repnum_ratio": -1, + "ppcm_m12_succ_reporg": -1, + "ppcm_m3_fail_neh_repnum_ratio": -1, + "ppcm_m1_nbank_other_neh_repnum_ratio": -1, + "ppcm_m12_fail_repamt": -1, + "ppcm_m1_qynum": 2, + "ppcm_m1_cred_fail_reporg": -1, + "ppcm_m24_cred_fail_repamt": -1, + "ppcm_m24_cred_succ_repamt": -1, + "ppcm_m12_nbank_other_loannum": -1, + "ppcm_m3_qynum_avg": 1, + "ppcm_m3_nbank_fin_fail_reporg": -1, + "ppcm_m24_bank_succ_repnum": -1, + "ppcm_d7_bank_fail_repnum": -1, + "ppcm_m1_reporg_new": -1, + "ppcm_m6_qyday": 3, + "ppcm_d7_reporg": -1, + "ppcm_m12_fail_reporg_new": -1, + "ppcm_m6_nbank_fin_neh_repnum_ratio": -1, + "ppcm_d7_nbank_other_loanamt": -1, + "ppcm_m1_nbank_other_qynum": 2, + "ppcm_d7_m12_nbank_other_qynum_ratio": 0.67, + "ppcm_m3_nbank_fin_succ_reporg": -1, + "ppcm_m6_p4_overamt": -1, + "ppcm_m6_fail_repamt_max": -1, + "ppcm_m6_nbank_other_loanamt": -1, + "ppcm_m1_nbank_other_succ_reporg": -1, + "ppcm_m12_bank_succ_reporg": -1, + "ppcm_m3_fail_repamt_max": -1, + "ppcm_m12_nbank_fin_neh_repnum_ratio": -1, + "ppcm_m1_overamt": -1, + "ppcm_m12_reporg_new": -1, + "ppcm_m6_nbank_other_succ_reporg": -1, + "ppcm_m3_m24_bank_qynum_ratio": -1, + "ppcm_d7_loannum": -1, + "ppcm_m1_fail_repamt": -1, + "ppcm_m3_fail_repamt": -1, + "ppcm_m12_nbank_fin_qynum": 1, + "ppcm_m3_cred_reporg_new": -1, + "ppcm_m6_cred_reporg_new": -1, + "ppcm_m12_nbank_fin_fail_repamt": -1, + "ppcm_m1_p3_overamt": -1, + "ppcm_m3_qyorg": 3, + "ppcm_m12_cred_succ_repamt": -1, + "ppcm_m1_m12_bank_loannum_ratio": -1, + "ppcm_m3_loanorg_new": -1, + "ppcm_m1_nbank_fin_qynum": -1, + "ppcm_m12_nbank_fin_loanorg": -1, + "ppcm_m1_qyorg_new": 2, + "ppcm_m12_fail_repamt_max": -1, + "ppcm_m24_nbank_fin_qynum": 1, + "ppcm_m3_p3_overamt": -1, + "ppcm_m6_bank_succ_repamt": -1, + "ppcm_d7_nbank_other_neh_repnum_ratio": -1, + "ppcm_m3_overnum": -1, + "ppcm_m1_loanorg_new": -1, + "ppcm_m24_succ_repnum": -1, + "ppcm_m1_fail_reporg_new": -1, + "ppcm_m12_loanday": -1, + "ppcm_m12_cred_reporg_new": -1, + "ppcm_m3_nbank_other_loanamt": -1, + "ppcm_m6_bank_qynum": -1, + "ppcm_d7_bank_qynum": -1, + "ppcm_m6_bank_neh_repnum_ratio": -1, + "ppcm_d7_cred_reporg": -1, + "ppcm_m6_cred_succ_reporg": -1, + "ppcm_m24_qynum": 13, + "ppcm_m6_fail_neh_repnum_ratio": -1, + "ppcm_m12_loannum": -1, + "ppcm_m1_allnum": 2, + "ppcm_m24_nbank_fin_neh_repnum_ratio": -1, + "ppcm_m6_repday": -1, + "ppcm_m6_nbank_fin_succ_reporg": -1, + "ppcm_d7_cred_succ_reporg": -1, + "ppcm_m3_bank_succ_repamt": -1, + "ppcm_m12_nbank_other_fail_repnum": -1, + "ppcm_m1_qyorg": 2, + "ppcm_m24_repday": -1, + "ppcm_d7_nbank_other_fail_repnum": -1, + "ppcm_m6_qyorg_new": 3, + "ppcm_m3_nbank_other_fail_repnum": -1, + "ppcm_m24_fail_reporg": -1, + "ppcm_m12_bank_neh_repnum_ratio": -1, + "ppcm_m1_cred_fail_repnum": -1, + "ppcm_d7_cred_fail_repnum": -1, + "ppcm_m24_cred_succ_reporg": -1, + "ppcm_m1_m24_nbank_other_succ_repnum_ratio": -1, + "ppcm_m3_m12_nbank_other_loannum_ratio": -1, + "ppcm_m6_m24_succ_repnum_ratio": -1, + "ppcm_m3_loanday": -1, + "ppcm_d7_nbank_fin_fail_repnum": -1, + "ppcm_m1_cred_reporg_new": -1, + "ppcm_m24_bank_fail_repamt": -1, + "ppcm_m12_p3_overamt": -1, + "ppcm_m12_succ_repnum": -1, + "ppcm_d7_succ_repnum": -1, + "ppcm_m24_succ_repamt": -1, + "ppcm_d7_bank_fail_reporg": -1, + "ppcm_latest_qytoday": 1, + "ppcm_m1_nbank_other_loanamt": -1, + "ppcm_recent_cardnum": -1, + "ppcm_m12_bank_loanamt": -1, + "ppcm_m12_bank_fail_reporg": -1, + "ppcm_m1_bank_succ_repamt": -1, + "ppcm_m24_p4_overamt": -1, + "ppcm_m3_succ_repnum": -1, + "ppcm_m3_m24_nbank_fin_qynum_ratio": 1, + "ppcm_d7_qyorg": 2, + "ppcm_m3_qy_rep_ratio": -1, + "ppcm_m12_cred_fail_repnum": -1, + "ppcm_m6_succ_repnum": -1, + "ppcm_m1_nbank_other_succ_repnum": -1, + "ppcm_m1_bank_neh_repnum_ratio": -1, + "ppcm_m12_nbank_other_fail_repamt": -1, + "ppcm_m1_p1_overamt": -1, + "ppcm_m3_overorg": -1, + "ppcm_m3_cred_fail_reporg_new": -1, + "ppcm_m6_m24_bank_fail_repnum_ratio": -1, + "ppcm_m12_qy_rep_ratio": -1, + "ppcm_m24_nbank_fin_succ_repamt": -1, + "ppcm_m1_bank_loanorg": -1, + "ppcm_m3_cred_fail_reporg": -1, + "ppcm_m24_nbank_other_succ_repamt": -1, + "ppcm_m6_qynum_avg": 0.5, + "ppcm_m24_nbank_fin_fail_reporg": -1, + "ppcm_m6_nbank_fin_loannum": -1, + "ppcm_m3_nbank_fin_loanamt": -1, + "ppcm_m24_bank_loannum": -1, + "ppcm_m1_fail_reporg": -1, + "ppcm_m6_nbank_fin_succ_repnum": -1, + "ppcm_m3_m24_nbank_fin_succ_repnum_ratio": -1, + "ppcm_m24_nbank_other_fail_reporg": -1, + "ppcm_m1_m6_qynum_ratio": 0.67, + "ppcm_m1_succ_repamt": -1, + "ppcm_m24_fail_repnum": -1, + "ppcm_m3_nbank_other_fail_reporg": -1, + "ppcm_m12_loanorg_new": -1, + "ppcm_m1_m24_nbank_fin_fail_repnum_ratio": -1, + "ppcm_m24_overnum": -1, + "ppcm_d7_nbank_other_succ_repamt": -1, + "ppcm_m12_reporg": -1, + "ppcm_m1_reporg": -1, + "ppcm_d7_overamt": -1, + "ppcm_m1_succ_reporg_new": -1, + "ppcm_m1_cred_succ_reporg": -1, + "ppcm_m3_nbank_other_succ_repamt": -1, + "ppcm_d7_nbank_fin_succ_repamt": -1, + "ppcm_m3_loannum": -1, + "ppcm_m1_bank_fail_reporg": -1, + "ppcm_d7_m12_nbank_fin_qynum_ratio": 0, + "ppcm_m6_nbank_other_loanorg": -1, + "ppcm_m24_cred_fail_reporg": -1, + "ppcm_m6_loanamt": -1, + "ppcm_m1_nbank_fin_fail_repamt": -1, + "ppcm_d7_bank_loannum": -1, + "ppcm_m12_nbank_other_loanorg": -1, + "ppcm_m6_nbank_other_succ_repamt": -1, + "ppcm_m3_p4_overamt": -1, + "ppcm_d7_qynum": 2, + "ppcm_m24_nbank_other_fail_repnum": -1, + "ppcm_m3_bank_fail_repamt": -1, + "ppcm_d7_m12_qynum_ratio": 0.5, + "ppcm_d7_nbank_other_fail_reporg": -1, + "ppcm_m6_bank_loanamt": -1, + "ppcm_m3_nbank_fin_fail_repnum": -1, + "ppcm_m1_bank_loannum": -1, + "ppcm_d7_fail_repnum": -1, + "ppcm_m3_m24_bank_fail_repnum_ratio": -1, + "ppcm_m3_cred_fail_repnum": -1, + "ppcm_m12_nbank_fin_loanamt": -1, + "ppcm_m12_bank_qynum": -1, + "ppcm_m3_cred_succ_repamt": -1, + "ppcm_m6_cred_fail_reporg": -1, + "ppcm_m12_nbank_other_qynum": 3, + "ppcm_m6_m24_bank_succ_repnum_ratio": -1, + "ppcm_m3_nbank_other_neh_repnum_ratio": -1, + "ppcm_d7_nbank_other_loanorg": -1, + "ppcm_m24_nbank_fin_fail_repnum": -1, + "ppcm_m3_fail_repnum_avg": -1, + "ppcm_m1_m6_nbank_other_qynum_ratio": 1, + "ppcm_m12_repday": -1, + "ppcm_d7_succ_reporg": -1, + "ppcm_m3_cred_succ_reporg_new": -1, + "ppcm_m6_fail_repnum_avg": -1, + "ppcm_m1_m12_nbank_fin_loannum_ratio": -1, + "ppcm_m3_cred_reporg": -1, + "ppcm_m6_loanorg_new": -1, + "ppcm_m6_cred_fail_reporg_new": -1, + "ppcm_m24_reporg": -1, + "ppcm_m3_nbank_other_qynum": 2, + "ppcm_m3_m24_nbank_fin_fail_repnum_ratio": -1, + "ppcm_d7_cred_fail_reporg": -1, + "ppcm_d7_nbank_fin_loanamt": -1, + "ppcm_m6_fail_repamt": -1, + "ppcm_d7_loanorg": -1, + "ppcm_m1_loanamt": -1, + "ppcm_m12_p4_overamt": -1, + "ppcm_d7_cred_succ_repamt": -1, + "ppcm_m24_nbank_other_loanamt": -1, + "ppcm_m3_loanorg": -1, + "ppcm_m3_m12_nbank_fin_loannum_ratio": -1, + "ppcm_m1_bank_fail_repnum": -1, + "ppcm_m6_bank_fail_repamt": -1, + "ppcm_m12_cred_succ_reporg": -1, + "ppcm_m6_p3_overamt": -1, + "ppcm_m12_qyday": 4, + "ppcm_m12_bank_succ_repamt": -1, + "ppcm_m6_nbank_fin_loanorg": -1, + "ppcm_d7_nbank_other_qynum": 2, + "ppcm_m12_qynum": 4, + "ppcm_m24_p3_overamt": -1, + "ppcm_m12_allnum": 4, + "ppcm_m6_nbank_other_fail_reporg": -1, + "ppcm_m3_qyorg_new": 3, + "ppcm_m24_nbank_other_qyorg": 5, + "ppcm_d7_allnum": 2, + "ppcm_m1_m24_nbank_fin_succ_repnum_ratio": -1, + "ppcm_m12_qyorg_new": 4, + "ppcm_d7_nbank_other_succ_reporg": -1, + "ppcm_m6_cred_succ_repamt": -1, + "ppcm_m24_loanday": -1, + "ppcm_m1_succ_repamt_max": -1, + "ppcm_m24_succ_repamt_max": -1, + "ppcm_d7_nbank_fin_qyorg": -1, + "ppcm_m1_nbank_fin_succ_repnum": -1, + "ppcm_d7_bank_fail_repamt": -1, + "ppcm_m3_overamt": -1, + "ppcm_m24_nbank_other_loannum": -1, + "ppcm_m6_p2_overamt": -1, + "ppcm_m24_cred_fail_repnum": -1, + "ppcm_m3_bank_qynum": -1, + "ppcm_m24_bank_qyorg": -1, + "ppcm_m1_bank_qyorg": -1, + "ppcm_d7_nbank_fin_succ_reporg": -1, + "ppcm_m3_m12_qynum_ratio": 0.75, + "ppcm_m3_nbank_other_loanorg": -1, + "ppcm_d7_bank_loanorg": -1, + "ppcm_m3_nbank_fin_loanorg": -1, + "ppcm_m3_repday": -1, + "ppcm_m6_allnum": 3, + "ppcm_m6_bank_succ_reporg": -1, + "ppcm_m12_loanamt": -1, + "ppcm_m1_bank_succ_reporg": -1, + "ppcm_m12_succ_repamt_max": -1, + "ppcm_m12_nbank_fin_succ_repnum": -1, + "ppcm_m3_bank_succ_repnum": -1, + "ppcm_d7_m12_bank_qynum_ratio": -1, + "ppcm_m1_loanamt_max": -1, + "ppcm_m3_loanamt_max": -1, + "ppcm_m3_bank_fail_repnum": -1, + "ppcm_m6_nbank_other_fail_repnum": -1, + "ppcm_m3_m24_succ_repnum_ratio": -1, + "ppcm_m12_cred_fail_reporg": -1, + "ppcm_m1_cred_succ_repamt": -1, + "ppcm_m3_p1_overamt": -1, + "ppcm_m24_nbank_other_fail_repamt": -1, + "ppcm_m12_p2_overamt": -1, + "ppcm_m1_nbank_fin_fail_reporg": -1, + "ppcm_m24_nbank_other_qynum": 12, + "ppcm_m6_bank_loannum": -1, + "ppcm_m24_nbank_other_neh_repnum_ratio": -1, + "ppcm_m3_cred_fail_repamt": -1, + "ppcm_m12_nbank_other_succ_repamt": -1, + "ppcm_m1_overnum": -1, + "ppcm_m3_m24_qynum_ratio": 0.23, + "ppcm_m1_nbank_other_fail_repnum": -1, + "ppcm_m12_loanamt_max": -1, + "ppcm_d7_fail_neh_repnum_ratio": -1, + "ppcm_m24_nbank_fin_fail_repamt": -1, + "ppcm_m3_nbank_fin_succ_repamt": -1, + "ppcm_m3_fail_reporg_new": -1, + "ppcm_m6_fail_reporg_new": -1, + "ppcm_d7_nbank_fin_fail_reporg": -1, + "ppcm_m3_nbank_other_succ_reporg": -1, + "ppcm_m12_nbank_fin_fail_repnum": -1, + "ppcm_m1_p2_overamt": -1, + "ppcm_m1_cred_succ_reporg_new": -1, + "ppcm_m3_m12_bank_loannum_ratio": -1, + "ppcm_m12_overnum": -1, + "ppcm_m12_cred_succ_repnum": -1, + "ppcm_m6_loanamt_max": -1, + "ppcm_m12_bank_fail_repnum": -1, + "ppcm_m1_nbank_fin_loannum": -1, + "ppcm_m6_nbank_fin_fail_repnum": -1, + "ppcm_m12_cred_reporg": -1, + "ppcm_m3_nbank_other_loannum": -1, + "ppcm_m12_fail_neh_repnum_ratio": -1, + "ppcm_d7_overorg": -1, + "ppcm_m6_m24_nbank_other_succ_repnum_ratio": -1, + "ppcm_m12_qyorg": 4, + "ppcm_m6_cred_fail_repamt": -1, + "ppcm_m6_bank_succ_repnum": -1, + "ppcm_m3_cred_succ_reporg": -1, + "ppcm_m3_m12_loannum_ratio": -1, + "ppcm_history_cardnum": -1, + "ppcm_d7_nbank_fin_loanorg": -1, + "ppcm_latest_loantoday": -1, + "ppcm_m6_nbank_other_neh_repnum_ratio": -1, + "ppcm_m24_cred_succ_repnum": -1, + "ppcm_m24_allnum": 13, + "ppcm_m12_nbank_other_loanamt": -1, + "ppcm_m1_m6_nbank_fin_qynum_ratio": 0, + "ppcm_m24_nbank_other_loanorg": -1, + "ppcm_latest_fail_reptoday": -1, + "ppcm_d7_nbank_other_fail_repamt": -1, + "ppcm_m24_p2_overamt": -1, + "ppcm_m6_bank_loanorg": -1, + "ppcm_m1_m24_bank_fail_repnum_ratio": -1, + "ppcm_d7_nbank_fin_neh_repnum_ratio": -1, + "ppcm_m6_cred_succ_reporg_new": -1, + "ppcm_m24_bank_succ_repamt": -1, + "ppcm_m1_m24_bank_succ_repnum_ratio": -1, + "ppcm_m6_qy_rep_ratio": -1, + "ppcm_m3_bank_qyorg": -1, + "ppcm_m24_fail_neh_repnum_ratio": -1, + "ppcm_m6_cred_reporg": -1, + "ppcm_m1_nbank_fin_fail_repnum": -1, + "ppcm_m3_m24_fail_repnum_ratio": -1, + "ppcm_d7_nbank_fin_succ_repnum": -1, + "ppcm_m3_nbank_other_fail_repamt": -1, + "ppcm_m12_bank_qyorg": -1, + "ppcm_m12_nbank_other_qyorg": 3, + "ppcm_m24_bank_neh_repnum_ratio": -1, + "ppcm_d7_nbank_other_loannum": -1, + "ppcm_m24_cred_reporg": -1, + "ppcm_m24_bank_qynum": -1, + "ppcm_m6_nbank_other_loannum": -1, + "ppcm_m3_bank_loanamt": -1, + "ppcm_m3_m24_bank_succ_repnum_ratio": -1, + "ppcm_m12_overorg": -1, + "ppcm_d7_succ_repamt": -1, + "ppcm_d7_fail_repamt_max": -1, + "ppcm_m24_nbank_fin_succ_reporg": -1, + "ppcm_m3_m12_nbank_other_qynum_ratio": 0.67, + "ppcm_m24_nbank_other_succ_reporg": -1, + "ppcm_m1_nbank_fin_loanorg": -1, + "ppcm_d7_loanamt": -1, + "ppcm_m12_nbank_fin_succ_reporg": -1, + "ppcm_m1_fail_repnum": -1, + "ppcm_m1_m6_bank_qynum_ratio": -1, + "ppcm_m24_nbank_fin_loanamt": -1, + "ppcm_d7_nbank_fin_qynum": -1, + "ppcm_m3_bank_fail_reporg": -1, + "ppcm_m3_fail_repnum": -1, + "ppcm_m1_m24_nbank_other_fail_repnum_ratio": -1, + "ppcm_d7_fail_reporg": -1, + "ppcm_d7_bank_succ_repamt": -1, + "ppcm_m6_overamt": -1, + "ppcm_m24_loannum": -1, + "ppcm_m6_bank_fail_reporg": -1, + "ppcm_m6_nbank_fin_loanamt": -1, + "ppcm_m1_nbank_other_fail_reporg": -1, + "ppcm_m24_bank_loanamt": -1, + "ppcm_m3_qynum": 3, + "ppcm_m3_loannum_avg": -1, + "ppcm_m3_p2_overamt": -1, + "ppcm_m3_bank_neh_repnum_ratio": -1, + "ppcm_m6_loannum_avg": -1, + "ppcm_m6_bank_fail_repnum": -1, + "ppcm_m24_qyday": 13, + "ppcm_m12_loanorg": -1, + "ppcm_m1_succ_repnum": -1, + "ppcm_m3_bank_loannum": -1, + "ppcm_latest_succ_reptoday": -1, + "ppcm_d7_overnum": -1, + "ppcm_m6_nbank_fin_fail_reporg": -1, + "ppcm_m24_overamt": -1, + "ppcm_m12_bank_succ_repnum": -1, + "ppcm_m3_nbank_fin_neh_repnum_ratio": -1, + "ppcm_m3_loanamt": -1, + "ppcm_m24_fail_repamt_max": -1, + "ppcm_m6_loannum": -1, + "ppcm_d7_bank_succ_repnum": -1, + "ppcm_m1_loanorg": -1, + "ppcm_m6_m24_nbank_fin_succ_repnum_ratio": -1, + "ppcm_m24_loanorg": -1, + "ppcm_d7_cred_fail_repamt": -1, + "ppcm_m1_cred_fail_repamt": -1, + "ppcm_m6_loanday": -1, + "ppcm_m1_fail_repamt_max": -1, + "ppcm_m12_succ_repamt": -1, + "ppcm_d7_nbank_fin_fail_repamt": -1, + "ppcm_m3_fail_reporg": -1, + "ppcm_m24_bank_fail_repnum": -1, + "ppcm_m6_p1_overamt": -1, + "ppcm_m1_nbank_other_loannum": -1, + "ppcm_m6_fail_reporg": -1, + "ppcm_m3_reporg_new": -1, + "ppcm_m3_m24_nbank_other_succ_repnum_ratio": -1, + "ppcm_m3_nbank_fin_fail_repamt": -1, + "ppcm_m12_cred_fail_repamt": -1, + "ppcm_m6_nbank_fin_qynum": 1, + "ppcm_m1_bank_succ_repnum": -1, + "ppcm_m3_nbank_fin_qynum": 1, + "ppcm_m12_bank_loannum": -1, + "ppcm_m3_allnum": 3, + "ppcm_m3_cred_succ_repnum": -1, + "ppcm_d7_bank_neh_repnum_ratio": -1, + "ppcm_m3_succ_repamt": -1, + "ppcm_m12_cred_succ_reporg_new": -1, + "ppcm_m6_succ_repamt": -1, + "ppcm_m6_nbank_other_qynum": 2, + "ppcm_m24_p1_overamt": -1, + "ppcm_m24_nbank_fin_succ_repnum": -1, + "ppcm_m12_fail_reporg": -1, + "ppcm_m24_nbank_other_succ_repnum": -1, + "ppcm_m12_nbank_other_succ_reporg": -1, + "ppcm_m3_m24_nbank_other_fail_repnum_ratio": -1, + "ppcm_m6_bank_qyorg": -1, + "ppcm_m1_loannum": -1, + "ppcm_m3_nbank_fin_loannum": -1, + "ppcm_d7_cred_succ_repnum": -1, + "ppcm_m6_nbank_fin_succ_repamt": -1, + "ppcm_m1_fail_neh_repnum_ratio": -1, + "ppcm_m1_cred_reporg": -1, + "ppcm_m24_nbank_fin_loanorg": -1, + "ppcm_m1_bank_fail_repamt": -1, + "ppcm_m12_p1_overamt": -1, + "ppcm_m24_loanamt_max": -1, + "ppcm_behav_score": 595, + "ppcm_m24_fail_repamt": -1, + "ppcm_d7_bank_succ_reporg": -1, + "ppcm_m1_m24_fail_repnum_ratio": -1, + "ppcm_history_cellnum": -1, + "ppcm_m6_loanorg": -1, + "ppcm_m12_nbank_other_neh_repnum_ratio": -1, + "ppcm_m12_fail_repnum": -1, + "ppcm_latest_cred_succ_reptoday": -1, + "ppcm_m1_m12_loannum_ratio": -1, + "ppcm_d7_nbank_other_succ_repnum": -1, + "ppcm_m3_m12_bank_qynum_ratio": -1, + "ppcm_m1_nbank_fin_succ_reporg": -1, + "ppcm_m3_succ_repamt_max": -1, + "ppcm_m1_qyday": 2, + "ppcm_m6_succ_repamt_max": -1, + "ppcm_m1_m24_succ_repnum_ratio": -1, + "ppcm_m1_qy_rep_ratio": -1, + "ppcm_latest_cred_fail_reptoday": -1, + "ppcm_m1_nbank_fin_loanamt": -1, + "ppcm_m12_overamt": -1, + "ppcm_m1_m12_nbank_other_loannum_ratio": -1, + "ppcm_m1_overorg": -1, + "ppcm_m3_bank_loanorg": -1, + "ppcm_m6_qyorg": 3, + "ppcm_m6_nbank_other_succ_repnum": -1, + "ppcm_m6_overorg": -1, + "ppcm_m12_nbank_fin_qyorg": 1, + "ppcm_m6_m24_nbank_other_fail_repnum_ratio": -1, + "ppcm_m1_bank_qynum": -1, + "ppcm_d7_bank_loanamt": -1, + "ppcm_m1_nbank_fin_neh_repnum_ratio": -1, + "ppcm_latest_rep_status": -1, + "ppcm_m3_nbank_other_succ_repnum": -1, + "ppcm_m12_nbank_fin_fail_reporg": -1, + "ppcm_m12_nbank_fin_loannum": -1, + "ppcm_recent_cellnum": -1, + "ppcm_m1_bank_loanamt": -1, + "ppcm_m3_bank_succ_reporg": -1, + "ppcm_m6_reporg_new": -1, + "ppcm_m6_nbank_other_qyorg": 2, + "ppcm_d7_fail_repamt": -1, + "ppcm_m24_bank_succ_reporg": -1, + "ppcm_m3_nbank_fin_qyorg": 1, + "ppcm_m3_reporg": -1, + "ppcm_m3_qyday": 3, + "ppcm_m1_p4_overamt": -1, + "ppcm_m3_m12_nbank_fin_qynum_ratio": 1, + "ppcm_m3_succ_reporg_new": -1, + "ppcm_m6_succ_reporg_new": -1, + "ppcm_m12_cred_fail_reporg_new": -1, + "ppcm_m1_loanday": -1, + "ppcm_d7_nbank_fin_loannum": -1, + "ppcm_m1_nbank_other_succ_repamt": -1, + "ppcm_m12_nbank_fin_succ_repamt": -1, + "ppcm_m1_nbank_other_loanorg": -1, + "ppcm_m1_cred_fail_reporg_new": -1, + "ppcm_m12_succ_reporg_new": -1, + "ppcm_m6_fail_repnum": -1, + "ppcm_m6_nbank_fin_qyorg": 1 + }, + "message": "success", + "success": true + } + } + }, { "feature": { "featureName": "借贷意向验证", diff --git a/src/components/BaseReport.vue b/src/components/BaseReport.vue index 73063e6..cc60093 100644 --- a/src/components/BaseReport.vue +++ b/src/components/BaseReport.vue @@ -292,6 +292,13 @@ const featureMap = { remark: '借贷意向验证提供全面的借贷申请行为分析,包括申请次数、申请总次数(银行+非银)和申请机构总数(银行+非银)等多维度数据。通过不同时间段的统计分析,全面展示申请人的借贷申请行为。' }, + // 支付行为指数 + JRZQ3C9R: { + name: "支付行为指数", + component: defineAsyncComponent(() => import("@/ui/JRZQ3C9R/index.vue")), + remark: '支付行为指数基于近两年的查验记录、还款成功与失败表现以及余额不足情况,对用户支付与还款习惯进行量化评分,用于评估其支付稳定性与违约风险。' + }, + // 手机携号转网 YYSY7D3E: { name: "手机携号转网", @@ -429,6 +436,7 @@ const featureRiskLevels = { 'JRZQ8A2D': 9, // 特殊名单验证 'JRZQ7F1A': 8, // 全景雷达 'JRZQ6F2A': 7, // 借贷意向验证A + 'JRZQ3C9R': 7, // 支付行为指数 'YYSY7D3E': 5, // 手机携号转网 'YYSY8B1C': 5, // 手机在网时长 diff --git a/src/components/Remark.vue b/src/components/Remark.vue index dcccf06..0e68295 100644 --- a/src/components/Remark.vue +++ b/src/components/Remark.vue @@ -1,11 +1,15 @@ - - 温馨提示! + + {{ title }} - + + + {{ content }} + @@ -17,6 +21,14 @@ const props = defineProps({ content: { type: String, required: true + }, + title: { + type: String, + default: '温馨提示!' + }, + defaultExpanded: { + type: Boolean, + default: false } }); @@ -81,4 +93,3 @@ const isExpanded = ref(false); color: #999999; } - diff --git a/src/ui/JRZQ3C9R/components/BasicInfoSection.vue b/src/ui/JRZQ3C9R/components/BasicInfoSection.vue new file mode 100644 index 0000000..ba46d40 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/BasicInfoSection.vue @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + 基础信息 + + + 查得标识 + {{ flagText }} + + + 库有标识 + {{ flagDbText }} + + + 历史银行卡数 + {{ normalizeValue(data.ppcm_history_cardnum) + }} + + + 当前活跃银行卡数 + {{ normalizeValue(data.ppcm_recent_cardnum) + }} + + + 历史手机号数 + {{ normalizeValue(data.ppcm_history_cellnum) + }} + + + 当前活跃手机号数 + {{ normalizeValue(data.ppcm_recent_cellnum) + }} + + + + + + + + + + + + 指标 + 数值 + + + + + + + {{ row.label }} + + {{ formatRatio(row.value) }} + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue b/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue new file mode 100644 index 0000000..61493ca --- /dev/null +++ b/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue b/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue new file mode 100644 index 0000000..228128b --- /dev/null +++ b/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + 周期 + + 银行 + + 消费金融 + + 其他机构 + + 总次数 + + 机构数 + + + + + + + {{ row.label }} + + {{ row.bank }} + + {{ row.fin }} + + {{ row.other }} + + {{ row.total }} + {{ row.orgTotal }} + + + + + + + + + + + + 周期 + + 综合借款等级 + + + + + + + {{ row.label }} + {{ row.amt + }} + + + + + + + + + + + + 周期 + + 逾期次数 + + + 逾期机构数 + 逾期等级 + + + + + + + {{ row.label }} + + {{ row.num }} + + {{ row.org }} + {{ + row.level }} + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue b/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue new file mode 100644 index 0000000..431b818 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + 周期 + + 银行 + + 消费金融 + + 其他机构 + + 总次数 + + + + + + + {{ row.label }} + + {{ row.bank }} + + {{ row.fin }} + + {{ row.other }} + {{ + row.total }} + + + + + + + + + + + + 周期 + + 银行 + + 消费金融 + + 其他机构 + + 总机构数 + + + + + + + {{ row.label }} + + {{ row.bank }} + + {{ row.fin }} + + {{ row.other }} + {{ + row.total }} + + + + + + + + + + + + 周期 + + 查验天数 + + + + + + + {{ row.label }} + {{ row.days + }} + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/QueryTrendSection.vue b/src/ui/JRZQ3C9R/components/QueryTrendSection.vue new file mode 100644 index 0000000..a7a5221 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/QueryTrendSection.vue @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue b/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue new file mode 100644 index 0000000..d357e78 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue b/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue new file mode 100644 index 0000000..4422ec5 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + 周期 + 机构数 + + + + + + {{ row.label }} + {{ row.value }} + + + + + + + + + + + + 周期 + 机构数 + + + + + + {{ row.label }} + {{ row.value }} + + + + + + + + + + + + 周期 + 成功等级 + 失败等级 + + + + + + {{ row.label }} + {{ row.succ }} + {{ row.fail }} + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue b/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue new file mode 100644 index 0000000..b5a4d2b --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayTrendSection.vue b/src/ui/JRZQ3C9R/components/RepayTrendSection.vue new file mode 100644 index 0000000..14ff8fa --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayTrendSection.vue @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/ScoreSection.vue b/src/ui/JRZQ3C9R/components/ScoreSection.vue new file mode 100644 index 0000000..971de32 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/ScoreSection.vue @@ -0,0 +1,71 @@ + + + + + 支付行为评分 + + + {{ scoreDisplay }} + + 分 + + {{ level }} + + + + + 分数基于近两年查验及还款行为综合评估,分数越高代表支付行为越稳定、违约风险越低。 + + + + 最近一次查验距今天数: + {{ latestQueryText }} + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/index.vue b/src/ui/JRZQ3C9R/index.vue new file mode 100644 index 0000000..5ed41c7 --- /dev/null +++ b/src/ui/JRZQ3C9R/index.vue @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/JRZQ3C9R/utils/dataParser.js b/src/ui/JRZQ3C9R/utils/dataParser.js new file mode 100644 index 0000000..63c5dc9 --- /dev/null +++ b/src/ui/JRZQ3C9R/utils/dataParser.js @@ -0,0 +1,160 @@ +/** + * 支付行为指数(JRZQ3C9R)数据解析工具 + */ + +/** + * 将 -1 / 空 / null 统一视为 0,其他数值转为 Number + */ +export function normalizeValue(value) { + if (value === undefined || value === null || value === "" || value === -1) { + return 0; + } + const num = Number(value); + return Number.isNaN(num) ? 0 : num; +} + +/** + * 从原始 data 中提取真正的指标对象 + * 兼容多种包裹结构: + * - { code, data: {...} } + * - { data: { code, data: {...} } } + */ +export function extractPpcmData(raw) { + if (!raw) return {}; + + // example.json 结构:data.data.data + if (raw.data && raw.data.data) { + return raw.data.data || {}; + } + + // 已经是 { code, data } 这一层 + if (raw.data && !raw.code) { + return raw.data || {}; + } + + return raw || {}; +} + +/** + * 获取支付行为评分(原始 300-900 分) + */ +export function getBehavScore(ppcm) { + const score = normalizeValue(ppcm.ppcm_behav_score); + return score; +} + +/** + * 将 300-900 分映射到 0-100 分(用于统一风险评分体系) + */ +export function mapScoreTo100(score) { + if (!score || score <= 0) { + return 100; + } + // 限制在 [300,900] + const clamped = Math.min(900, Math.max(300, score)); + // 300 -> 0, 900 -> 100 + const mapped = ((clamped - 300) / 600) * 100; + return Math.round(mapped); +} + +/** + * 支付行为评分等级标签 + */ +export function getBehavLevel(score) { + if (!score || score <= 0) return "暂无评分"; + if (score >= 800) return "优秀"; + if (score >= 750) return "良好"; + if (score >= 700) return "中等"; + if (score >= 650) return "一般"; + return "偏低"; +} + +/** + * 通用时间段 + */ +export const PERIODS = [ + { key: "d7", label: "近7天" }, + { key: "m1", label: "近1个月" }, + { key: "m3", label: "近3个月" }, + { key: "m6", label: "近6个月" }, + { key: "m12", label: "近1年" }, + { key: "m24", label: "近2年" }, +]; + +/** + * 获取查验次数统计(按时间段) + * ppcm_{period}_bank_qynum / _nbank_fin_qynum / _nbank_other_qynum / _qynum + */ +export function getQueryCountsByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = { + bank: normalizeValue(ppcm[`${prefix}_bank_qynum`]), + nbankFin: normalizeValue(ppcm[`${prefix}_nbank_fin_qynum`]), + nbankOther: normalizeValue(ppcm[`${prefix}_nbank_other_qynum`]), + total: normalizeValue(ppcm[`${prefix}_qynum`]), + }; + }); + + return result; +} + +/** + * 获取还款成功 / 失败次数统计(按时间段) + * success:ppcm_{period}_succ_repnum + * fail:ppcm_{period}_fail_repnum + */ +export function getRepayCountsByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = { + success: normalizeValue(ppcm[`${prefix}_succ_repnum`]), + fail: normalizeValue(ppcm[`${prefix}_fail_repnum`]), + }; + }); + + return result; +} + +/** + * 获取余额不足失败占比(按时间段) + * ppcm_{period}_fail_neh_repnum_ratio + */ +export function getInsufficientRatioByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = normalizeValue(ppcm[`${prefix}_fail_neh_repnum_ratio`]); + }); + + return result; +} + +/** + * 解析最近一次查验距今天数区间编码 + * ppcm_latest_qytoday: 1-10 档位 + */ +export function getLatestQueryBucket(ppcm) { + const code = normalizeValue(ppcm.ppcm_latest_qytoday); + if (!code) return "暂无查验记录"; + + const mapping = { + 1: "0-7天", + 2: "7-15天", + 3: "15-30天", + 4: "30-60天", + 5: "60-90天", + 6: "90-120天", + 7: "120-150天", + 8: "150-180天", + 9: "180-360天", + 10: "360天以上", + }; + + return mapping[code] || "未知区间"; +} diff --git a/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue b/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue index 1bb0829..5577281 100644 --- a/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue +++ b/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue @@ -52,6 +52,11 @@ const props = defineProps({ type: Object, required: true, default: () => ({}) + }, + // 维度:id(身份证) / cell(手机号) + dimension: { + type: String, + default: 'id' } }) @@ -61,7 +66,7 @@ const labels = periodKeys.map(key => PERIOD_MAP[key].label) // 总申请次数图表配置 const chartOption = computed(() => { const data = periodKeys.map(key => { - const counts = getApplicationCounts(props.data, key) + const counts = getApplicationCounts(props.data, key, props.dimension) return counts.total }) @@ -137,11 +142,11 @@ const chartOption = computed(() => { // 特殊时段(周末 / 夜间)图表配置 const specialChartOption = computed(() => { const weekendData = periodKeys.map(key => { - const s = getSpecialPeriodCounts(props.data, key) + const s = getSpecialPeriodCounts(props.data, key, props.dimension) return s.weekend || 0 }) const nightData = periodKeys.map(key => { - const s = getSpecialPeriodCounts(props.data, key) + const s = getSpecialPeriodCounts(props.data, key, props.dimension) return s.night || 0 }) diff --git a/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue b/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue index e1411ed..4b7fe48 100644 --- a/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue +++ b/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue @@ -1,9 +1,6 @@ - - 申请总次数 (银行+非银) {{ totalCount }}次 - @@ -13,10 +10,9 @@ - - + - + @@ -28,9 +24,8 @@ - -{ -"cells": [], -"metadata": { -"language_info": { -"name": "python" -} -}, -"nbformat": 4, -"nbformat_minor": 2 -} \ No newline at end of file + \ No newline at end of file diff --git a/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue b/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue index 8226fb0..8e0fbf4 100644 --- a/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue +++ b/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue @@ -48,15 +48,38 @@ const props = defineProps({ required: true, default: () => ({}), }, + // 维度:id(身份证) / cell(手机号) + dimension: { + type: String, + default: 'id', + }, }) -const bankCons = computed(() => getValue(props.data?.als_lst_id_bank_consnum)) -const bankDays = computed(() => getValue(props.data?.als_lst_id_bank_csinteday)) -const nbankCons = computed(() => getValue(props.data?.als_lst_id_nbank_consnum)) -const nbankDays = computed(() => getValue(props.data?.als_lst_id_nbank_csinteday)) +const bankCons = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_bank_consnum`]) +}) +const bankDays = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_bank_csinteday`]) +}) +const nbankCons = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_nbank_consnum`]) +}) +const nbankDays = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_nbank_csinteday`]) +}) -const bankGap = computed(() => getValue(props.data?.als_lst_id_bank_inteday)) -const nbankGap = computed(() => getValue(props.data?.als_lst_id_nbank_inteday)) +const bankGap = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_bank_inteday`]) +}) +const nbankGap = computed(() => { + const dimKey = props.dimension === 'cell' ? 'cell' : 'id' + return getValue(props.data?.[`als_lst_${dimKey}_nbank_inteday`]) +}) const hasAnyData = computed(() => { return ( diff --git a/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue b/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue index 3f38262..03c51c5 100644 --- a/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue +++ b/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue @@ -1,29 +1,56 @@ - + 借贷意向统计概览 + + + + 身份证匹配 + + + 手机号匹配 + + - + {{ item.value }} - {{ item.unit }} + {{ item.unit }} - + {{ item.label }} + + + + + + + {{ risk.label }} + {{ risk.value }} + + + + + + + - - diff --git a/src/ui/JRZQ6F2A/index.vue b/src/ui/JRZQ6F2A/index.vue index a145a32..e0ae3b3 100644 --- a/src/ui/JRZQ6F2A/index.vue +++ b/src/ui/JRZQ6F2A/index.vue @@ -1,27 +1,27 @@ - - + + - + - + - + - + - +