f
This commit is contained in:
@@ -908,11 +908,24 @@ type QCXG9P1CReq struct {
|
||||
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||
}
|
||||
|
||||
type DWBG3BF9Req struct {
|
||||
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||
Name string `json:"name" validate:"required,min=1,validName"`
|
||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||
}
|
||||
|
||||
type DWBG9FB3Req struct {
|
||||
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||
Name string `json:"name" validate:"required,min=1,validName"`
|
||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||
}
|
||||
|
||||
type DWBG9FB2Req struct {
|
||||
IDCard string `json:"id_card" validate:"required,validIDCard"`
|
||||
Name string `json:"name" validate:"required,min=1,validName"`
|
||||
MobileNo string `json:"mobile_no" validate:"required,min=11,max=11,validMobileNo"`
|
||||
}
|
||||
|
||||
type QCXG8A3DReq struct {
|
||||
PlateNo string `json:"plate_no" validate:"required"`
|
||||
PlateType string `json:"plate_type" validate:"omitempty,oneof=01 02"`
|
||||
|
||||
@@ -407,7 +407,9 @@ func registerAllProcessors(combService *comb.CombService) {
|
||||
"DWBG8B4D": dwbg.ProcessDWBG8B4DRequest,
|
||||
"DWBG7F3A": dwbg.ProcessDWBG7F3ARequest,
|
||||
"DWBG5SAM": dwbg.ProcessDWBG5SAMRequest,
|
||||
"DWBG9FB3": dwbg.ProcessDWBG9FB3Request, // 个人风险档案
|
||||
"DWBG3BF9": dwbg.ProcessDWBG3BF9Request, // 个人风险档案max
|
||||
"DWBG9FB3": dwbg.ProcessDWBG9FB3Request, // 个人风险档案1
|
||||
"DWBG9FB2": dwbg.ProcessDWBG9FB2Request, // 个人风险档案2
|
||||
|
||||
// FLXG系列处理器 - 风险管控 (包含原FXHY功能)
|
||||
"FLXG8B4D": flxg.ProcessFLXG8B4DRequest,
|
||||
|
||||
@@ -299,7 +299,9 @@ func (s *FormConfigServiceImpl) getDTOStruct(ctx context.Context, apiCode string
|
||||
"IVYZVJJ6": &dto.IVYZVJJ6Req{}, //收入等级tax_income_level_v8
|
||||
"YYSYTJC4": &dto.YYSYTJC4Req{}, //运营商近三个月欠费次数脉
|
||||
"YYSYP72D": &dto.YYSYP72DReq{}, //运营商近三个月欠费次数脉
|
||||
"DWBG9FB3": &dto.DWBG9FB3Req{}, // 个人风险档案
|
||||
"DWBG3BF9": &dto.DWBG3BF9Req{}, // 个人风险档案
|
||||
"DWBG9FB3": &dto.DWBG9FB3Req{}, // 个人风险档案1
|
||||
"DWBG9FB2": &dto.DWBG9FB2Req{}, // 个人风险档案2
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,876 +0,0 @@
|
||||
{
|
||||
"behavior": {
|
||||
"result": {
|
||||
"black_list": "0",
|
||||
"black_tag04": "0",
|
||||
"black_tag05": "0",
|
||||
"black_tag06": "0",
|
||||
"black_tag07": "0",
|
||||
"black_tag08": "0",
|
||||
"black_tag09": "0",
|
||||
"black_tag10": "0",
|
||||
"black_tag11": "0",
|
||||
"black_tag12": "0"
|
||||
}
|
||||
},
|
||||
"complaint": {
|
||||
"result": {
|
||||
"dnc": 0,
|
||||
"finance_times": {
|
||||
"day_1": 0,
|
||||
"day_14": 0,
|
||||
"day_7": 0
|
||||
},
|
||||
"is_call": true,
|
||||
"is_gp": false,
|
||||
"is_lh": false,
|
||||
"other_times": {
|
||||
"day_1": 0,
|
||||
"day_14": 8,
|
||||
"day_7": 0
|
||||
},
|
||||
"score": 11
|
||||
}
|
||||
},
|
||||
"duration": {
|
||||
"channel": "cmcc",
|
||||
"order_no": "101496411109944170",
|
||||
"time": "[24,-1)"
|
||||
},
|
||||
"fraud": null,
|
||||
"identity": {
|
||||
"address": "广西壮族自治区玉林地区博白县",
|
||||
"birthday": "19790713",
|
||||
"desc": "一致",
|
||||
"order_no": "fsxtvadtpcwky2qbkl",
|
||||
"result": 0,
|
||||
"sex": "男"
|
||||
},
|
||||
"intent": {
|
||||
"Rule_final_decision": "Review",
|
||||
"Rule_final_weight": "40",
|
||||
"Rule_name_QJF040": "在非银机构多次申请-中度",
|
||||
"Rule_weight_QJF040": "40",
|
||||
"als_d15_cell_caoff_allnum": "2",
|
||||
"als_d15_cell_caoff_orgnum": "1",
|
||||
"als_d15_cell_coon_allnum": "3",
|
||||
"als_d15_cell_coon_orgnum": "3",
|
||||
"als_d15_cell_nbank_allnum": "4",
|
||||
"als_d15_cell_nbank_ca_allnum": "2",
|
||||
"als_d15_cell_nbank_ca_orgnum": "1",
|
||||
"als_d15_cell_nbank_else_allnum": "2",
|
||||
"als_d15_cell_nbank_else_orgnum": "2",
|
||||
"als_d15_cell_nbank_finlea_allnum": "2",
|
||||
"als_d15_cell_nbank_finlea_orgnum": "1",
|
||||
"als_d15_cell_nbank_night_allnum": "0",
|
||||
"als_d15_cell_nbank_night_orgnum": "0",
|
||||
"als_d15_cell_nbank_orgnum": "3",
|
||||
"als_d15_cell_nbank_oth_allnum": "2",
|
||||
"als_d15_cell_nbank_oth_orgnum": "2",
|
||||
"als_d15_cell_nbank_selfnum": "2",
|
||||
"als_d15_cell_nbank_week_allnum": "0",
|
||||
"als_d15_cell_nbank_week_orgnum": "0",
|
||||
"als_d15_id_caoff_allnum": "2",
|
||||
"als_d15_id_caoff_orgnum": "1",
|
||||
"als_d15_id_coon_allnum": "3",
|
||||
"als_d15_id_coon_orgnum": "3",
|
||||
"als_d15_id_nbank_allnum": "4",
|
||||
"als_d15_id_nbank_ca_allnum": "2",
|
||||
"als_d15_id_nbank_ca_orgnum": "1",
|
||||
"als_d15_id_nbank_else_allnum": "2",
|
||||
"als_d15_id_nbank_else_orgnum": "2",
|
||||
"als_d15_id_nbank_finlea_allnum": "2",
|
||||
"als_d15_id_nbank_finlea_orgnum": "1",
|
||||
"als_d15_id_nbank_night_allnum": "0",
|
||||
"als_d15_id_nbank_night_orgnum": "0",
|
||||
"als_d15_id_nbank_orgnum": "3",
|
||||
"als_d15_id_nbank_oth_allnum": "2",
|
||||
"als_d15_id_nbank_oth_orgnum": "2",
|
||||
"als_d15_id_nbank_selfnum": "2",
|
||||
"als_d15_id_nbank_week_allnum": "0",
|
||||
"als_d15_id_nbank_week_orgnum": "0",
|
||||
"als_d7_cell_caoff_allnum": "1",
|
||||
"als_d7_cell_caoff_orgnum": "1",
|
||||
"als_d7_cell_coon_allnum": "2",
|
||||
"als_d7_cell_coon_orgnum": "2",
|
||||
"als_d7_cell_nbank_allnum": "3",
|
||||
"als_d7_cell_nbank_ca_allnum": "1",
|
||||
"als_d7_cell_nbank_ca_orgnum": "1",
|
||||
"als_d7_cell_nbank_else_allnum": "2",
|
||||
"als_d7_cell_nbank_else_orgnum": "2",
|
||||
"als_d7_cell_nbank_finlea_allnum": "1",
|
||||
"als_d7_cell_nbank_finlea_orgnum": "1",
|
||||
"als_d7_cell_nbank_night_allnum": "0",
|
||||
"als_d7_cell_nbank_night_orgnum": "0",
|
||||
"als_d7_cell_nbank_orgnum": "3",
|
||||
"als_d7_cell_nbank_oth_allnum": "2",
|
||||
"als_d7_cell_nbank_oth_orgnum": "2",
|
||||
"als_d7_cell_nbank_selfnum": "1",
|
||||
"als_d7_cell_nbank_week_allnum": "0",
|
||||
"als_d7_cell_nbank_week_orgnum": "0",
|
||||
"als_d7_id_caoff_allnum": "1",
|
||||
"als_d7_id_caoff_orgnum": "1",
|
||||
"als_d7_id_coon_allnum": "2",
|
||||
"als_d7_id_coon_orgnum": "2",
|
||||
"als_d7_id_nbank_allnum": "3",
|
||||
"als_d7_id_nbank_ca_allnum": "1",
|
||||
"als_d7_id_nbank_ca_orgnum": "1",
|
||||
"als_d7_id_nbank_else_allnum": "2",
|
||||
"als_d7_id_nbank_else_orgnum": "2",
|
||||
"als_d7_id_nbank_finlea_allnum": "1",
|
||||
"als_d7_id_nbank_finlea_orgnum": "1",
|
||||
"als_d7_id_nbank_night_allnum": "0",
|
||||
"als_d7_id_nbank_night_orgnum": "0",
|
||||
"als_d7_id_nbank_orgnum": "3",
|
||||
"als_d7_id_nbank_oth_allnum": "2",
|
||||
"als_d7_id_nbank_oth_orgnum": "2",
|
||||
"als_d7_id_nbank_selfnum": "1",
|
||||
"als_d7_id_nbank_week_allnum": "0",
|
||||
"als_d7_id_nbank_week_orgnum": "0",
|
||||
"als_fst_cell_nbank_inteday": "210",
|
||||
"als_fst_id_nbank_inteday": "210",
|
||||
"als_lst_cell_nbank_consnum": "1",
|
||||
"als_lst_cell_nbank_csinteday": "1",
|
||||
"als_lst_cell_nbank_inteday": "5",
|
||||
"als_lst_id_nbank_consnum": "1",
|
||||
"als_lst_id_nbank_csinteday": "1",
|
||||
"als_lst_id_nbank_inteday": "5",
|
||||
"als_m12_cell_avg_monnum": "2.50",
|
||||
"als_m12_cell_caoff_allnum": "2",
|
||||
"als_m12_cell_caoff_orgnum": "1",
|
||||
"als_m12_cell_caon_allnum": "1",
|
||||
"als_m12_cell_caon_orgnum": "1",
|
||||
"als_m12_cell_coon_allnum": "8",
|
||||
"als_m12_cell_coon_orgnum": "3",
|
||||
"als_m12_cell_max_inteday": "198",
|
||||
"als_m12_cell_max_monnum": "4",
|
||||
"als_m12_cell_min_inteday": "0",
|
||||
"als_m12_cell_min_monnum": "0",
|
||||
"als_m12_cell_nbank_allnum": "5",
|
||||
"als_m12_cell_nbank_avg_monnum": "2.50",
|
||||
"als_m12_cell_nbank_ca_allnum": "2",
|
||||
"als_m12_cell_nbank_ca_orgnum": "1",
|
||||
"als_m12_cell_nbank_else_allnum": "3",
|
||||
"als_m12_cell_nbank_else_orgnum": "3",
|
||||
"als_m12_cell_nbank_finlea_allnum": "2",
|
||||
"als_m12_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m12_cell_nbank_max_inteday": "198",
|
||||
"als_m12_cell_nbank_max_monnum": "4",
|
||||
"als_m12_cell_nbank_min_inteday": "0",
|
||||
"als_m12_cell_nbank_min_monnum": "0",
|
||||
"als_m12_cell_nbank_night_allnum": "0",
|
||||
"als_m12_cell_nbank_night_orgnum": "0",
|
||||
"als_m12_cell_nbank_orgnum": "4",
|
||||
"als_m12_cell_nbank_oth_allnum": "3",
|
||||
"als_m12_cell_nbank_oth_orgnum": "3",
|
||||
"als_m12_cell_nbank_selfnum": "2",
|
||||
"als_m12_cell_nbank_tot_mons": "2",
|
||||
"als_m12_cell_nbank_week_allnum": "0",
|
||||
"als_m12_cell_nbank_week_orgnum": "0",
|
||||
"als_m12_cell_tot_mons": "2",
|
||||
"als_m12_id_avg_monnum": "2.50",
|
||||
"als_m12_id_caoff_allnum": "2",
|
||||
"als_m12_id_caoff_orgnum": "1",
|
||||
"als_m12_id_caon_allnum": "1",
|
||||
"als_m12_id_caon_orgnum": "1",
|
||||
"als_m12_id_coon_allnum": "10",
|
||||
"als_m12_id_coon_orgnum": "3",
|
||||
"als_m12_id_max_inteday": "198",
|
||||
"als_m12_id_max_monnum": "4",
|
||||
"als_m12_id_min_inteday": "0",
|
||||
"als_m12_id_min_monnum": "0",
|
||||
"als_m12_id_nbank_allnum": "5",
|
||||
"als_m12_id_nbank_avg_monnum": "2.50",
|
||||
"als_m12_id_nbank_ca_allnum": "2",
|
||||
"als_m12_id_nbank_ca_orgnum": "1",
|
||||
"als_m12_id_nbank_else_allnum": "3",
|
||||
"als_m12_id_nbank_else_orgnum": "3",
|
||||
"als_m12_id_nbank_finlea_allnum": "2",
|
||||
"als_m12_id_nbank_finlea_orgnum": "1",
|
||||
"als_m12_id_nbank_max_inteday": "198",
|
||||
"als_m12_id_nbank_max_monnum": "4",
|
||||
"als_m12_id_nbank_min_inteday": "0",
|
||||
"als_m12_id_nbank_min_monnum": "0",
|
||||
"als_m12_id_nbank_night_allnum": "0",
|
||||
"als_m12_id_nbank_night_orgnum": "0",
|
||||
"als_m12_id_nbank_orgnum": "4",
|
||||
"als_m12_id_nbank_oth_allnum": "3",
|
||||
"als_m12_id_nbank_oth_orgnum": "3",
|
||||
"als_m12_id_nbank_selfnum": "2",
|
||||
"als_m12_id_nbank_tot_mons": "2",
|
||||
"als_m12_id_nbank_week_allnum": "0",
|
||||
"als_m12_id_nbank_week_orgnum": "0",
|
||||
"als_m12_id_tot_mons": "2",
|
||||
"als_m1_cell_caoff_allnum": "2",
|
||||
"als_m1_cell_caoff_orgnum": "1",
|
||||
"als_m1_cell_coon_allnum": "4",
|
||||
"als_m1_cell_coon_orgnum": "3",
|
||||
"als_m1_cell_nbank_allnum": "4",
|
||||
"als_m1_cell_nbank_ca_allnum": "2",
|
||||
"als_m1_cell_nbank_ca_orgnum": "1",
|
||||
"als_m1_cell_nbank_else_allnum": "2",
|
||||
"als_m1_cell_nbank_else_orgnum": "2",
|
||||
"als_m1_cell_nbank_finlea_allnum": "2",
|
||||
"als_m1_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m1_cell_nbank_night_allnum": "0",
|
||||
"als_m1_cell_nbank_night_orgnum": "0",
|
||||
"als_m1_cell_nbank_orgnum": "3",
|
||||
"als_m1_cell_nbank_oth_allnum": "2",
|
||||
"als_m1_cell_nbank_oth_orgnum": "2",
|
||||
"als_m1_cell_nbank_selfnum": "2",
|
||||
"als_m1_cell_nbank_week_allnum": "0",
|
||||
"als_m1_cell_nbank_week_orgnum": "0",
|
||||
"als_m1_id_caoff_allnum": "2",
|
||||
"als_m1_id_caoff_orgnum": "1",
|
||||
"als_m1_id_coon_allnum": "4",
|
||||
"als_m1_id_coon_orgnum": "3",
|
||||
"als_m1_id_nbank_allnum": "4",
|
||||
"als_m1_id_nbank_ca_allnum": "2",
|
||||
"als_m1_id_nbank_ca_orgnum": "1",
|
||||
"als_m1_id_nbank_else_allnum": "2",
|
||||
"als_m1_id_nbank_else_orgnum": "2",
|
||||
"als_m1_id_nbank_finlea_allnum": "2",
|
||||
"als_m1_id_nbank_finlea_orgnum": "1",
|
||||
"als_m1_id_nbank_night_allnum": "0",
|
||||
"als_m1_id_nbank_night_orgnum": "0",
|
||||
"als_m1_id_nbank_orgnum": "3",
|
||||
"als_m1_id_nbank_oth_allnum": "2",
|
||||
"als_m1_id_nbank_oth_orgnum": "2",
|
||||
"als_m1_id_nbank_selfnum": "2",
|
||||
"als_m1_id_nbank_week_allnum": "0",
|
||||
"als_m1_id_nbank_week_orgnum": "0",
|
||||
"als_m3_cell_avg_monnum": "4.00",
|
||||
"als_m3_cell_caoff_allnum": "2",
|
||||
"als_m3_cell_caoff_orgnum": "1",
|
||||
"als_m3_cell_coon_allnum": "6",
|
||||
"als_m3_cell_coon_orgnum": "3",
|
||||
"als_m3_cell_max_inteday": "7",
|
||||
"als_m3_cell_max_monnum": "4",
|
||||
"als_m3_cell_min_inteday": "0",
|
||||
"als_m3_cell_min_monnum": "0",
|
||||
"als_m3_cell_nbank_allnum": "4",
|
||||
"als_m3_cell_nbank_avg_monnum": "4.00",
|
||||
"als_m3_cell_nbank_ca_allnum": "2",
|
||||
"als_m3_cell_nbank_ca_orgnum": "1",
|
||||
"als_m3_cell_nbank_else_allnum": "2",
|
||||
"als_m3_cell_nbank_else_orgnum": "2",
|
||||
"als_m3_cell_nbank_finlea_allnum": "2",
|
||||
"als_m3_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m3_cell_nbank_max_inteday": "7",
|
||||
"als_m3_cell_nbank_max_monnum": "4",
|
||||
"als_m3_cell_nbank_min_inteday": "0",
|
||||
"als_m3_cell_nbank_min_monnum": "0",
|
||||
"als_m3_cell_nbank_night_allnum": "0",
|
||||
"als_m3_cell_nbank_night_orgnum": "0",
|
||||
"als_m3_cell_nbank_orgnum": "3",
|
||||
"als_m3_cell_nbank_oth_allnum": "2",
|
||||
"als_m3_cell_nbank_oth_orgnum": "2",
|
||||
"als_m3_cell_nbank_selfnum": "2",
|
||||
"als_m3_cell_nbank_tot_mons": "1",
|
||||
"als_m3_cell_nbank_week_allnum": "0",
|
||||
"als_m3_cell_nbank_week_orgnum": "0",
|
||||
"als_m3_cell_tot_mons": "1",
|
||||
"als_m3_id_avg_monnum": "4.00",
|
||||
"als_m3_id_caoff_allnum": "2",
|
||||
"als_m3_id_caoff_orgnum": "1",
|
||||
"als_m3_id_coon_allnum": "6",
|
||||
"als_m3_id_coon_orgnum": "3",
|
||||
"als_m3_id_max_inteday": "7",
|
||||
"als_m3_id_max_monnum": "4",
|
||||
"als_m3_id_min_inteday": "0",
|
||||
"als_m3_id_min_monnum": "0",
|
||||
"als_m3_id_nbank_allnum": "4",
|
||||
"als_m3_id_nbank_avg_monnum": "4.00",
|
||||
"als_m3_id_nbank_ca_allnum": "2",
|
||||
"als_m3_id_nbank_ca_orgnum": "1",
|
||||
"als_m3_id_nbank_else_allnum": "2",
|
||||
"als_m3_id_nbank_else_orgnum": "2",
|
||||
"als_m3_id_nbank_finlea_allnum": "2",
|
||||
"als_m3_id_nbank_finlea_orgnum": "1",
|
||||
"als_m3_id_nbank_max_inteday": "7",
|
||||
"als_m3_id_nbank_max_monnum": "4",
|
||||
"als_m3_id_nbank_min_inteday": "0",
|
||||
"als_m3_id_nbank_min_monnum": "0",
|
||||
"als_m3_id_nbank_night_allnum": "0",
|
||||
"als_m3_id_nbank_night_orgnum": "0",
|
||||
"als_m3_id_nbank_orgnum": "3",
|
||||
"als_m3_id_nbank_oth_allnum": "2",
|
||||
"als_m3_id_nbank_oth_orgnum": "2",
|
||||
"als_m3_id_nbank_selfnum": "2",
|
||||
"als_m3_id_nbank_tot_mons": "1",
|
||||
"als_m3_id_nbank_week_allnum": "0",
|
||||
"als_m3_id_nbank_week_orgnum": "0",
|
||||
"als_m3_id_tot_mons": "1",
|
||||
"als_m6_cell_avg_monnum": "4.00",
|
||||
"als_m6_cell_caoff_allnum": "2",
|
||||
"als_m6_cell_caoff_orgnum": "1",
|
||||
"als_m6_cell_coon_allnum": "7",
|
||||
"als_m6_cell_coon_orgnum": "3",
|
||||
"als_m6_cell_max_inteday": "7",
|
||||
"als_m6_cell_max_monnum": "4",
|
||||
"als_m6_cell_min_inteday": "0",
|
||||
"als_m6_cell_min_monnum": "0",
|
||||
"als_m6_cell_nbank_allnum": "4",
|
||||
"als_m6_cell_nbank_avg_monnum": "4.00",
|
||||
"als_m6_cell_nbank_ca_allnum": "2",
|
||||
"als_m6_cell_nbank_ca_orgnum": "1",
|
||||
"als_m6_cell_nbank_else_allnum": "2",
|
||||
"als_m6_cell_nbank_else_orgnum": "2",
|
||||
"als_m6_cell_nbank_finlea_allnum": "2",
|
||||
"als_m6_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m6_cell_nbank_max_inteday": "7",
|
||||
"als_m6_cell_nbank_max_monnum": "4",
|
||||
"als_m6_cell_nbank_min_inteday": "0",
|
||||
"als_m6_cell_nbank_min_monnum": "0",
|
||||
"als_m6_cell_nbank_night_allnum": "0",
|
||||
"als_m6_cell_nbank_night_orgnum": "0",
|
||||
"als_m6_cell_nbank_orgnum": "3",
|
||||
"als_m6_cell_nbank_oth_allnum": "2",
|
||||
"als_m6_cell_nbank_oth_orgnum": "2",
|
||||
"als_m6_cell_nbank_selfnum": "2",
|
||||
"als_m6_cell_nbank_tot_mons": "1",
|
||||
"als_m6_cell_nbank_week_allnum": "0",
|
||||
"als_m6_cell_nbank_week_orgnum": "0",
|
||||
"als_m6_cell_tot_mons": "1",
|
||||
"als_m6_id_avg_monnum": "4.00",
|
||||
"als_m6_id_caoff_allnum": "2",
|
||||
"als_m6_id_caoff_orgnum": "1",
|
||||
"als_m6_id_coon_allnum": "8",
|
||||
"als_m6_id_coon_orgnum": "3",
|
||||
"als_m6_id_max_inteday": "7",
|
||||
"als_m6_id_max_monnum": "4",
|
||||
"als_m6_id_min_inteday": "0",
|
||||
"als_m6_id_min_monnum": "0",
|
||||
"als_m6_id_nbank_allnum": "4",
|
||||
"als_m6_id_nbank_avg_monnum": "4.00",
|
||||
"als_m6_id_nbank_ca_allnum": "2",
|
||||
"als_m6_id_nbank_ca_orgnum": "1",
|
||||
"als_m6_id_nbank_else_allnum": "2",
|
||||
"als_m6_id_nbank_else_orgnum": "2",
|
||||
"als_m6_id_nbank_finlea_allnum": "2",
|
||||
"als_m6_id_nbank_finlea_orgnum": "1",
|
||||
"als_m6_id_nbank_max_inteday": "7",
|
||||
"als_m6_id_nbank_max_monnum": "4",
|
||||
"als_m6_id_nbank_min_inteday": "0",
|
||||
"als_m6_id_nbank_min_monnum": "0",
|
||||
"als_m6_id_nbank_night_allnum": "0",
|
||||
"als_m6_id_nbank_night_orgnum": "0",
|
||||
"als_m6_id_nbank_orgnum": "3",
|
||||
"als_m6_id_nbank_oth_allnum": "2",
|
||||
"als_m6_id_nbank_oth_orgnum": "2",
|
||||
"als_m6_id_nbank_selfnum": "2",
|
||||
"als_m6_id_nbank_tot_mons": "1",
|
||||
"als_m6_id_nbank_week_allnum": "0",
|
||||
"als_m6_id_nbank_week_orgnum": "0",
|
||||
"als_m6_id_tot_mons": "1"
|
||||
},
|
||||
"judicial": {
|
||||
"judicial_data": {
|
||||
"breachCaseList": [],
|
||||
"consumptionRestrictionList": [],
|
||||
"lawsuitStat": {
|
||||
"administrative": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"bankrupt": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"cases_tree": {
|
||||
"administrative": [],
|
||||
"civil": [],
|
||||
"criminal": [
|
||||
{
|
||||
"c_ah": "(2016)桂0923刑初90号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "b9a3062adcb707f23c7fe627642fe23c",
|
||||
"stage_type": 1
|
||||
},
|
||||
{
|
||||
"c_ah": "(2016)桂09刑终283号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "c511197ee4a8b29554c57adf0dd53f35",
|
||||
"stage_type": 2
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂0923刑初81号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "e90f9b13a9b0f102611e6b5a2ccf6a96",
|
||||
"stage_type": 1
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂09刑终146号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "80168c539c6ade4497706d0c32e4e229",
|
||||
"stage_type": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"civil": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"area_stat": "广西壮族自治区(4)",
|
||||
"ay_stat": "妨害社会管理秩序罪(4)",
|
||||
"count_beigao": 2,
|
||||
"count_jie_beigao": 2,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 4,
|
||||
"count_jie_yuangao": 2,
|
||||
"count_other": 0,
|
||||
"count_total": 4,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 2,
|
||||
"jafs_stat": "判决(2),维持(1),改判(1)",
|
||||
"larq_stat": "2016(2),2019(2)",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
},
|
||||
"crc": 4070442485,
|
||||
"criminal": {
|
||||
"cases": [
|
||||
{
|
||||
"c_ah": "(2016)桂0923刑初90号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何志勇",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃圣有",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘飞",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈波",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃小群",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈观海",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "公诉机关广西壮族自治区博白县人民检察院。被告人何志某,男,1979年7月13日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。被告人陈某波(曾用名:陈东东),男,1987年7月17日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。被告人覃小某,女,1979年4月15日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。被告人覃某有,男,1972年9月21日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。被告人刘某飞,男,1991年4月3日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。被告人陈某观,男,1990年12月2日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。",
|
||||
"c_gkws_id": "29130d17a43e448e84dc64e9cd203a99",
|
||||
"c_gkws_pjjg": "一、被告人何志某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2017年3月12日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)二、被告人陈某波犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年11月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、被告人覃小某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2017年1月3日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)四、被告人覃某有犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月17日起至2016年5月16日止。罚金已缴纳。)五、被告人刘某飞犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)六、被告人陈某观犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区玉林市中级人民法院提出上诉。书面上诉的应提交上诉状正本一份,副本十三份。",
|
||||
"c_id": "8917c0a3f0eab1ca1f294565be7f2dc5",
|
||||
"c_slfsxx": "1,2016-01-25 09:00:00,第一审判庭,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2016-04-01",
|
||||
"d_larq": "2016-01-04",
|
||||
"n_ajbs": "b9a3062adcb707f23c7fe627642fe23c",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事一审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 390530581,
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "判决",
|
||||
"n_jbfy": "博白县人民法院",
|
||||
"n_jbfy_cj": "基层法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "一审",
|
||||
"n_ssdw": "被告人",
|
||||
"n_ssdw_ys": "被告人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2016)桂09刑终283号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "刘飞",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃圣有",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈观海",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "何志勇",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃小群",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈波",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "原公诉机关广西壮族自治区博白县人民检察院。上诉人(原审被告人)何志勇,农民。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)陈波(曾用名陈东东),农民。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)覃小群,农民。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。现羁押于博白县看守所。原审被告人覃圣有,农民。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。原审被告人刘飞,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于博白县看守所。原审被告人陈观海,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于博白县看守所。",
|
||||
"c_gkws_glah": "(2016)桂0923刑初90号",
|
||||
"c_gkws_id": "bc9c1a6ba2c24065af1ba58267623a4a",
|
||||
"c_gkws_pjjg": "一、维持广西壮族自治区博白县人民法院(2016)桂0923刑初90号刑事判决的第四、第五、第六项,即:被告人覃圣有犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。被告人刘飞犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。被告人陈观海犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。二、撤销广西壮族自治区博白县人民法院(2016)桂0923刑初90号刑事判决的第一、第二、第三项,即:被告人何志勇犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。被告人陈波犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。被告人覃小群犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。三、上诉人(原审被告人)何志勇犯开设赌场罪,判处有期徒刑一年,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2016年9月12日止。罚金已缴纳。)四、上诉人(原审被告人)陈波犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年7月15日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)五、上诉人(原审被告人)覃小群犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2016年9月3日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)本判决为终审判决。",
|
||||
"c_id": "84362df70b3678297431c3f97130e930",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2016-07-14",
|
||||
"d_larq": "2016-05-16",
|
||||
"n_ajbs": "c511197ee4a8b29554c57adf0dd53f35",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事二审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 2349048681,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "改判",
|
||||
"n_jbfy": "广西壮族自治区玉林市中级人民法院",
|
||||
"n_jbfy_cj": "中级人民法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "二审",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂0923刑初81号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何志勇",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘国富",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "公诉机关广西壮族自治区博白县人民检察院。被告人何志勇。被告人刘国富。",
|
||||
"c_gkws_id": "1ee2c6cd15b544a78f68aae10033e5bc",
|
||||
"c_gkws_pjjg": "一、被告人何志勇犯开设赌场罪,判处有期徒刑二年,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月16日起至2020年10月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)%1、被告人刘国富犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月30日起至2020年4月29日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、扣押在案的赌具扑克牌、龙虎珠、骨牌及人民币八百三十五元依法予以没收,其中人民币八百三十五元上缴国库。如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区玉林市中级人民法院提出上诉。书面上诉的应当提交上诉状正本一份,副本九份。",
|
||||
"c_id": "5f4d0aa69d456e5a4c1b025aec5d310d",
|
||||
"c_slfsxx": "1,2019-03-01 09:20:00,KA6第一审判庭,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2019-03-07",
|
||||
"d_larq": "2019-02-20",
|
||||
"n_ajbs": "e90f9b13a9b0f102611e6b5a2ccf6a96",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事一审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 107350759,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "判决",
|
||||
"n_jbfy": "博白县人民法院",
|
||||
"n_jbfy_cj": "基层法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "一审",
|
||||
"n_ssdw": "被告人",
|
||||
"n_ssdw_ys": "被告人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂09刑终146号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何志勇",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘国富",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "原公诉机关广西壮族自治区博白县人民检察院。上诉人(原审被告人)何志勇,男,1979年7月13日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因本案于2018年10月16日被抓获,次日被行政拘留,因涉嫌犯开设赌场罪,于同月26日被刑事拘留,同年11月9日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)刘国富(曾用名刘艺敏),男,1982年8月11日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪,于2018年10月30日被刑事拘留,同年11月15日被逮捕。现羁押于博白县看守所。",
|
||||
"c_gkws_glah": "(2019)桂0923刑初81号",
|
||||
"c_gkws_id": "ddba0d0c8c8f47d49c9faa6000321eb3",
|
||||
"c_gkws_pjjg": "驳回上诉,维持原判。本裁定为终审裁定。",
|
||||
"c_id": "695eeb122cdefc02173c5b0dbc10077c",
|
||||
"c_slfsxx": "1,,,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2019-05-10",
|
||||
"d_larq": "2019-03-20",
|
||||
"n_ajbs": "80168c539c6ade4497706d0c32e4e229",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事二审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 1376027123,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "维持",
|
||||
"n_jbfy": "广西壮族自治区玉林市中级人民法院",
|
||||
"n_jbfy_cj": "中级人民法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "二审",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"count": {
|
||||
"area_stat": "广西壮族自治区(4)",
|
||||
"ay_stat": "妨害社会管理秩序罪(4)",
|
||||
"count_beigao": 2,
|
||||
"count_jie_beigao": 2,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 4,
|
||||
"count_jie_yuangao": 2,
|
||||
"count_other": 0,
|
||||
"count_total": 4,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 2,
|
||||
"jafs_stat": "判决(2),维持(1),改判(1)",
|
||||
"larq_stat": "2016(2),2019(2)",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"has_case": "Y",
|
||||
"implement": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"preservation": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"presence": {
|
||||
"channel": "移动",
|
||||
"desc": "停机",
|
||||
"order_no": "8givczqmonxzv8kube",
|
||||
"status": 1
|
||||
},
|
||||
"probe": {
|
||||
"acc_exc": "0",
|
||||
"acc_sleep": "1",
|
||||
"currently_overdue": "1",
|
||||
"currently_performance": "0",
|
||||
"latest_overdue_time": "2026-06",
|
||||
"max_overdue_amt": "4000-6000",
|
||||
"max_overdue_days": "1-15",
|
||||
"result_code": "1"
|
||||
},
|
||||
"rating": null,
|
||||
"special": {},
|
||||
"triple": {
|
||||
"state": "1"
|
||||
}
|
||||
}
|
||||
@@ -1,876 +0,0 @@
|
||||
{
|
||||
"behavior": {
|
||||
"result": {
|
||||
"black_list": "0",
|
||||
"black_tag04": "0",
|
||||
"black_tag05": "0",
|
||||
"black_tag06": "0",
|
||||
"black_tag07": "0",
|
||||
"black_tag08": "0",
|
||||
"black_tag09": "0",
|
||||
"black_tag10": "0",
|
||||
"black_tag11": "0",
|
||||
"black_tag12": "0"
|
||||
}
|
||||
},
|
||||
"complaint": {
|
||||
"result": {
|
||||
"dnc": 0,
|
||||
"finance_times": {
|
||||
"day_1": 0,
|
||||
"day_14": 0,
|
||||
"day_7": 0
|
||||
},
|
||||
"is_call": true,
|
||||
"is_gp": false,
|
||||
"is_lh": false,
|
||||
"other_times": {
|
||||
"day_1": 0,
|
||||
"day_14": 8,
|
||||
"day_7": 0
|
||||
},
|
||||
"score": 11
|
||||
}
|
||||
},
|
||||
"duration": {
|
||||
"channel": "cmcc",
|
||||
"order_no": "101496411109944170",
|
||||
"time": "[24,-1)"
|
||||
},
|
||||
"fraud": null,
|
||||
"identity": {
|
||||
"address": "广西壮族自治区玉林地区博白县",
|
||||
"birthday": "19790713",
|
||||
"desc": "一致",
|
||||
"order_no": "fsxtvadtpcwky2qbkl",
|
||||
"result": 0,
|
||||
"sex": "男"
|
||||
},
|
||||
"intent": {
|
||||
"Rule_final_decision": "Review",
|
||||
"Rule_final_weight": "40",
|
||||
"Rule_name_QJF040": "在非银机构多次申请-中度",
|
||||
"Rule_weight_QJF040": "40",
|
||||
"als_d15_cell_caoff_allnum": "2",
|
||||
"als_d15_cell_caoff_orgnum": "1",
|
||||
"als_d15_cell_coon_allnum": "3",
|
||||
"als_d15_cell_coon_orgnum": "3",
|
||||
"als_d15_cell_nbank_allnum": "4",
|
||||
"als_d15_cell_nbank_ca_allnum": "2",
|
||||
"als_d15_cell_nbank_ca_orgnum": "1",
|
||||
"als_d15_cell_nbank_else_allnum": "2",
|
||||
"als_d15_cell_nbank_else_orgnum": "2",
|
||||
"als_d15_cell_nbank_finlea_allnum": "2",
|
||||
"als_d15_cell_nbank_finlea_orgnum": "1",
|
||||
"als_d15_cell_nbank_night_allnum": "0",
|
||||
"als_d15_cell_nbank_night_orgnum": "0",
|
||||
"als_d15_cell_nbank_orgnum": "3",
|
||||
"als_d15_cell_nbank_oth_allnum": "2",
|
||||
"als_d15_cell_nbank_oth_orgnum": "2",
|
||||
"als_d15_cell_nbank_selfnum": "2",
|
||||
"als_d15_cell_nbank_week_allnum": "0",
|
||||
"als_d15_cell_nbank_week_orgnum": "0",
|
||||
"als_d15_id_caoff_allnum": "2",
|
||||
"als_d15_id_caoff_orgnum": "1",
|
||||
"als_d15_id_coon_allnum": "3",
|
||||
"als_d15_id_coon_orgnum": "3",
|
||||
"als_d15_id_nbank_allnum": "4",
|
||||
"als_d15_id_nbank_ca_allnum": "2",
|
||||
"als_d15_id_nbank_ca_orgnum": "1",
|
||||
"als_d15_id_nbank_else_allnum": "2",
|
||||
"als_d15_id_nbank_else_orgnum": "2",
|
||||
"als_d15_id_nbank_finlea_allnum": "2",
|
||||
"als_d15_id_nbank_finlea_orgnum": "1",
|
||||
"als_d15_id_nbank_night_allnum": "0",
|
||||
"als_d15_id_nbank_night_orgnum": "0",
|
||||
"als_d15_id_nbank_orgnum": "3",
|
||||
"als_d15_id_nbank_oth_allnum": "2",
|
||||
"als_d15_id_nbank_oth_orgnum": "2",
|
||||
"als_d15_id_nbank_selfnum": "2",
|
||||
"als_d15_id_nbank_week_allnum": "0",
|
||||
"als_d15_id_nbank_week_orgnum": "0",
|
||||
"als_d7_cell_caoff_allnum": "1",
|
||||
"als_d7_cell_caoff_orgnum": "1",
|
||||
"als_d7_cell_coon_allnum": "2",
|
||||
"als_d7_cell_coon_orgnum": "2",
|
||||
"als_d7_cell_nbank_allnum": "3",
|
||||
"als_d7_cell_nbank_ca_allnum": "1",
|
||||
"als_d7_cell_nbank_ca_orgnum": "1",
|
||||
"als_d7_cell_nbank_else_allnum": "2",
|
||||
"als_d7_cell_nbank_else_orgnum": "2",
|
||||
"als_d7_cell_nbank_finlea_allnum": "1",
|
||||
"als_d7_cell_nbank_finlea_orgnum": "1",
|
||||
"als_d7_cell_nbank_night_allnum": "0",
|
||||
"als_d7_cell_nbank_night_orgnum": "0",
|
||||
"als_d7_cell_nbank_orgnum": "3",
|
||||
"als_d7_cell_nbank_oth_allnum": "2",
|
||||
"als_d7_cell_nbank_oth_orgnum": "2",
|
||||
"als_d7_cell_nbank_selfnum": "1",
|
||||
"als_d7_cell_nbank_week_allnum": "0",
|
||||
"als_d7_cell_nbank_week_orgnum": "0",
|
||||
"als_d7_id_caoff_allnum": "1",
|
||||
"als_d7_id_caoff_orgnum": "1",
|
||||
"als_d7_id_coon_allnum": "2",
|
||||
"als_d7_id_coon_orgnum": "2",
|
||||
"als_d7_id_nbank_allnum": "3",
|
||||
"als_d7_id_nbank_ca_allnum": "1",
|
||||
"als_d7_id_nbank_ca_orgnum": "1",
|
||||
"als_d7_id_nbank_else_allnum": "2",
|
||||
"als_d7_id_nbank_else_orgnum": "2",
|
||||
"als_d7_id_nbank_finlea_allnum": "1",
|
||||
"als_d7_id_nbank_finlea_orgnum": "1",
|
||||
"als_d7_id_nbank_night_allnum": "0",
|
||||
"als_d7_id_nbank_night_orgnum": "0",
|
||||
"als_d7_id_nbank_orgnum": "3",
|
||||
"als_d7_id_nbank_oth_allnum": "2",
|
||||
"als_d7_id_nbank_oth_orgnum": "2",
|
||||
"als_d7_id_nbank_selfnum": "1",
|
||||
"als_d7_id_nbank_week_allnum": "0",
|
||||
"als_d7_id_nbank_week_orgnum": "0",
|
||||
"als_fst_cell_nbank_inteday": "210",
|
||||
"als_fst_id_nbank_inteday": "210",
|
||||
"als_lst_cell_nbank_consnum": "1",
|
||||
"als_lst_cell_nbank_csinteday": "1",
|
||||
"als_lst_cell_nbank_inteday": "5",
|
||||
"als_lst_id_nbank_consnum": "1",
|
||||
"als_lst_id_nbank_csinteday": "1",
|
||||
"als_lst_id_nbank_inteday": "5",
|
||||
"als_m12_cell_avg_monnum": "2.50",
|
||||
"als_m12_cell_caoff_allnum": "2",
|
||||
"als_m12_cell_caoff_orgnum": "1",
|
||||
"als_m12_cell_caon_allnum": "1",
|
||||
"als_m12_cell_caon_orgnum": "1",
|
||||
"als_m12_cell_coon_allnum": "8",
|
||||
"als_m12_cell_coon_orgnum": "3",
|
||||
"als_m12_cell_max_inteday": "198",
|
||||
"als_m12_cell_max_monnum": "4",
|
||||
"als_m12_cell_min_inteday": "0",
|
||||
"als_m12_cell_min_monnum": "0",
|
||||
"als_m12_cell_nbank_allnum": "5",
|
||||
"als_m12_cell_nbank_avg_monnum": "2.50",
|
||||
"als_m12_cell_nbank_ca_allnum": "2",
|
||||
"als_m12_cell_nbank_ca_orgnum": "1",
|
||||
"als_m12_cell_nbank_else_allnum": "3",
|
||||
"als_m12_cell_nbank_else_orgnum": "3",
|
||||
"als_m12_cell_nbank_finlea_allnum": "2",
|
||||
"als_m12_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m12_cell_nbank_max_inteday": "198",
|
||||
"als_m12_cell_nbank_max_monnum": "4",
|
||||
"als_m12_cell_nbank_min_inteday": "0",
|
||||
"als_m12_cell_nbank_min_monnum": "0",
|
||||
"als_m12_cell_nbank_night_allnum": "0",
|
||||
"als_m12_cell_nbank_night_orgnum": "0",
|
||||
"als_m12_cell_nbank_orgnum": "4",
|
||||
"als_m12_cell_nbank_oth_allnum": "3",
|
||||
"als_m12_cell_nbank_oth_orgnum": "3",
|
||||
"als_m12_cell_nbank_selfnum": "2",
|
||||
"als_m12_cell_nbank_tot_mons": "2",
|
||||
"als_m12_cell_nbank_week_allnum": "0",
|
||||
"als_m12_cell_nbank_week_orgnum": "0",
|
||||
"als_m12_cell_tot_mons": "2",
|
||||
"als_m12_id_avg_monnum": "2.50",
|
||||
"als_m12_id_caoff_allnum": "2",
|
||||
"als_m12_id_caoff_orgnum": "1",
|
||||
"als_m12_id_caon_allnum": "1",
|
||||
"als_m12_id_caon_orgnum": "1",
|
||||
"als_m12_id_coon_allnum": "10",
|
||||
"als_m12_id_coon_orgnum": "3",
|
||||
"als_m12_id_max_inteday": "198",
|
||||
"als_m12_id_max_monnum": "4",
|
||||
"als_m12_id_min_inteday": "0",
|
||||
"als_m12_id_min_monnum": "0",
|
||||
"als_m12_id_nbank_allnum": "5",
|
||||
"als_m12_id_nbank_avg_monnum": "2.50",
|
||||
"als_m12_id_nbank_ca_allnum": "2",
|
||||
"als_m12_id_nbank_ca_orgnum": "1",
|
||||
"als_m12_id_nbank_else_allnum": "3",
|
||||
"als_m12_id_nbank_else_orgnum": "3",
|
||||
"als_m12_id_nbank_finlea_allnum": "2",
|
||||
"als_m12_id_nbank_finlea_orgnum": "1",
|
||||
"als_m12_id_nbank_max_inteday": "198",
|
||||
"als_m12_id_nbank_max_monnum": "4",
|
||||
"als_m12_id_nbank_min_inteday": "0",
|
||||
"als_m12_id_nbank_min_monnum": "0",
|
||||
"als_m12_id_nbank_night_allnum": "0",
|
||||
"als_m12_id_nbank_night_orgnum": "0",
|
||||
"als_m12_id_nbank_orgnum": "4",
|
||||
"als_m12_id_nbank_oth_allnum": "3",
|
||||
"als_m12_id_nbank_oth_orgnum": "3",
|
||||
"als_m12_id_nbank_selfnum": "2",
|
||||
"als_m12_id_nbank_tot_mons": "2",
|
||||
"als_m12_id_nbank_week_allnum": "0",
|
||||
"als_m12_id_nbank_week_orgnum": "0",
|
||||
"als_m12_id_tot_mons": "2",
|
||||
"als_m1_cell_caoff_allnum": "2",
|
||||
"als_m1_cell_caoff_orgnum": "1",
|
||||
"als_m1_cell_coon_allnum": "4",
|
||||
"als_m1_cell_coon_orgnum": "3",
|
||||
"als_m1_cell_nbank_allnum": "4",
|
||||
"als_m1_cell_nbank_ca_allnum": "2",
|
||||
"als_m1_cell_nbank_ca_orgnum": "1",
|
||||
"als_m1_cell_nbank_else_allnum": "2",
|
||||
"als_m1_cell_nbank_else_orgnum": "2",
|
||||
"als_m1_cell_nbank_finlea_allnum": "2",
|
||||
"als_m1_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m1_cell_nbank_night_allnum": "0",
|
||||
"als_m1_cell_nbank_night_orgnum": "0",
|
||||
"als_m1_cell_nbank_orgnum": "3",
|
||||
"als_m1_cell_nbank_oth_allnum": "2",
|
||||
"als_m1_cell_nbank_oth_orgnum": "2",
|
||||
"als_m1_cell_nbank_selfnum": "2",
|
||||
"als_m1_cell_nbank_week_allnum": "0",
|
||||
"als_m1_cell_nbank_week_orgnum": "0",
|
||||
"als_m1_id_caoff_allnum": "2",
|
||||
"als_m1_id_caoff_orgnum": "1",
|
||||
"als_m1_id_coon_allnum": "4",
|
||||
"als_m1_id_coon_orgnum": "3",
|
||||
"als_m1_id_nbank_allnum": "4",
|
||||
"als_m1_id_nbank_ca_allnum": "2",
|
||||
"als_m1_id_nbank_ca_orgnum": "1",
|
||||
"als_m1_id_nbank_else_allnum": "2",
|
||||
"als_m1_id_nbank_else_orgnum": "2",
|
||||
"als_m1_id_nbank_finlea_allnum": "2",
|
||||
"als_m1_id_nbank_finlea_orgnum": "1",
|
||||
"als_m1_id_nbank_night_allnum": "0",
|
||||
"als_m1_id_nbank_night_orgnum": "0",
|
||||
"als_m1_id_nbank_orgnum": "3",
|
||||
"als_m1_id_nbank_oth_allnum": "2",
|
||||
"als_m1_id_nbank_oth_orgnum": "2",
|
||||
"als_m1_id_nbank_selfnum": "2",
|
||||
"als_m1_id_nbank_week_allnum": "0",
|
||||
"als_m1_id_nbank_week_orgnum": "0",
|
||||
"als_m3_cell_avg_monnum": "4.00",
|
||||
"als_m3_cell_caoff_allnum": "2",
|
||||
"als_m3_cell_caoff_orgnum": "1",
|
||||
"als_m3_cell_coon_allnum": "6",
|
||||
"als_m3_cell_coon_orgnum": "3",
|
||||
"als_m3_cell_max_inteday": "7",
|
||||
"als_m3_cell_max_monnum": "4",
|
||||
"als_m3_cell_min_inteday": "0",
|
||||
"als_m3_cell_min_monnum": "0",
|
||||
"als_m3_cell_nbank_allnum": "4",
|
||||
"als_m3_cell_nbank_avg_monnum": "4.00",
|
||||
"als_m3_cell_nbank_ca_allnum": "2",
|
||||
"als_m3_cell_nbank_ca_orgnum": "1",
|
||||
"als_m3_cell_nbank_else_allnum": "2",
|
||||
"als_m3_cell_nbank_else_orgnum": "2",
|
||||
"als_m3_cell_nbank_finlea_allnum": "2",
|
||||
"als_m3_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m3_cell_nbank_max_inteday": "7",
|
||||
"als_m3_cell_nbank_max_monnum": "4",
|
||||
"als_m3_cell_nbank_min_inteday": "0",
|
||||
"als_m3_cell_nbank_min_monnum": "0",
|
||||
"als_m3_cell_nbank_night_allnum": "0",
|
||||
"als_m3_cell_nbank_night_orgnum": "0",
|
||||
"als_m3_cell_nbank_orgnum": "3",
|
||||
"als_m3_cell_nbank_oth_allnum": "2",
|
||||
"als_m3_cell_nbank_oth_orgnum": "2",
|
||||
"als_m3_cell_nbank_selfnum": "2",
|
||||
"als_m3_cell_nbank_tot_mons": "1",
|
||||
"als_m3_cell_nbank_week_allnum": "0",
|
||||
"als_m3_cell_nbank_week_orgnum": "0",
|
||||
"als_m3_cell_tot_mons": "1",
|
||||
"als_m3_id_avg_monnum": "4.00",
|
||||
"als_m3_id_caoff_allnum": "2",
|
||||
"als_m3_id_caoff_orgnum": "1",
|
||||
"als_m3_id_coon_allnum": "6",
|
||||
"als_m3_id_coon_orgnum": "3",
|
||||
"als_m3_id_max_inteday": "7",
|
||||
"als_m3_id_max_monnum": "4",
|
||||
"als_m3_id_min_inteday": "0",
|
||||
"als_m3_id_min_monnum": "0",
|
||||
"als_m3_id_nbank_allnum": "4",
|
||||
"als_m3_id_nbank_avg_monnum": "4.00",
|
||||
"als_m3_id_nbank_ca_allnum": "2",
|
||||
"als_m3_id_nbank_ca_orgnum": "1",
|
||||
"als_m3_id_nbank_else_allnum": "2",
|
||||
"als_m3_id_nbank_else_orgnum": "2",
|
||||
"als_m3_id_nbank_finlea_allnum": "2",
|
||||
"als_m3_id_nbank_finlea_orgnum": "1",
|
||||
"als_m3_id_nbank_max_inteday": "7",
|
||||
"als_m3_id_nbank_max_monnum": "4",
|
||||
"als_m3_id_nbank_min_inteday": "0",
|
||||
"als_m3_id_nbank_min_monnum": "0",
|
||||
"als_m3_id_nbank_night_allnum": "0",
|
||||
"als_m3_id_nbank_night_orgnum": "0",
|
||||
"als_m3_id_nbank_orgnum": "3",
|
||||
"als_m3_id_nbank_oth_allnum": "2",
|
||||
"als_m3_id_nbank_oth_orgnum": "2",
|
||||
"als_m3_id_nbank_selfnum": "2",
|
||||
"als_m3_id_nbank_tot_mons": "1",
|
||||
"als_m3_id_nbank_week_allnum": "0",
|
||||
"als_m3_id_nbank_week_orgnum": "0",
|
||||
"als_m3_id_tot_mons": "1",
|
||||
"als_m6_cell_avg_monnum": "4.00",
|
||||
"als_m6_cell_caoff_allnum": "2",
|
||||
"als_m6_cell_caoff_orgnum": "1",
|
||||
"als_m6_cell_coon_allnum": "7",
|
||||
"als_m6_cell_coon_orgnum": "3",
|
||||
"als_m6_cell_max_inteday": "7",
|
||||
"als_m6_cell_max_monnum": "4",
|
||||
"als_m6_cell_min_inteday": "0",
|
||||
"als_m6_cell_min_monnum": "0",
|
||||
"als_m6_cell_nbank_allnum": "4",
|
||||
"als_m6_cell_nbank_avg_monnum": "4.00",
|
||||
"als_m6_cell_nbank_ca_allnum": "2",
|
||||
"als_m6_cell_nbank_ca_orgnum": "1",
|
||||
"als_m6_cell_nbank_else_allnum": "2",
|
||||
"als_m6_cell_nbank_else_orgnum": "2",
|
||||
"als_m6_cell_nbank_finlea_allnum": "2",
|
||||
"als_m6_cell_nbank_finlea_orgnum": "1",
|
||||
"als_m6_cell_nbank_max_inteday": "7",
|
||||
"als_m6_cell_nbank_max_monnum": "4",
|
||||
"als_m6_cell_nbank_min_inteday": "0",
|
||||
"als_m6_cell_nbank_min_monnum": "0",
|
||||
"als_m6_cell_nbank_night_allnum": "0",
|
||||
"als_m6_cell_nbank_night_orgnum": "0",
|
||||
"als_m6_cell_nbank_orgnum": "3",
|
||||
"als_m6_cell_nbank_oth_allnum": "2",
|
||||
"als_m6_cell_nbank_oth_orgnum": "2",
|
||||
"als_m6_cell_nbank_selfnum": "2",
|
||||
"als_m6_cell_nbank_tot_mons": "1",
|
||||
"als_m6_cell_nbank_week_allnum": "0",
|
||||
"als_m6_cell_nbank_week_orgnum": "0",
|
||||
"als_m6_cell_tot_mons": "1",
|
||||
"als_m6_id_avg_monnum": "4.00",
|
||||
"als_m6_id_caoff_allnum": "2",
|
||||
"als_m6_id_caoff_orgnum": "1",
|
||||
"als_m6_id_coon_allnum": "8",
|
||||
"als_m6_id_coon_orgnum": "3",
|
||||
"als_m6_id_max_inteday": "7",
|
||||
"als_m6_id_max_monnum": "4",
|
||||
"als_m6_id_min_inteday": "0",
|
||||
"als_m6_id_min_monnum": "0",
|
||||
"als_m6_id_nbank_allnum": "4",
|
||||
"als_m6_id_nbank_avg_monnum": "4.00",
|
||||
"als_m6_id_nbank_ca_allnum": "2",
|
||||
"als_m6_id_nbank_ca_orgnum": "1",
|
||||
"als_m6_id_nbank_else_allnum": "2",
|
||||
"als_m6_id_nbank_else_orgnum": "2",
|
||||
"als_m6_id_nbank_finlea_allnum": "2",
|
||||
"als_m6_id_nbank_finlea_orgnum": "1",
|
||||
"als_m6_id_nbank_max_inteday": "7",
|
||||
"als_m6_id_nbank_max_monnum": "4",
|
||||
"als_m6_id_nbank_min_inteday": "0",
|
||||
"als_m6_id_nbank_min_monnum": "0",
|
||||
"als_m6_id_nbank_night_allnum": "0",
|
||||
"als_m6_id_nbank_night_orgnum": "0",
|
||||
"als_m6_id_nbank_orgnum": "3",
|
||||
"als_m6_id_nbank_oth_allnum": "2",
|
||||
"als_m6_id_nbank_oth_orgnum": "2",
|
||||
"als_m6_id_nbank_selfnum": "2",
|
||||
"als_m6_id_nbank_tot_mons": "1",
|
||||
"als_m6_id_nbank_week_allnum": "0",
|
||||
"als_m6_id_nbank_week_orgnum": "0",
|
||||
"als_m6_id_tot_mons": "1"
|
||||
},
|
||||
"judicial": {
|
||||
"judicial_data": {
|
||||
"breachCaseList": [],
|
||||
"consumptionRestrictionList": [],
|
||||
"lawsuitStat": {
|
||||
"administrative": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"bankrupt": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"cases_tree": {
|
||||
"administrative": [],
|
||||
"civil": [],
|
||||
"criminal": [
|
||||
{
|
||||
"c_ah": "(2016)桂0923刑初90号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "b9a3062adcb707f23c7fe627642fe23c",
|
||||
"stage_type": 1
|
||||
},
|
||||
{
|
||||
"c_ah": "(2016)桂09刑终283号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "c511197ee4a8b29554c57adf0dd53f35",
|
||||
"stage_type": 2
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂0923刑初81号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "e90f9b13a9b0f102611e6b5a2ccf6a96",
|
||||
"stage_type": 1
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂09刑终146号",
|
||||
"case_type": 200,
|
||||
"n_ajbs": "80168c539c6ade4497706d0c32e4e229",
|
||||
"stage_type": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"civil": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"area_stat": "广西壮族自治区(4)",
|
||||
"ay_stat": "妨害社会管理秩序罪(4)",
|
||||
"count_beigao": 2,
|
||||
"count_jie_beigao": 2,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 4,
|
||||
"count_jie_yuangao": 2,
|
||||
"count_other": 0,
|
||||
"count_total": 4,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 2,
|
||||
"jafs_stat": "判决(2),维持(1),改判(1)",
|
||||
"larq_stat": "2016(2),2019(2)",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
},
|
||||
"crc": 4070442485,
|
||||
"criminal": {
|
||||
"cases": [
|
||||
{
|
||||
"c_ah": "(2016)桂0923刑初90号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "公诉机关广西壮族自治区博白县人民检察院。被告人何某某,男,1979年7月13日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。被告人陈某某波(曾用名:陈东东),男,1987年7月17日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。被告人覃某某,女,1979年4月15日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。被告人覃某有,男,1972年9月21日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。被告人刘某某飞,男,1991年4月3日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。被告人陈某某观,男,1990年12月2日出生于广西壮族自治区博白县,汉族,初中文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。",
|
||||
"c_gkws_id": "29130d17a43e448e84dc64e9cd203a99",
|
||||
"c_gkws_pjjg": "一、被告人何某某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2017年3月12日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)二、被告人陈某某波犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年11月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、被告人覃某某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2017年1月3日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)四、被告人覃某有犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月17日起至2016年5月16日止。罚金已缴纳。)五、被告人刘某某飞犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)六、被告人陈某某观犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区玉林市中级人民法院提出上诉。书面上诉的应提交上诉状正本一份,副本十三份。",
|
||||
"c_id": "8917c0a3f0eab1ca1f294565be7f2dc5",
|
||||
"c_slfsxx": "1,2016-01-25 09:00:00,第一审判庭,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2016-04-01",
|
||||
"d_larq": "2016-01-04",
|
||||
"n_ajbs": "b9a3062adcb707f23c7fe627642fe23c",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事一审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 390530581,
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "判决",
|
||||
"n_jbfy": "博白县人民法院",
|
||||
"n_jbfy_cj": "基层法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "一审",
|
||||
"n_ssdw": "被告人",
|
||||
"n_ssdw_ys": "被告人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2016)桂09刑终283号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "刘某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "其他"
|
||||
},
|
||||
{
|
||||
"c_mc": "何某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "覃某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "陈某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "原公诉机关广西壮族自治区博白县人民检察院。上诉人(原审被告人)何某某,农民。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)陈某某某(曾用名陈东东),农民。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)覃某某,农民。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。现羁押于博白县看守所。原审被告人覃某,农民。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。现羁押于博白县看守所。原审被告人刘某某某,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于博白县看守所。原审被告人陈某某,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于博白县看守所。",
|
||||
"c_gkws_glah": "(2016)桂0923刑初90号",
|
||||
"c_gkws_id": "bc9c1a6ba2c24065af1ba58267623a4a",
|
||||
"c_gkws_pjjg": "一、维持广西壮族自治区博白县人民法院(2016)桂0923刑初90号刑事判决的第四、第五、第六项,即:被告人覃某犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。被告人刘某某某犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。被告人陈某某犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。二、撤销广西壮族自治区博白县人民法院(2016)桂0923刑初90号刑事判决的第一、第二、第三项,即:被告人何某某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。被告人陈某某某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。被告人覃某某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。三、上诉人(原审被告人)何某某犯开设赌场罪,判处有期徒刑一年,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2016年9月12日止。罚金已缴纳。)四、上诉人(原审被告人)陈某某某犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年7月15日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)五、上诉人(原审被告人)覃某某犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2016年9月3日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)本判决为终审判决。",
|
||||
"c_id": "84362df70b3678297431c3f97130e930",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2016-07-14",
|
||||
"d_larq": "2016-05-16",
|
||||
"n_ajbs": "c511197ee4a8b29554c57adf0dd53f35",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事二审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 2349048681,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "改判",
|
||||
"n_jbfy": "广西壮族自治区玉林市中级人民法院",
|
||||
"n_jbfy_cj": "中级人民法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "二审",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂0923刑初81号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "被告人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "公诉机关广西壮族自治区博白县人民检察院。被告人何某某。被告人刘某某。",
|
||||
"c_gkws_id": "1ee2c6cd15b544a78f68aae10033e5bc",
|
||||
"c_gkws_pjjg": "一、被告人何某某犯开设赌场罪,判处有期徒刑二年,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月16日起至2020年10月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)%1、被告人刘某某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月30日起至2020年4月29日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、扣押在案的赌具扑克牌、龙虎珠、骨牌及人民币八百三十五元依法予以没收,其中人民币八百三十五元上缴国库。如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区玉林市中级人民法院提出上诉。书面上诉的应当提交上诉状正本一份,副本九份。",
|
||||
"c_id": "5f4d0aa69d456e5a4c1b025aec5d310d",
|
||||
"c_slfsxx": "1,2019-03-01 09:20:00,KA6第一审判庭,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2019-03-07",
|
||||
"d_larq": "2019-02-20",
|
||||
"n_ajbs": "e90f9b13a9b0f102611e6b5a2ccf6a96",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事一审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 107350759,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "判决",
|
||||
"n_jbfy": "博白县人民法院",
|
||||
"n_jbfy_cj": "基层法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "一审",
|
||||
"n_ssdw": "被告人",
|
||||
"n_ssdw_ys": "被告人"
|
||||
},
|
||||
{
|
||||
"c_ah": "(2019)桂09刑终146号",
|
||||
"c_dsrxx": [
|
||||
{
|
||||
"c_mc": "何某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
},
|
||||
{
|
||||
"c_mc": "刘某某",
|
||||
"n_dsrlx": "自然人",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"c_gkws_dsr": "原公诉机关广西壮族自治区博白县人民检察院。上诉人(原审被告人)何某某,男,1979年7月13日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因本案于2018年10月16日被抓获,次日被行政拘留,因涉嫌犯开设赌场罪,于同月26日被刑事拘留,同年11月9日被逮捕。现羁押于博白县看守所。上诉人(原审被告人)刘某某(曾用名刘艺敏),男,1982年8月11日出生于广西壮族自治区博白县,汉族,小学文化,农民,住广西壮族自治区博白县。因涉嫌犯开设赌场罪,于2018年10月30日被刑事拘留,同年11月15日被逮捕。现羁押于博白县看守所。",
|
||||
"c_gkws_glah": "(2019)桂0923刑初81号",
|
||||
"c_gkws_id": "ddba0d0c8c8f47d49c9faa6000321eb3",
|
||||
"c_gkws_pjjg": "驳回上诉,维持原判。本裁定为终审裁定。",
|
||||
"c_id": "695eeb122cdefc02173c5b0dbc10077c",
|
||||
"c_slfsxx": "1,,,1",
|
||||
"c_ssdy": "广西壮族自治区",
|
||||
"d_jarq": "2019-05-10",
|
||||
"d_larq": "2019-03-20",
|
||||
"n_ajbs": "80168c539c6ade4497706d0c32e4e229",
|
||||
"n_ajjzjd": "已结案",
|
||||
"n_ajlx": "刑事二审",
|
||||
"n_bqqpcje_level": 0,
|
||||
"n_ccxzxje_level": 0,
|
||||
"n_crc": 1376027123,
|
||||
"n_dzzm": "妨害社会管理秩序罪",
|
||||
"n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_fzje_level": 0,
|
||||
"n_jaay": "妨害社会管理秩序罪",
|
||||
"n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_jafs": "维持",
|
||||
"n_jbfy": "广西壮族自治区玉林市中级人民法院",
|
||||
"n_jbfy_cj": "中级人民法院",
|
||||
"n_laay": "妨害社会管理秩序罪",
|
||||
"n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
|
||||
"n_pcjg": "给予刑事处罚",
|
||||
"n_pcpcje_level": 0,
|
||||
"n_slcx": "二审",
|
||||
"n_ssdw": "上诉人"
|
||||
}
|
||||
],
|
||||
"count": {
|
||||
"area_stat": "广西壮族自治区(4)",
|
||||
"ay_stat": "妨害社会管理秩序罪(4)",
|
||||
"count_beigao": 2,
|
||||
"count_jie_beigao": 2,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 4,
|
||||
"count_jie_yuangao": 2,
|
||||
"count_other": 0,
|
||||
"count_total": 4,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 2,
|
||||
"jafs_stat": "判决(2),维持(1),改判(1)",
|
||||
"larq_stat": "2016(2),2019(2)",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"has_case": "Y",
|
||||
"implement": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
},
|
||||
"preservation": {
|
||||
"cases": [],
|
||||
"count": {
|
||||
"area_stat": "",
|
||||
"ay_stat": "",
|
||||
"count_beigao": 0,
|
||||
"count_jie_beigao": 0,
|
||||
"count_jie_other": 0,
|
||||
"count_jie_total": 0,
|
||||
"count_jie_yuangao": 0,
|
||||
"count_other": 0,
|
||||
"count_total": 0,
|
||||
"count_wei_beigao": 0,
|
||||
"count_wei_other": 0,
|
||||
"count_wei_total": 0,
|
||||
"count_wei_yuangao": 0,
|
||||
"count_yuangao": 0,
|
||||
"jafs_stat": "",
|
||||
"larq_stat": "",
|
||||
"money_beigao": 0,
|
||||
"money_jie_beigao": 0,
|
||||
"money_jie_other": 0,
|
||||
"money_jie_total": 0,
|
||||
"money_jie_yuangao": 0,
|
||||
"money_other": 0,
|
||||
"money_total": 0,
|
||||
"money_wei_beigao": 0,
|
||||
"money_wei_other": 0,
|
||||
"money_wei_percent": 0,
|
||||
"money_wei_total": 0,
|
||||
"money_wei_yuangao": 0,
|
||||
"money_yuangao": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"presence": {
|
||||
"channel": "移动",
|
||||
"desc": "停机",
|
||||
"order_no": "8givczqmonxzv8kube",
|
||||
"status": 1
|
||||
},
|
||||
"probe": {
|
||||
"acc_exc": "0",
|
||||
"acc_sleep": "1",
|
||||
"currently_overdue": "1",
|
||||
"currently_performance": "0",
|
||||
"latest_overdue_time": "2026-06",
|
||||
"max_overdue_amt": "4000-6000",
|
||||
"max_overdue_days": "1-15",
|
||||
"result_code": "1"
|
||||
},
|
||||
"rating": null,
|
||||
"special": {},
|
||||
"triple": {
|
||||
"state": "1"
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ const __dirname = path.dirname(__filename);
|
||||
|
||||
// 读取JSON文件
|
||||
// 读取JSON文件
|
||||
const inputFile = path.join(__dirname, 'DWBG9FB3.json');
|
||||
const inputFile = path.join(__dirname, 'DWBG3BF9.json');
|
||||
const data = JSON.parse(fs.readFileSync(inputFile, 'utf8'));
|
||||
|
||||
// 姓名映射表(保持同一姓名脱敏后一致)
|
||||
@@ -102,7 +102,7 @@ function desensitizeObject(obj) {
|
||||
const desensitizedData = desensitizeObject(data);
|
||||
|
||||
// 保存脱敏后的文件
|
||||
const outputFile = path.join(__dirname, 'DWBG9FB3_desensitized.json');
|
||||
const outputFile = path.join(__dirname, 'DWBG3BF9_desensitized.json');
|
||||
fs.writeFileSync(outputFile, JSON.stringify(desensitizedData, null, 2), 'utf8');
|
||||
|
||||
console.log('脱敏完成!');
|
||||
|
||||
@@ -0,0 +1,328 @@
|
||||
package dwbg
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"tyapi-server/internal/domains/api/dto"
|
||||
"tyapi-server/internal/domains/api/services/processors"
|
||||
"tyapi-server/internal/shared/logger"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const dwbg3BF9FieldRA = "RA"
|
||||
|
||||
// dwbg3BF9OutputField 最终扁平结构中的单个顶层字段定义
|
||||
type dwbg3BF9OutputField struct {
|
||||
Key string // 顶层 JSON key
|
||||
ApiCode string // 子产品编码;RA 由聚合计算,无 ApiCode
|
||||
Source string // 数据来源方法
|
||||
}
|
||||
|
||||
// dwbg3BF9OutputSchema DWBG3BF9 最终返回扁平结构(顶层共 13 个 key)
|
||||
//
|
||||
// {
|
||||
// "RA": { ra_score, ra_level, ra_credit_score, ra_verify_score, ra_credit_risk_index, ra_performance_amt_index, ra_performance_cnt_index },
|
||||
// "presence": { ... }, // YYSYE7V5
|
||||
// "duration": { ... }, // YYSYP0T4
|
||||
// "triple": { ... }, // YYSYK9R4
|
||||
// "identity": { ... }, // IVYZN2P8
|
||||
// "fraud": { ... }, // JRZQV3HM
|
||||
// "probe": { ... }, // JRZQ4B6C
|
||||
// "rating": { ... }, // JRZQ5E9F
|
||||
// "intent": { ... }, // JRZQ3C7B
|
||||
// "special": { ... }, // JRZQV7MD
|
||||
// "complaint": { ... }, // JRZQVT43
|
||||
// "behavior": { ... }, // JRZQV0MD
|
||||
// "judicial": { ... }, // FLXG7E8F
|
||||
// }
|
||||
var dwbg3BF9OutputSchema = []dwbg3BF9OutputField{
|
||||
{Key: dwbg3BF9FieldRA, Source: "buildDWBG3BF9RA"},
|
||||
{Key: "presence", ApiCode: "YYSYE7V5", Source: "ProcessYYSYE7V5Request"},
|
||||
{Key: "duration", ApiCode: "YYSYP0T4", Source: "ProcessYYSYP0T4Request"},
|
||||
{Key: "triple", ApiCode: "YYSYK9R4", Source: "ProcessYYSYK9R4Request"},
|
||||
{Key: "identity", ApiCode: "IVYZN2P8", Source: "ProcessIVYZN2P8Request"},
|
||||
{Key: "fraud", ApiCode: "JRZQV3HM", Source: "ProcessJRZQV3HMRequest"},
|
||||
{Key: "probe", ApiCode: "JRZQ4B6C", Source: "ProcessJRZQ4B6CRequest"},
|
||||
{Key: "rating", ApiCode: "JRZQ5E9F", Source: "ProcessJRZQ5E9FRequest"},
|
||||
{Key: "intent", ApiCode: "JRZQ3C7B", Source: "ProcessJRZQ3C7BRequest"},
|
||||
{Key: "special", ApiCode: "JRZQV7MD", Source: "ProcessJRZQV7MDRequest"},
|
||||
{Key: "complaint", ApiCode: "JRZQVT43", Source: "ProcessJRZQVT43Request"},
|
||||
{Key: "behavior", ApiCode: "JRZQV0MD", Source: "ProcessJRZQV0MDRequest"},
|
||||
{Key: "judicial", ApiCode: "FLXG7E8F", Source: "ProcessFLXG7E8FRequest"},
|
||||
}
|
||||
|
||||
// dwbg3BF9OutputFieldOrder 最终 JSON 顶层字段顺序
|
||||
var dwbg3BF9OutputFieldOrder = func() []string {
|
||||
order := make([]string, len(dwbg3BF9OutputSchema))
|
||||
for i, f := range dwbg3BF9OutputSchema {
|
||||
order[i] = f.Key
|
||||
}
|
||||
return order
|
||||
}()
|
||||
|
||||
// dwbg3BF9SubProductFieldNames 子产品编码 → 响应字段名
|
||||
var dwbg3BF9SubProductFieldNames = func() map[string]string {
|
||||
m := make(map[string]string, len(dwbg3BF9OutputSchema)-1)
|
||||
for _, f := range dwbg3BF9OutputSchema {
|
||||
if f.ApiCode == "" {
|
||||
continue
|
||||
}
|
||||
m[f.ApiCode] = f.Key
|
||||
}
|
||||
return m
|
||||
}()
|
||||
|
||||
// dwbg3BF9StripKeys 汇总报告中需剔除的上游流水号/追踪类字段
|
||||
var dwbg3BF9StripKeys = map[string]struct{}{
|
||||
"order_no": {},
|
||||
"orderNo": {},
|
||||
}
|
||||
|
||||
// stripDWBG3BF9MetaKeys 递归剔除子接口返回中的流水号等元数据字段
|
||||
func stripDWBG3BF9MetaKeys(v interface{}) interface{} {
|
||||
switch val := v.(type) {
|
||||
case map[string]interface{}:
|
||||
out := make(map[string]interface{}, len(val))
|
||||
for k, item := range val {
|
||||
if _, drop := dwbg3BF9StripKeys[k]; drop {
|
||||
continue
|
||||
}
|
||||
out[k] = stripDWBG3BF9MetaKeys(item)
|
||||
}
|
||||
return out
|
||||
case []interface{}:
|
||||
out := make([]interface{}, len(val))
|
||||
for i, item := range val {
|
||||
out[i] = stripDWBG3BF9MetaKeys(item)
|
||||
}
|
||||
return out
|
||||
default:
|
||||
return v
|
||||
}
|
||||
}
|
||||
|
||||
// ProcessDWBG3BF9Request DWBG3BF9 API处理方法 - 个人风险档案
|
||||
// 并发调用子产品处理器,将各子接口返回数据以大数据英文字段名拼接融合为一个对象
|
||||
func ProcessDWBG3BF9Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||
var paramsDto dto.DWBG3BF9Req
|
||||
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
|
||||
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||
}
|
||||
|
||||
log := logger.GetGlobalLogger()
|
||||
log.Info("开始处理个人风险档案请求",
|
||||
zap.String("name", paramsDto.Name),
|
||||
zap.String("id_card", maskIDCard(paramsDto.IDCard)),
|
||||
zap.String("mobile_no", maskMobile(paramsDto.MobileNo)),
|
||||
)
|
||||
|
||||
subProducts := collectDWBG3BF9SubProducts(ctx, paramsDto, deps, log)
|
||||
result := buildDWBG3BF9Response(subProducts)
|
||||
|
||||
respBytes, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
|
||||
log.Info("个人风险档案处理完成", zap.Int("field_count", len(result)))
|
||||
return respBytes, nil
|
||||
}
|
||||
|
||||
// buildDWBG3BF9Response 按 dwbg3BF9OutputSchema 构造最终扁平返回结构
|
||||
func buildDWBG3BF9Response(subProducts map[string]interface{}) map[string]interface{} {
|
||||
result := make(map[string]interface{}, len(dwbg3BF9OutputSchema))
|
||||
for _, field := range dwbg3BF9OutputSchema {
|
||||
if field.Key == dwbg3BF9FieldRA {
|
||||
result[field.Key] = buildDWBG3BF9RA(subProducts)
|
||||
continue
|
||||
}
|
||||
if v, ok := subProducts[field.Key]; ok {
|
||||
result[field.Key] = v
|
||||
} else {
|
||||
result[field.Key] = nil
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
type dwbg3bf9APICall struct {
|
||||
apiCode string
|
||||
fieldName string
|
||||
params map[string]interface{}
|
||||
}
|
||||
|
||||
func collectDWBG3BF9SubProducts(
|
||||
ctx context.Context,
|
||||
params dto.DWBG3BF9Req,
|
||||
deps *processors.ProcessorDependencies,
|
||||
log *zap.Logger,
|
||||
) map[string]interface{} {
|
||||
apiCalls := []dwbg3bf9APICall{
|
||||
{apiCode: "YYSYE7V5", fieldName: dwbg3BF9SubProductFieldNames["YYSYE7V5"], params: map[string]interface{}{"mobile_no": params.MobileNo}},
|
||||
{apiCode: "YYSYP0T4", fieldName: dwbg3BF9SubProductFieldNames["YYSYP0T4"], params: map[string]interface{}{"mobile_no": params.MobileNo}},
|
||||
{
|
||||
apiCode: "YYSYK9R4",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["YYSYK9R4"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "IVYZN2P8",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["IVYZN2P8"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV3HM",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQV3HM"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ4B6C",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQ4B6C"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ5E9F",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQ5E9F"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ3C7B",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQ3C7B"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV7MD",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQV7MD"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQVT43",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQVT43"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV0MD",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["JRZQV0MD"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "FLXG7E8F",
|
||||
fieldName: dwbg3BF9SubProductFieldNames["FLXG7E8F"],
|
||||
params: map[string]interface{}{
|
||||
"name": params.Name,
|
||||
"id_card": params.IDCard,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
type callResult struct {
|
||||
fieldName string
|
||||
data interface{}
|
||||
err error
|
||||
}
|
||||
|
||||
results := make(chan callResult, len(apiCalls))
|
||||
var wg sync.WaitGroup
|
||||
|
||||
for _, apiCall := range apiCalls {
|
||||
wg.Add(1)
|
||||
go func(ac dwbg3bf9APICall) {
|
||||
defer wg.Done()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Error("调用子产品处理器时发生panic",
|
||||
zap.String("api_code", ac.apiCode),
|
||||
zap.String("field_name", ac.fieldName),
|
||||
zap.Any("panic", r),
|
||||
)
|
||||
results <- callResult{ac.fieldName, nil, fmt.Errorf("处理器panic: %v", r)}
|
||||
}
|
||||
}()
|
||||
|
||||
paramsBytes, err := json.Marshal(ac.params)
|
||||
if err != nil {
|
||||
results <- callResult{ac.fieldName, nil, err}
|
||||
return
|
||||
}
|
||||
|
||||
data, err := callProcessor(ctx, ac.apiCode, paramsBytes, deps)
|
||||
results <- callResult{ac.fieldName, data, err}
|
||||
}(apiCall)
|
||||
}
|
||||
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(results)
|
||||
}()
|
||||
|
||||
output := make(map[string]interface{}, len(apiCalls))
|
||||
successCount := 0
|
||||
for result := range results {
|
||||
if result.err != nil {
|
||||
log.Warn("子产品调用失败,该字段置空",
|
||||
zap.String("field_name", result.fieldName),
|
||||
zap.Error(result.err),
|
||||
)
|
||||
output[result.fieldName] = nil
|
||||
continue
|
||||
}
|
||||
output[result.fieldName] = stripDWBG3BF9MetaKeys(result.data)
|
||||
successCount++
|
||||
}
|
||||
|
||||
log.Info("子产品调用完成",
|
||||
zap.Int("total", len(apiCalls)),
|
||||
zap.Int("success", successCount),
|
||||
zap.Int("failed", len(apiCalls)-successCount),
|
||||
)
|
||||
|
||||
return output
|
||||
}
|
||||
@@ -49,17 +49,17 @@ const (
|
||||
xypModelScoreRiskCapPerField = 97 // 单项上限,三项合计最高 291
|
||||
)
|
||||
|
||||
// buildDWBG9FB3RA 构建顶层 RA 总体安全评估(千分制,分值越高越安全)
|
||||
// buildDWBG3BF9RA 构建顶层 RA 总体安全评估(千分制,分值越高越安全)
|
||||
//
|
||||
// 输出字段来源:
|
||||
// - ra_fraud_score → calcRAFraudScore(辅助输出,不参与 ra_score 加权)
|
||||
// - ra_credit_score → calcRACreditScore
|
||||
// - ra_judicial_score → calcRAJudicialScore
|
||||
// - ra_verify_score → calcRAVerifyScore
|
||||
// - ra_score → 本方法,身份 10% 固定 + 司法/借贷动态加权
|
||||
// - ra_level → raLevelFromScore(ra_score),司法+借贷双高时强制 F 档(分数仍加权,上限 500)
|
||||
func buildDWBG9FB3RA(data map[string]interface{}) map[string]interface{} {
|
||||
fraudScore := calcRAFraudScore(data)
|
||||
// 输出字段(对外):
|
||||
// - ra_score / ra_level → 综合安全分与等级
|
||||
// - ra_credit_score → 借贷维度安全分(参与加权)
|
||||
// - ra_verify_score → 个人身份区安全分(参与加权)
|
||||
// - ra_credit_risk_index → 信用风险指数(越高风险越大,与 ra_score 同向)
|
||||
// - ra_performance_amt_index → 履约金额综合指数(越高越好)
|
||||
// - ra_performance_cnt_index → 履约笔数综合指数(越高越好)
|
||||
// 内部仍计算 fraud/judicial 分用于 ra_score 加权,但不对外返回。
|
||||
func buildDWBG3BF9RA(data map[string]interface{}) map[string]interface{} {
|
||||
creditScore := calcRACreditScore(data)
|
||||
judicialScore := calcRAJudicialScore(data)
|
||||
verifyScore := calcRAVerifyScore(data)
|
||||
@@ -72,12 +72,13 @@ func buildDWBG9FB3RA(data map[string]interface{}) map[string]interface{} {
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
"ra_score": total,
|
||||
"ra_level": level,
|
||||
"ra_fraud_score": fraudScore,
|
||||
"ra_credit_score": creditScore,
|
||||
"ra_judicial_score": judicialScore,
|
||||
"ra_verify_score": verifyScore,
|
||||
"ra_score": total,
|
||||
"ra_level": level,
|
||||
"ra_credit_score": creditScore,
|
||||
"ra_verify_score": verifyScore,
|
||||
"ra_credit_risk_index": calcRACreditRiskIndex(data, creditScore),
|
||||
"ra_performance_amt_index": calcRAPerformanceAmtIndex(data),
|
||||
"ra_performance_cnt_index": calcRAPerformanceCntIndex(data),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,13 +211,13 @@ func toRASafetyScore(riskPoints int) int {
|
||||
return clampRAInt(raScoreMax-riskPoints, 0, raScoreMax)
|
||||
}
|
||||
|
||||
// calcRAFraudScore 欺诈/黑名单维度安全分(来源:calcRAFraudRiskPoints)
|
||||
// 统计方式:满分 1000,根据 behavior/complaint/fraud/special 风险信号扣分后取补集
|
||||
// calcRAFraudScore 欺诈/黑名单子维度安全分(来源:calcRAFraudRiskPoints)
|
||||
// 统计方式:满分 1000,根据 behavior/complaint/fraud/special 风险信号扣分后取补集;同时计入 ra_verify_score
|
||||
func calcRAFraudScore(data map[string]interface{}) int {
|
||||
return toRASafetyScore(calcRAFraudRiskPoints(data))
|
||||
}
|
||||
|
||||
// calcRAFraudRiskPoints 统计欺诈维度风险扣分(仅内部使用,分值越高代表越不安全)
|
||||
// calcRAFraudRiskPoints 统计欺诈维度风险扣分(计入个人身份区,分值越高代表越不安全)
|
||||
// 每命中一项扣 raFraudPointsPerHit(23)分,多项独立累加
|
||||
func calcRAFraudRiskPoints(data map[string]interface{}) int {
|
||||
hits := 0
|
||||
@@ -376,13 +377,13 @@ func calcRAJudicialRiskPoints(data map[string]interface{}) int {
|
||||
return clampRAInt(risk, 0, raScoreMax)
|
||||
}
|
||||
|
||||
// calcRAVerifyScore 身份/在网核验维度安全分(来源:calcRAVerifyRiskPoints)
|
||||
// 统计方式:满分 1000,根据 triple/identity/presence 核验异常扣分后取补集
|
||||
// calcRAVerifyScore 个人身份区安全分(来源:calcRAVerifyRiskPoints)
|
||||
// 统计方式:满分 1000,核验异常 + 欺诈/黑名单信号扣分后取补集,参与 ra_score 10% 加权
|
||||
func calcRAVerifyScore(data map[string]interface{}) int {
|
||||
return toRASafetyScore(calcRAVerifyRiskPoints(data))
|
||||
}
|
||||
|
||||
// calcRAVerifyRiskPoints 统计核验维度风险扣分
|
||||
// calcRAVerifyRiskPoints 统计个人身份区风险扣分(核验 + 欺诈/黑名单)
|
||||
func calcRAVerifyRiskPoints(data map[string]interface{}) int {
|
||||
risk := 0
|
||||
|
||||
@@ -411,6 +412,9 @@ func calcRAVerifyRiskPoints(data map[string]interface{}) int {
|
||||
}
|
||||
}
|
||||
|
||||
// 来源子字段 behavior / complaint / fraud / special(欺诈/黑名单,与 calcRAFraudRiskPoints 一致)
|
||||
risk += calcRAFraudRiskPoints(data)
|
||||
|
||||
return clampRAInt(risk, 0, raScoreMax)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,234 @@
|
||||
package dwbg
|
||||
|
||||
import (
|
||||
"math"
|
||||
"regexp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// raIndexField 借选指数区间桶加权项
|
||||
type raIndexField struct {
|
||||
key string
|
||||
weight float64
|
||||
failure bool // true 表示桶值越高表现越差(如失败次数、距上次成功天数)
|
||||
}
|
||||
|
||||
// 履约金额:成功金额 + 历史还款总额,扣减失败金额
|
||||
var raPerformanceAmtFields = []raIndexField{
|
||||
{key: "xyp_t01aazzzc", weight: 0.30},
|
||||
{key: "xyp_cpl0035", weight: 0.12},
|
||||
{key: "xyp_cpl0037", weight: 0.14},
|
||||
{key: "xyp_cpl0039", weight: 0.14},
|
||||
{key: "xyp_cpl0041", weight: 0.12},
|
||||
{key: "xyp_cpl0034", weight: 0.09, failure: true},
|
||||
{key: "xyp_cpl0036", weight: 0.09, failure: true},
|
||||
}
|
||||
|
||||
// 履约笔数:成功笔数,扣减失败笔数及距上次成功天数
|
||||
var raPerformanceCntFields = []raIndexField{
|
||||
{key: "xyp_cpl0019", weight: 0.12},
|
||||
{key: "xyp_cpl0021", weight: 0.14},
|
||||
{key: "xyp_cpl0023", weight: 0.14},
|
||||
{key: "xyp_cpl0025", weight: 0.12},
|
||||
{key: "xyp_cpl0027", weight: 0.10},
|
||||
{key: "xyp_cpl0068", weight: 0.18, failure: true},
|
||||
{key: "xyp_cpl0018", weight: 0.06, failure: true},
|
||||
{key: "xyp_cpl0020", weight: 0.07, failure: true},
|
||||
{key: "xyp_cpl0022", weight: 0.07, failure: true},
|
||||
}
|
||||
|
||||
var raProbeOverdueAmtPattern = regexp.MustCompile(`(\d+)`)
|
||||
|
||||
// calcRACreditRiskIndex 信用风险指数(0-1000,越高信用风险越大,与 ra_score 方向一致)
|
||||
func calcRACreditRiskIndex(data map[string]interface{}, creditSafetyScore int) int {
|
||||
riskFromModel := raScoreMax - creditSafetyScore
|
||||
|
||||
rating := raAsMap(data["rating"])
|
||||
if rating == nil {
|
||||
return riskFromModel
|
||||
}
|
||||
|
||||
raw := raAsString(rating["xyp_cpl0081"])
|
||||
if raw == "" || raw == "0" || raw == "-1" {
|
||||
return riskFromModel
|
||||
}
|
||||
|
||||
v, ok := raParseFloat(raw)
|
||||
if !ok || v < 0 || v > 1 {
|
||||
return riskFromModel
|
||||
}
|
||||
|
||||
riskFromRating := int(math.Round(v * float64(raScoreMax)))
|
||||
if riskFromRating > riskFromModel {
|
||||
return riskFromRating
|
||||
}
|
||||
return riskFromModel
|
||||
}
|
||||
|
||||
// calcRAPerformanceAmtIndex 履约金额综合指数(0-1000,越高履约金额表现越好)
|
||||
func calcRAPerformanceAmtIndex(data map[string]interface{}) int {
|
||||
rating := raAsMap(data["rating"])
|
||||
probe := raAsMap(data["probe"])
|
||||
|
||||
if rating != nil {
|
||||
if idx, ok := calcRACompositeBucketIndex(rating, raPerformanceAmtFields); ok {
|
||||
if probe != nil {
|
||||
probeIdx := calcRAPerformanceAmtIndexFromProbe(probe)
|
||||
return clampRAInt(int(math.Round(float64(idx)*0.75+float64(probeIdx)*0.25)), 0, raScoreMax)
|
||||
}
|
||||
return idx
|
||||
}
|
||||
}
|
||||
if probe != nil {
|
||||
return calcRAPerformanceAmtIndexFromProbe(probe)
|
||||
}
|
||||
return 500
|
||||
}
|
||||
|
||||
// calcRAPerformanceCntIndex 履约笔数综合指数(0-1000,越高履约笔数表现越好)
|
||||
func calcRAPerformanceCntIndex(data map[string]interface{}) int {
|
||||
rating := raAsMap(data["rating"])
|
||||
probe := raAsMap(data["probe"])
|
||||
|
||||
if rating != nil {
|
||||
if idx, ok := calcRACompositeBucketIndex(rating, raPerformanceCntFields); ok {
|
||||
if probe != nil {
|
||||
probeIdx := calcRAPerformanceCntIndexFromProbe(probe)
|
||||
return clampRAInt(int(math.Round(float64(idx)*0.75+float64(probeIdx)*0.25)), 0, raScoreMax)
|
||||
}
|
||||
return idx
|
||||
}
|
||||
}
|
||||
if probe != nil {
|
||||
return calcRAPerformanceCntIndexFromProbe(probe)
|
||||
}
|
||||
return 500
|
||||
}
|
||||
|
||||
func calcRACompositeBucketIndex(rating map[string]interface{}, fields []raIndexField) (int, bool) {
|
||||
totalWeight := 0.0
|
||||
totalScore := 0.0
|
||||
for _, f := range fields {
|
||||
bucket := raAsInt(rating[f.key])
|
||||
if bucket <= 0 {
|
||||
continue
|
||||
}
|
||||
tierScore := raBucketTierScore(bucket)
|
||||
if f.failure {
|
||||
tierScore = raScoreMax - tierScore
|
||||
}
|
||||
totalScore += float64(tierScore) * f.weight
|
||||
totalWeight += f.weight
|
||||
}
|
||||
if totalWeight == 0 {
|
||||
return 0, false
|
||||
}
|
||||
return clampRAInt(int(math.Round(totalScore/totalWeight)), 0, raScoreMax), true
|
||||
}
|
||||
|
||||
func raBucketTierScore(bucket int) int {
|
||||
switch {
|
||||
case bucket <= 0:
|
||||
return 0
|
||||
case bucket == 1:
|
||||
return 280
|
||||
case bucket == 2:
|
||||
return 530
|
||||
case bucket == 3:
|
||||
return 760
|
||||
default:
|
||||
return 920
|
||||
}
|
||||
}
|
||||
|
||||
func calcRAPerformanceAmtIndexFromProbe(probe map[string]interface{}) int {
|
||||
score := 620
|
||||
|
||||
switch raAsString(probe["currently_performance"]) {
|
||||
case "1":
|
||||
score += 180
|
||||
case "0":
|
||||
score -= 280
|
||||
}
|
||||
|
||||
if raAsString(probe["currently_overdue"]) == "1" {
|
||||
score -= raProbeOverdueAmtPenalty(probe["max_overdue_amt"])
|
||||
}
|
||||
if raAsString(probe["acc_sleep"]) == "1" {
|
||||
score -= 80
|
||||
}
|
||||
if raAsString(probe["acc_exc"]) == "1" {
|
||||
score -= 60
|
||||
}
|
||||
|
||||
return clampRAInt(score, 0, raScoreMax)
|
||||
}
|
||||
|
||||
func calcRAPerformanceCntIndexFromProbe(probe map[string]interface{}) int {
|
||||
score := 580
|
||||
|
||||
switch raAsString(probe["currently_performance"]) {
|
||||
case "1":
|
||||
score += 220
|
||||
case "0":
|
||||
score -= 260
|
||||
}
|
||||
if raAsString(probe["currently_overdue"]) == "1" {
|
||||
score -= 150
|
||||
}
|
||||
if raAsString(probe["result_code"]) == "1" {
|
||||
score -= 120
|
||||
}
|
||||
if raAsString(probe["acc_sleep"]) == "1" {
|
||||
score -= 90
|
||||
}
|
||||
if raAsString(probe["acc_exc"]) == "1" {
|
||||
score -= 70
|
||||
}
|
||||
|
||||
return clampRAInt(score, 0, raScoreMax)
|
||||
}
|
||||
|
||||
func raProbeOverdueAmtPenalty(v interface{}) int {
|
||||
mid := raProbeAmtMidpoint(v)
|
||||
switch {
|
||||
case mid >= 10000:
|
||||
return 280
|
||||
case mid >= 4000:
|
||||
return 200
|
||||
case mid >= 1000:
|
||||
return 120
|
||||
case mid > 0:
|
||||
return 60
|
||||
default:
|
||||
return 100
|
||||
}
|
||||
}
|
||||
|
||||
func raProbeAmtMidpoint(v interface{}) int {
|
||||
s := raAsString(v)
|
||||
if s == "" {
|
||||
return 0
|
||||
}
|
||||
matches := raProbeOverdueAmtPattern.FindAllString(s, -1)
|
||||
if len(matches) == 0 {
|
||||
return 0
|
||||
}
|
||||
if len(matches) == 1 {
|
||||
return raAsInt(matches[0])
|
||||
}
|
||||
low := raAsInt(matches[0])
|
||||
high := raAsInt(matches[len(matches)-1])
|
||||
if high <= 0 {
|
||||
return low
|
||||
}
|
||||
return (low + high) / 2
|
||||
}
|
||||
|
||||
func raParseFloat(raw string) (float64, bool) {
|
||||
f, err := strconv.ParseFloat(raw, 64)
|
||||
if err != nil || math.IsNaN(f) || math.IsInf(f, 0) {
|
||||
return 0, false
|
||||
}
|
||||
return f, true
|
||||
}
|
||||
@@ -8,10 +8,10 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildDWBG9FB3RAFromSample(t *testing.T) {
|
||||
raw, err := os.ReadFile(filepath.Join("DWBG9FB3.json"))
|
||||
func TestBuildDWBG3BF9RAFromSample(t *testing.T) {
|
||||
raw, err := os.ReadFile(filepath.Join("DWBG3BF9.json"))
|
||||
if err != nil {
|
||||
t.Skip("DWBG9FB3.json not found")
|
||||
t.Skip("DWBG3BF9.json not found")
|
||||
}
|
||||
|
||||
var data map[string]interface{}
|
||||
@@ -19,15 +19,16 @@ func TestBuildDWBG9FB3RAFromSample(t *testing.T) {
|
||||
t.Fatalf("unmarshal sample: %v", err)
|
||||
}
|
||||
|
||||
ra := buildDWBG9FB3RA(data)
|
||||
ra := buildDWBG3BF9RA(data)
|
||||
|
||||
required := []string{
|
||||
"ra_score",
|
||||
"ra_level",
|
||||
"ra_fraud_score",
|
||||
"ra_credit_score",
|
||||
"ra_judicial_score",
|
||||
"ra_verify_score",
|
||||
"ra_credit_risk_index",
|
||||
"ra_performance_amt_index",
|
||||
"ra_performance_cnt_index",
|
||||
}
|
||||
for _, key := range required {
|
||||
if _, ok := ra[key]; !ok {
|
||||
@@ -35,6 +36,13 @@ func TestBuildDWBG9FB3RAFromSample(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
hidden := []string{"ra_fraud_score", "ra_judicial_score"}
|
||||
for _, key := range hidden {
|
||||
if _, ok := ra[key]; ok {
|
||||
t.Fatalf("RA should not expose %s", key)
|
||||
}
|
||||
}
|
||||
|
||||
score := raAsInt(ra["ra_score"])
|
||||
if score < 0 || score > raScoreMax {
|
||||
t.Fatalf("ra_score out of range: %d", score)
|
||||
@@ -46,13 +54,27 @@ func TestBuildDWBG9FB3RAFromSample(t *testing.T) {
|
||||
t.Fatalf("invalid ra_level: %s", level)
|
||||
}
|
||||
|
||||
t.Logf("RA sample: score=%d level=%s fraud=%d credit=%d judicial=%d verify=%d",
|
||||
if raAsString(ra["ra_level"]) != "D" {
|
||||
t.Fatalf("sample ra_level want D, got %s", raAsString(ra["ra_level"]))
|
||||
}
|
||||
if raAsInt(ra["ra_credit_risk_index"]) != 1000 {
|
||||
t.Fatalf("sample credit risk index want 1000, got %d", raAsInt(ra["ra_credit_risk_index"]))
|
||||
}
|
||||
if raAsInt(ra["ra_performance_amt_index"]) != 60 {
|
||||
t.Fatalf("sample perf amt index want 60, got %d", raAsInt(ra["ra_performance_amt_index"]))
|
||||
}
|
||||
if raAsInt(ra["ra_performance_cnt_index"]) != 0 {
|
||||
t.Fatalf("sample perf cnt index want 0, got %d", raAsInt(ra["ra_performance_cnt_index"]))
|
||||
}
|
||||
|
||||
t.Logf("RA sample: score=%d level=%s credit=%d verify=%d creditRisk=%d perfAmt=%d perfCnt=%d",
|
||||
raAsInt(ra["ra_score"]),
|
||||
level,
|
||||
raAsInt(ra["ra_fraud_score"]),
|
||||
raAsInt(ra["ra_credit_score"]),
|
||||
raAsInt(ra["ra_judicial_score"]),
|
||||
raAsInt(ra["ra_verify_score"]),
|
||||
raAsInt(ra["ra_credit_risk_index"]),
|
||||
raAsInt(ra["ra_performance_amt_index"]),
|
||||
raAsInt(ra["ra_performance_cnt_index"]),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -92,7 +114,7 @@ func TestSafetyScoreHigherIsSafer(t *testing.T) {
|
||||
"identity": map[string]interface{}{"result": 0},
|
||||
"presence": map[string]interface{}{"desc": "正常", "status": 1},
|
||||
}
|
||||
ra := buildDWBG9FB3RA(clean)
|
||||
ra := buildDWBG3BF9RA(clean)
|
||||
if raAsInt(ra["ra_score"]) < 800 {
|
||||
t.Fatalf("clean data should have safety score >= 800, got %d", raAsInt(ra["ra_score"]))
|
||||
}
|
||||
@@ -156,7 +178,7 @@ func TestRAForcedFGrade(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
ra := buildDWBG9FB3RA(data)
|
||||
ra := buildDWBG3BF9RA(data)
|
||||
// 司法 197 + 借贷 0,双风险权重 70%/20%,身份 1000 → 加权分 238,强制 F 档保留分数
|
||||
if raAsInt(ra["ra_score"]) != 238 {
|
||||
t.Fatalf("forced F should keep weighted ra_score=238, got %d", raAsInt(ra["ra_score"]))
|
||||
@@ -251,7 +273,7 @@ func TestRAForcedFGradeScoreCap(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
ra := buildDWBG9FB3RA(data)
|
||||
ra := buildDWBG3BF9RA(data)
|
||||
score := raAsInt(ra["ra_score"])
|
||||
if score > raForcedFScoreCap {
|
||||
t.Fatalf("forced F score should be capped at %d, got %d", raForcedFScoreCap, score)
|
||||
@@ -313,6 +335,39 @@ func TestCalcRARatingXypModelRiskPoints(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRAVerifyScoreIncludesFraudSignals(t *testing.T) {
|
||||
base := map[string]interface{}{
|
||||
"triple": map[string]interface{}{"state": "1"},
|
||||
"identity": map[string]interface{}{"result": 0},
|
||||
"presence": map[string]interface{}{"desc": "正常", "status": 1},
|
||||
"behavior": map[string]interface{}{"result": map[string]interface{}{"black_list": "0"}},
|
||||
"fraud": nil,
|
||||
"special": nil,
|
||||
}
|
||||
if got := calcRAVerifyScore(base); got != raScoreMax {
|
||||
t.Fatalf("clean verify want %d, got %d", raScoreMax, got)
|
||||
}
|
||||
|
||||
withComplaint := map[string]interface{}{
|
||||
"triple": map[string]interface{}{"state": "1"},
|
||||
"identity": map[string]interface{}{"result": 0},
|
||||
"presence": map[string]interface{}{"desc": "正常", "status": 1},
|
||||
"behavior": map[string]interface{}{"result": map[string]interface{}{"black_list": "0"}},
|
||||
"complaint": map[string]interface{}{
|
||||
"result": map[string]interface{}{"score": 11},
|
||||
},
|
||||
"fraud": nil,
|
||||
"special": nil,
|
||||
}
|
||||
want := raScoreMax - raFraudPointsPerHit
|
||||
if got := calcRAVerifyScore(withComplaint); got != want {
|
||||
t.Fatalf("verify with fraud signal want %d, got %d", want, got)
|
||||
}
|
||||
if got := calcRAFraudScore(withComplaint); got != want {
|
||||
t.Fatalf("fraud sub-score should match fraud-only deduction, want %d, got %d", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRAScoreWeightedSum(t *testing.T) {
|
||||
verify, judicial, credit := 920, 980, 760
|
||||
wJ, wC := calcRADynamicWeights(judicial, credit)
|
||||
@@ -0,0 +1,48 @@
|
||||
package dwbg
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
|
||||
"tyapi-server/internal/domains/api/dto"
|
||||
"tyapi-server/internal/domains/api/services/processors"
|
||||
"tyapi-server/internal/infrastructure/external/nuoer"
|
||||
)
|
||||
|
||||
// ProcessDWBG9FB2Request DWBG9FB2 API处理方法 - 个人风险档案2
|
||||
func ProcessDWBG9FB2Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||
var paramsDto dto.DWBG9FB2Req
|
||||
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
|
||||
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
|
||||
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||
}
|
||||
|
||||
body := map[string]string{
|
||||
"name": paramsDto.Name,
|
||||
"idCard": paramsDto.IDCard,
|
||||
"mobile": paramsDto.MobileNo,
|
||||
}
|
||||
|
||||
nuoerDoCheckAPIKey := "gamaReportPageP02"
|
||||
ApiPath := "/v1/doCheck"
|
||||
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||
if err != nil {
|
||||
if errors.Is(err, nuoer.ErrDatasource) {
|
||||
return nil, errors.Join(processors.ErrDatasource, err)
|
||||
}
|
||||
if errors.Is(err, nuoer.ErrNotFound) {
|
||||
return nil, errors.Join(processors.ErrNotFound, err)
|
||||
}
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
|
||||
respBytes, err := json.Marshal(resp.Data)
|
||||
if err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
return respBytes, nil
|
||||
}
|
||||
@@ -1,224 +0,0 @@
|
||||
# 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[英文字段名]子处理器原始数据`。
|
||||
- 子产品数据保持各处理器原有返回结构,不做二次转换。
|
||||
@@ -4,110 +4,13 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"tyapi-server/internal/domains/api/dto"
|
||||
"tyapi-server/internal/domains/api/services/processors"
|
||||
"tyapi-server/internal/shared/logger"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"tyapi-server/internal/infrastructure/external/nuoer"
|
||||
)
|
||||
|
||||
const dwbg9FB3FieldRA = "RA"
|
||||
|
||||
// dwbg9FB3OutputField 最终扁平结构中的单个顶层字段定义
|
||||
type dwbg9FB3OutputField struct {
|
||||
Key string // 顶层 JSON key
|
||||
ApiCode string // 子产品编码;RA 由聚合计算,无 ApiCode
|
||||
Source string // 数据来源方法
|
||||
}
|
||||
|
||||
// dwbg9FB3OutputSchema DWBG9FB3 最终返回扁平结构(顶层共 13 个 key)
|
||||
//
|
||||
// {
|
||||
// "RA": { ra_score, ra_level, ra_fraud_score, ra_credit_score, ra_judicial_score, ra_verify_score },
|
||||
// "presence": { ... }, // YYSYE7V5
|
||||
// "duration": { ... }, // YYSYP0T4
|
||||
// "triple": { ... }, // YYSYK9R4
|
||||
// "identity": { ... }, // IVYZN2P8
|
||||
// "fraud": { ... }, // JRZQV3HM
|
||||
// "probe": { ... }, // JRZQ4B6C
|
||||
// "rating": { ... }, // JRZQ5E9F
|
||||
// "intent": { ... }, // JRZQ3C7B
|
||||
// "special": { ... }, // JRZQV7MD
|
||||
// "complaint": { ... }, // JRZQVT43
|
||||
// "behavior": { ... }, // JRZQV0MD
|
||||
// "judicial": { ... }, // FLXG7E8F
|
||||
// }
|
||||
var dwbg9FB3OutputSchema = []dwbg9FB3OutputField{
|
||||
{Key: dwbg9FB3FieldRA, Source: "buildDWBG9FB3RA"},
|
||||
{Key: "presence", ApiCode: "YYSYE7V5", Source: "ProcessYYSYE7V5Request"},
|
||||
{Key: "duration", ApiCode: "YYSYP0T4", Source: "ProcessYYSYP0T4Request"},
|
||||
{Key: "triple", ApiCode: "YYSYK9R4", Source: "ProcessYYSYK9R4Request"},
|
||||
{Key: "identity", ApiCode: "IVYZN2P8", Source: "ProcessIVYZN2P8Request"},
|
||||
{Key: "fraud", ApiCode: "JRZQV3HM", Source: "ProcessJRZQV3HMRequest"},
|
||||
{Key: "probe", ApiCode: "JRZQ4B6C", Source: "ProcessJRZQ4B6CRequest"},
|
||||
{Key: "rating", ApiCode: "JRZQ5E9F", Source: "ProcessJRZQ5E9FRequest"},
|
||||
{Key: "intent", ApiCode: "JRZQ3C7B", Source: "ProcessJRZQ3C7BRequest"},
|
||||
{Key: "special", ApiCode: "JRZQV7MD", Source: "ProcessJRZQV7MDRequest"},
|
||||
{Key: "complaint", ApiCode: "JRZQVT43", Source: "ProcessJRZQVT43Request"},
|
||||
{Key: "behavior", ApiCode: "JRZQV0MD", Source: "ProcessJRZQV0MDRequest"},
|
||||
{Key: "judicial", ApiCode: "FLXG7E8F", Source: "ProcessFLXG7E8FRequest"},
|
||||
}
|
||||
|
||||
// dwbg9FB3OutputFieldOrder 最终 JSON 顶层字段顺序
|
||||
var dwbg9FB3OutputFieldOrder = func() []string {
|
||||
order := make([]string, len(dwbg9FB3OutputSchema))
|
||||
for i, f := range dwbg9FB3OutputSchema {
|
||||
order[i] = f.Key
|
||||
}
|
||||
return order
|
||||
}()
|
||||
|
||||
// dwbg9FB3SubProductFieldNames 子产品编码 → 响应字段名
|
||||
var dwbg9FB3SubProductFieldNames = func() map[string]string {
|
||||
m := make(map[string]string, len(dwbg9FB3OutputSchema)-1)
|
||||
for _, f := range dwbg9FB3OutputSchema {
|
||||
if f.ApiCode == "" {
|
||||
continue
|
||||
}
|
||||
m[f.ApiCode] = f.Key
|
||||
}
|
||||
return m
|
||||
}()
|
||||
|
||||
// dwbg9FB3StripKeys 汇总报告中需剔除的上游流水号/追踪类字段
|
||||
var dwbg9FB3StripKeys = map[string]struct{}{
|
||||
"order_no": {},
|
||||
"orderNo": {},
|
||||
}
|
||||
|
||||
// stripDWBG9FB3MetaKeys 递归剔除子接口返回中的流水号等元数据字段
|
||||
func stripDWBG9FB3MetaKeys(v interface{}) interface{} {
|
||||
switch val := v.(type) {
|
||||
case map[string]interface{}:
|
||||
out := make(map[string]interface{}, len(val))
|
||||
for k, item := range val {
|
||||
if _, drop := dwbg9FB3StripKeys[k]; drop {
|
||||
continue
|
||||
}
|
||||
out[k] = stripDWBG9FB3MetaKeys(item)
|
||||
}
|
||||
return out
|
||||
case []interface{}:
|
||||
out := make([]interface{}, len(val))
|
||||
for i, item := range val {
|
||||
out[i] = stripDWBG9FB3MetaKeys(item)
|
||||
}
|
||||
return out
|
||||
default:
|
||||
return v
|
||||
}
|
||||
}
|
||||
|
||||
// ProcessDWBG9FB3Request DWBG9FB3 API处理方法 - 个人风险档案
|
||||
// 并发调用子产品处理器,将各子接口返回数据以大数据英文字段名拼接融合为一个对象
|
||||
// ProcessDWBG9FB3Request DWBG9FB3 API处理方法 - 个人风险档案1
|
||||
func ProcessDWBG9FB3Request(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
|
||||
var paramsDto dto.DWBG9FB3Req
|
||||
if err := json.Unmarshal(params, ¶msDto); err != nil {
|
||||
@@ -118,211 +21,28 @@ func ProcessDWBG9FB3Request(ctx context.Context, params []byte, deps *processors
|
||||
return nil, errors.Join(processors.ErrInvalidParam, err)
|
||||
}
|
||||
|
||||
log := logger.GetGlobalLogger()
|
||||
log.Info("开始处理个人风险档案请求",
|
||||
zap.String("name", paramsDto.Name),
|
||||
zap.String("id_card", maskIDCard(paramsDto.IDCard)),
|
||||
zap.String("mobile_no", maskMobile(paramsDto.MobileNo)),
|
||||
)
|
||||
body := map[string]string{
|
||||
"name": paramsDto.Name,
|
||||
"idCard": paramsDto.IDCard,
|
||||
"mobile": paramsDto.MobileNo,
|
||||
}
|
||||
|
||||
subProducts := collectDWBG9FB3SubProducts(ctx, paramsDto, deps, log)
|
||||
result := buildDWBG9FB3Response(subProducts)
|
||||
|
||||
respBytes, err := json.Marshal(result)
|
||||
nuoerDoCheckAPIKey := "gamaReportPageP01"
|
||||
ApiPath := "/v1/doCheck"
|
||||
resp, err := deps.NuoerService.CallAPI(ctx, nuoerDoCheckAPIKey, ApiPath, body)
|
||||
if err != nil {
|
||||
if errors.Is(err, nuoer.ErrDatasource) {
|
||||
return nil, errors.Join(processors.ErrDatasource, err)
|
||||
}
|
||||
if errors.Is(err, nuoer.ErrNotFound) {
|
||||
return nil, errors.Join(processors.ErrNotFound, err)
|
||||
}
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
|
||||
log.Info("个人风险档案处理完成", zap.Int("field_count", len(result)))
|
||||
respBytes, err := json.Marshal(resp.Data)
|
||||
if err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
return respBytes, nil
|
||||
}
|
||||
|
||||
// buildDWBG9FB3Response 按 dwbg9FB3OutputSchema 构造最终扁平返回结构
|
||||
func buildDWBG9FB3Response(subProducts map[string]interface{}) map[string]interface{} {
|
||||
result := make(map[string]interface{}, len(dwbg9FB3OutputSchema))
|
||||
for _, field := range dwbg9FB3OutputSchema {
|
||||
if field.Key == dwbg9FB3FieldRA {
|
||||
result[field.Key] = buildDWBG9FB3RA(subProducts)
|
||||
continue
|
||||
}
|
||||
if v, ok := subProducts[field.Key]; ok {
|
||||
result[field.Key] = v
|
||||
} else {
|
||||
result[field.Key] = nil
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
type dwbg9fb3APICall struct {
|
||||
apiCode string
|
||||
fieldName string
|
||||
params map[string]interface{}
|
||||
}
|
||||
|
||||
func collectDWBG9FB3SubProducts(
|
||||
ctx context.Context,
|
||||
params dto.DWBG9FB3Req,
|
||||
deps *processors.ProcessorDependencies,
|
||||
log *zap.Logger,
|
||||
) map[string]interface{} {
|
||||
apiCalls := []dwbg9fb3APICall{
|
||||
{apiCode: "YYSYE7V5", fieldName: dwbg9FB3SubProductFieldNames["YYSYE7V5"], params: map[string]interface{}{"mobile_no": params.MobileNo}},
|
||||
{apiCode: "YYSYP0T4", fieldName: dwbg9FB3SubProductFieldNames["YYSYP0T4"], params: map[string]interface{}{"mobile_no": params.MobileNo}},
|
||||
{
|
||||
apiCode: "YYSYK9R4",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["YYSYK9R4"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "IVYZN2P8",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["IVYZN2P8"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV3HM",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQV3HM"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ4B6C",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQ4B6C"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ5E9F",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQ5E9F"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQ3C7B",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQ3C7B"],
|
||||
params: map[string]interface{}{
|
||||
"mobile_no": params.MobileNo,
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"authorized": "1",
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV7MD",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQV7MD"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQVT43",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQVT43"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "JRZQV0MD",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["JRZQV0MD"],
|
||||
params: map[string]interface{}{
|
||||
"id_card": params.IDCard,
|
||||
"name": params.Name,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
{
|
||||
apiCode: "FLXG7E8F",
|
||||
fieldName: dwbg9FB3SubProductFieldNames["FLXG7E8F"],
|
||||
params: map[string]interface{}{
|
||||
"name": params.Name,
|
||||
"id_card": params.IDCard,
|
||||
"mobile_no": params.MobileNo,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
type callResult struct {
|
||||
fieldName string
|
||||
data interface{}
|
||||
err error
|
||||
}
|
||||
|
||||
results := make(chan callResult, len(apiCalls))
|
||||
var wg sync.WaitGroup
|
||||
|
||||
for _, apiCall := range apiCalls {
|
||||
wg.Add(1)
|
||||
go func(ac dwbg9fb3APICall) {
|
||||
defer wg.Done()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
log.Error("调用子产品处理器时发生panic",
|
||||
zap.String("api_code", ac.apiCode),
|
||||
zap.String("field_name", ac.fieldName),
|
||||
zap.Any("panic", r),
|
||||
)
|
||||
results <- callResult{ac.fieldName, nil, fmt.Errorf("处理器panic: %v", r)}
|
||||
}
|
||||
}()
|
||||
|
||||
paramsBytes, err := json.Marshal(ac.params)
|
||||
if err != nil {
|
||||
results <- callResult{ac.fieldName, nil, err}
|
||||
return
|
||||
}
|
||||
|
||||
data, err := callProcessor(ctx, ac.apiCode, paramsBytes, deps)
|
||||
results <- callResult{ac.fieldName, data, err}
|
||||
}(apiCall)
|
||||
}
|
||||
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(results)
|
||||
}()
|
||||
|
||||
output := make(map[string]interface{}, len(apiCalls))
|
||||
successCount := 0
|
||||
for result := range results {
|
||||
if result.err != nil {
|
||||
log.Warn("子产品调用失败,该字段置空",
|
||||
zap.String("field_name", result.fieldName),
|
||||
zap.Error(result.err),
|
||||
)
|
||||
output[result.fieldName] = nil
|
||||
continue
|
||||
}
|
||||
output[result.fieldName] = stripDWBG9FB3MetaKeys(result.data)
|
||||
successCount++
|
||||
}
|
||||
|
||||
log.Info("子产品调用完成",
|
||||
zap.Int("total", len(apiCalls)),
|
||||
zap.Int("success", successCount),
|
||||
zap.Int("failed", len(apiCalls)-successCount),
|
||||
)
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
@@ -1,139 +0,0 @@
|
||||
# DWBG9FB3 RA 安全评估 — 千分制计算说明
|
||||
|
||||
## 核心原则
|
||||
|
||||
- 所有分值为**千分制(0-1000)**
|
||||
- **分值越高越安全**(与风险扣分相反)
|
||||
- 各维度先统计**风险扣分**,再换算:**安全分 = 1000 - 风险扣分**
|
||||
|
||||
## 字段与方法对应关系
|
||||
|
||||
| 输出字段 | 计算方法 | 统计逻辑 |
|
||||
| :--- | :--- | :--- |
|
||||
| `ra_fraud_score` | `calcRAFraudScore` | `1000 - calcRAFraudRiskPoints` |
|
||||
| `ra_credit_score` | `calcRACreditScore` | `1000 - calcRACreditRiskPoints` |
|
||||
| `ra_judicial_score` | `calcRAJudicialScore` | `1000 - calcRAJudicialRiskPoints` |
|
||||
| `ra_verify_score` | `calcRAVerifyScore` | `1000 - calcRAVerifyRiskPoints` |
|
||||
| `ra_score` | `buildDWBG9FB3RA` | 四维安全分加权汇总 |
|
||||
| `ra_level` | `raLevelFromScore` | 由 `ra_score` 映射 A-F |
|
||||
|
||||
## 等级划分(越高越安全,每档间隔 100)
|
||||
|
||||
| 等级 | 分数区间 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
| A | 900 - 1000 | 最安全 |
|
||||
| B | 800 - 899 | 较安全 |
|
||||
| C | 700 - 799 | 一般 |
|
||||
| D | 600 - 699 | 较不安全 |
|
||||
| E | 500 - 599 | 不安全 |
|
||||
| F | 0 - 499 | 最不安全 |
|
||||
|
||||
## 综合分公式(ra_score)
|
||||
|
||||
```
|
||||
ra_score = round(
|
||||
ra_fraud_score × 25% +
|
||||
ra_credit_score × 35% +
|
||||
ra_judicial_score × 25% +
|
||||
ra_verify_score × 15%
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 一、ra_fraud_score
|
||||
|
||||
- **方法链:** `calcRAFraudScore` → `calcRAFraudRiskPoints` → `toRASafetyScore`
|
||||
- **数据来源:** `behavior`、`complaint`、`fraud`、`special`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 行为黑名单 | `behavior.result.black_list` | `"1"` | 500 |
|
||||
| 行为黑标签 | `behavior.result.black_tag**` | 任意 `"1"` | 每个 80 |
|
||||
| 投诉风险 | `complaint.result.score` | 有值 | score×10,上限 300 |
|
||||
| 欺诈黑名单 | `fraud.hit` | `1` | 400 |
|
||||
| 特殊名单 | `special.Rule_final_decision` | `Reject` / `Review` | 350 / 200 |
|
||||
|
||||
**安全分 = 1000 - 风险扣分(上限 1000)**
|
||||
|
||||
### 样例(DWBG9FB3.json)
|
||||
|
||||
风险扣分 110 → **ra_fraud_score = 890**
|
||||
|
||||
---
|
||||
|
||||
## 二、ra_credit_score
|
||||
|
||||
- **方法链:** `calcRACreditScore` → `calcRACreditRiskPoints` → `toRASafetyScore`
|
||||
- **数据来源:** `probe`、`intent`、`rating`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 当前逾期 | `probe.currently_overdue` | `"1"` | 300 |
|
||||
| 睡眠账户 | `probe.acc_sleep` | `"1"` | 150 |
|
||||
| 未履约 | `probe.currently_performance` | `"0"` | 100 |
|
||||
| 探针命中 | `probe.result_code` | `"1"` | 100 |
|
||||
| 借贷意向 | `intent.Rule_final_decision` | `Reject` / `Review` | 400 / 250 |
|
||||
| 规则权重 | `intent.Rule_final_weight` | 有值 | weight×5,上限 250 |
|
||||
| 借选指数低 | `rating.score` | 0<score<500 | 500-score,上限 300 |
|
||||
|
||||
### 样例(DWBG9FB3.json)
|
||||
|
||||
风险扣分 1100(截断 1000)→ **ra_credit_score = 0**
|
||||
|
||||
---
|
||||
|
||||
## 三、ra_judicial_score
|
||||
|
||||
- **方法链:** `calcRAJudicialScore` → `calcRAJudicialRiskPoints` → `toRASafetyScore`
|
||||
- **数据来源:** `judicial.judicial_data`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 涉诉总件数 | `lawsuitStat.*.count.count_total` | 各类型累加 | 每件 80,单项上限 400 |
|
||||
| 未结案数 | `lawsuitStat.*.count.count_wei_total` | 各类型累加 | 每件 60,单项上限 300 |
|
||||
| 被告件数 | `lawsuitStat.*.count.count_beigao` | 各类型累加 | 每件 50,单项上限 250 |
|
||||
| 失信案件 | `breachCaseList` 长度 | 每条 | 150,上限 450 |
|
||||
| 限高名单 | `consumptionRestrictionList` 长度 | 每条 | 200,上限 400 |
|
||||
|
||||
### 样例(DWBG9FB3.json)
|
||||
|
||||
风险扣分 420 → **ra_judicial_score = 580**
|
||||
|
||||
---
|
||||
|
||||
## 四、ra_verify_score
|
||||
|
||||
- **方法链:** `calcRAVerifyScore` → `calcRAVerifyRiskPoints` → `toRASafetyScore`
|
||||
- **数据来源:** `triple`、`identity`、`presence`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 三要素不一致 | `triple.state` | 有值且不为 `"1"` | 400 |
|
||||
| 二要素不一致 | `identity.result` | 不为 `0` | 400 |
|
||||
| 在网异常 | `presence.desc` | 含停机/销号/不在网 | 150 |
|
||||
| 状态码异常 | `presence.status` | 大于 `1` | 100 |
|
||||
|
||||
### 样例(DWBG9FB3.json)
|
||||
|
||||
风险扣分 150 → **ra_verify_score = 850**
|
||||
|
||||
---
|
||||
|
||||
## 五、综合分与等级(样例)
|
||||
|
||||
```
|
||||
ra_score = round(890×0.25 + 0×0.35 + 580×0.25 + 850×0.15)
|
||||
= round(222.5 + 0 + 145 + 127.5)
|
||||
= 495
|
||||
ra_level = "F"
|
||||
```
|
||||
|
||||
## 代码位置
|
||||
|
||||
| 方法 | 文件 |
|
||||
| :--- | :--- |
|
||||
| `buildDWBG9FB3RA` | `dwbg9fb3_ra.go` |
|
||||
| `calcRA*Score` / `calcRA*RiskPoints` | `dwbg9fb3_ra.go` |
|
||||
| `toRASafetyScore` | `dwbg9fb3_ra.go` |
|
||||
| `raLevelFromScore` | `dwbg9fb3_ra.go` |
|
||||
@@ -1,374 +0,0 @@
|
||||
# DWBG9FB3 RA 安全评估 — 千分制计算说明(三维度动态权重版)
|
||||
|
||||
> **修订说明**
|
||||
> 本版本采用 **「身份固定 10% + 司法 / 借贷动态 90%」** 的三维度加权模型,突出个人司法与信贷风险的主次关系;司法维度细分为 **涉诉统计、失信被执行人、限高被执行人** 三类独立计分。
|
||||
|
||||
---
|
||||
|
||||
## 一、核心原则
|
||||
|
||||
- 所有分值采用 **千分制(0–1000)**
|
||||
- **分值越高表示越安全**
|
||||
- 统一计算路径:
|
||||
|
||||
```text
|
||||
安全分 = 1000 − 风险扣分(单维上限 1000)
|
||||
```
|
||||
|
||||
- **个人身份信息权重固定 10%,不参与动态调整**
|
||||
- **个人司法信息与借贷信息合计 90%,根据风险场景动态分配**
|
||||
- **司法 + 借贷同时高风险时,强制归入 F 档(仍参与加权,分数上限 500)**
|
||||
|
||||
---
|
||||
|
||||
## 二、综合分三维度结构
|
||||
|
||||
| 业务维度 | 输出字段 | 计算方法 | 基准权重 | 是否动态 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| 个人身份信息 | `ra_verify_score` | `calcRAVerifyScore` | **10%(固定)** | 否 |
|
||||
| 个人司法信息 | `ra_judicial_score` | `calcRAJudicialScore` | **50%(基准)** | 是 |
|
||||
| 借贷信息 | `ra_credit_score` | `calcRACreditScore` | **40%(基准)** | 是 |
|
||||
|
||||
> 基准权重合计:`10% + 50% + 40% = 100%`
|
||||
|
||||
### 辅助输出字段(不参与综合分加权)
|
||||
|
||||
| 输出字段 | 计算方法 | 说明 |
|
||||
| :--- | :--- | :--- |
|
||||
| `ra_fraud_score` | `calcRAFraudScore` | 欺诈 / 黑名单维度,单独输出供业务参考 |
|
||||
| `ra_score` | `buildDWBG9FB3RA` | 三维度动态加权汇总 |
|
||||
| `ra_level` | `raLevelFromScore` | 由 `ra_score` 映射 A–F |
|
||||
|
||||
---
|
||||
|
||||
## 三、等级划分(含 F 级)
|
||||
|
||||
千分制下 **每档间隔 100 分**,F 为 **500 分以下**:
|
||||
|
||||
| 等级 | 分数区间 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
| A | 900 – 1000 | 最安全 |
|
||||
| B | 800 – 899 | 较安全 |
|
||||
| C | 700 – 799 | 一般 |
|
||||
| D | 600 – 699 | 较不安全 |
|
||||
| E | 500 – 599 | 不安全 |
|
||||
| **F** | **0 – 499** | **最不安全** |
|
||||
|
||||
> 另:司法 + 借贷双重高风险时 **强制 F 档**(仍按三维度加权计算 `ra_score`,封顶 **500 分**,不置 0)。
|
||||
|
||||
---
|
||||
|
||||
## 四、动态权重机制
|
||||
|
||||
### 1️⃣ 风险标志位
|
||||
|
||||
```text
|
||||
HAS_JUDICIAL_RISK =
|
||||
ra_judicial_score < 1000
|
||||
|
||||
HAS_CREDIT_RISK =
|
||||
ra_credit_score < 1000
|
||||
|
||||
HAS_SEVERE_JUDICIAL =
|
||||
ra_judicial_score ≤ 400
|
||||
OR breachCaseList 非空
|
||||
OR consumptionRestrictionList 非空
|
||||
|
||||
HAS_SEVERE_CREDIT =
|
||||
ra_credit_score ≤ 400
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 权重分配表
|
||||
|
||||
**固定项:个人身份信息始终占 10%**
|
||||
|
||||
| 场景 | 个人身份 | 个人司法 | 借贷 | 说明 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **基准(无显著风险)** | **10%** | **50%** | **40%** | 默认比例 |
|
||||
| **有司法风险** | **10%** | **65%** | **25%** | 司法权重上调,借贷权重下调 |
|
||||
| **有借贷风险、无司法风险** | **10%** | **40%** | **50%** | 借贷权重上调,司法权重下调 |
|
||||
| **司法 + 借贷均有风险** | **10%** | **70%** | **20%** | 司法优先于借贷 |
|
||||
|
||||
> 动态权重仅调整 **司法 / 借贷** 两个维度,三者之和恒为 100%。
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 综合分计算公式
|
||||
|
||||
```text
|
||||
// 第一步:确定司法 / 借贷权重(身份固定 0.10)
|
||||
IF HAS_JUDICIAL_RISK AND HAS_CREDIT_RISK:
|
||||
w_judicial = 0.70, w_credit = 0.20
|
||||
ELSE IF HAS_JUDICIAL_RISK:
|
||||
w_judicial = 0.65, w_credit = 0.25
|
||||
ELSE IF HAS_CREDIT_RISK:
|
||||
w_judicial = 0.40, w_credit = 0.50
|
||||
ELSE:
|
||||
w_judicial = 0.50, w_credit = 0.40
|
||||
|
||||
w_verify = 0.10 // 固定
|
||||
|
||||
// 第二步:加权汇总
|
||||
ra_score = round(
|
||||
ra_verify_score × w_verify +
|
||||
ra_judicial_score × w_judicial +
|
||||
ra_credit_score × w_credit
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、F 档强判规则(最高优先级)
|
||||
|
||||
同时满足以下条件时,**强制归入 F 档**:
|
||||
|
||||
| 条件 | 判定标准 |
|
||||
| :--- | :--- |
|
||||
| 司法高风险 | `ra_judicial_score ≤ 400` |
|
||||
| 借贷高风险 | `ra_credit_score ≤ 400` |
|
||||
| 命中总条数 | 司法 + 借贷 **合计命中 > 5 条** |
|
||||
|
||||
**命中条数统计:**
|
||||
|
||||
| 维度 | 计数方式 |
|
||||
| :--- | :--- |
|
||||
| 司法 | `lawsuitStat.*.count.count_total` 累加 + `breachCaseList` 条数 + `consumptionRestrictionList` 条数 |
|
||||
| 借贷 | 探针命中项(逾期 / 睡眠 / 未履约 / 探针)+ 借贷意向(Reject / Review)+ 借选模型分低(`xyp_model_score_*` 各 1 条) |
|
||||
|
||||
```text
|
||||
// 第一步:正常三维度动态加权(与常规定价路径相同)
|
||||
ra_score_raw = round(
|
||||
ra_verify_score × 0.10 +
|
||||
ra_judicial_score × w_judicial +
|
||||
ra_credit_score × w_credit
|
||||
)
|
||||
|
||||
// 第二步:强制 F 档映射(保留分数,不置 0)
|
||||
ra_level = "F"
|
||||
ra_score = min(ra_score_raw, 500)
|
||||
```
|
||||
|
||||
> 双高风险场景 **仍参与加权**,仅覆盖等级为 F,并将综合分 **封顶 500**(F 档最高分)。
|
||||
|
||||
---
|
||||
|
||||
## 六、各维度风险扣分规则
|
||||
|
||||
### 1️⃣ ra_verify_score(个人身份信息,权重 10% 固定)
|
||||
|
||||
- **方法链:** `calcRAVerifyScore → calcRAVerifyRiskPoints → toRASafetyScore`
|
||||
- **数据来源:** `triple`、`identity`、`presence`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 三要素不一致 | `triple.state` | 有值且不为 `"1"` | 387 |
|
||||
| 二要素不一致 | `identity.result` | 不为 `0` | 387 |
|
||||
| 在网异常 | `presence.desc` | 含停机 / 销号 / 不在网 | 73 |
|
||||
| 状态码异常 | `presence.status` | 大于 `1` | 47 |
|
||||
|
||||
> 身份核验为 **基础准入项**,权重低但不可忽略;不一致时单项扣分仍可达 387–774 分。
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ ra_judicial_score(个人司法信息,基准权重 50%,可动态上调)
|
||||
|
||||
- **方法链:** `calcRAJudicialScore → calcRAJudicialRiskPoints → toRASafetyScore`
|
||||
- **数据来源:** `judicial.judicial_data`(FLXG7E8F 个人司法数据查询)
|
||||
- **子维度结构:** 涉诉统计 + 失信被执行人 + 限高被执行人(三类独立累加)
|
||||
- **计分方式:** 按 **命中条数 / 件数** 统计,遍历累加后换算安全分
|
||||
|
||||
| 子维度 | 命中统计方式 | 代码实现 |
|
||||
| :--- | :--- | :--- |
|
||||
| 涉诉统计 | 各类型 `*.count` 字段累加件数 | `lawsuitStat.*.count` 遍历求和 |
|
||||
| 失信被执行人 | `breachCaseList` 数组长度 = 命中条数 | `len(breachCaseList)` |
|
||||
| 限高被执行人 | `consumptionRestrictionList` 数组长度 = 命中条数 | `len(consumptionRestrictionList)` |
|
||||
|
||||
#### 2.1 涉诉统计(lawsuitStat)
|
||||
|
||||
遍历 `lawsuitStat` 下各类型节点(如 `civil`、`criminal`、`administrative`、`preservation`、`implement`、`bankrupt` 等),读取 `*.count` 累加。
|
||||
扣分采用 **非整齐系数**(避免 50/80/100 等整齐倍数),例如涉诉总件数按 **件数 × 47** 折算:
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| 涉诉总件数 | `lawsuitStat.*.count.count_total` | 各类型累加 | **件数 × 47** | 387 |
|
||||
| 未结案数 | `lawsuitStat.*.count.count_wei_total` | 各类型累加 | **件数 × 38** | 293 |
|
||||
| 被告件数 | `lawsuitStat.*.count.count_beigao` | 各类型累加 | **件数 × 33** | 247 |
|
||||
|
||||
#### 2.2 失信被执行人(breachCaseList)
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| 失信执行人记录 | `breachCaseList` 长度 | 每条记录 | **条数 × 143** | **437** |
|
||||
|
||||
- 对应最高法 **失信被执行人名单**
|
||||
- 命中即视为 **重度司法风险**,触发动态权重向司法倾斜(`HAS_JUDICIAL_RISK = true`)
|
||||
- 单条扣分高于普通涉诉件数,体现执行阶段信用惩戒的严重性
|
||||
|
||||
#### 2.3 限高被执行人(consumptionRestrictionList)
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| 限高执行人记录 | `consumptionRestrictionList` 长度 | 每条记录 | **条数 × 187** | **413** |
|
||||
|
||||
- 对应 **限制高消费被执行人名单**
|
||||
- 单条扣分高于失信记录,体现对消费 / 出行能力的直接限制
|
||||
- 与失信记录 **独立计分、互不替代**,可同时累加
|
||||
|
||||
#### 2.4 司法子维度扣分优先级(业务解释)
|
||||
|
||||
| 优先级 | 子维度 | 典型场景 | 相对严重度 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 1 | 限高被执行人 | 已被法院采取限高措施 | 最高 |
|
||||
| 2 | 失信被执行人 | 已被列入失信名单 | 高 |
|
||||
| 3 | 未结案涉诉 | 纠纷仍在审理 / 执行中 | 中 |
|
||||
| 4 | 被告涉诉 | 作为被告被起诉 | 中 |
|
||||
| 5 | 历史涉诉(已结案) | 仅 count_total 有值 | 相对较低 |
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ ra_credit_score(借贷信息,基准权重 40%,可动态上调)
|
||||
|
||||
- **方法链:** `calcRACreditScore → calcRACreditRiskPoints → toRASafetyScore`
|
||||
- **数据来源:** `probe`、`intent`、`rating`(JRZQ5E9F / loanRiskTagV21)
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 当前逾期 | `probe.currently_overdue` | `"1"` | 287 |
|
||||
| 睡眠账户 | `probe.acc_sleep` | `"1"` | 143 |
|
||||
| 未履约 | `probe.currently_performance` | `"0"` | 97 |
|
||||
| 探针命中 | `probe.result_code` | `"1"` | 103 |
|
||||
| 借贷意向 | `intent.Rule_final_decision` | `Reject` / `Review` | 387 / 237 |
|
||||
| 规则权重 | `intent.Rule_final_weight` | 有值 | **weight × 4**,上限 243 |
|
||||
| 小额网贷分低 | `rating.xyp_model_score_high` | 命中且 < 650 | 650−score,上限 97 |
|
||||
| 小额分期分低 | `rating.xyp_model_score_mid` | 命中且 < 650 | 650−score,上限 97 |
|
||||
| 中大额分期分低 | `rating.xyp_model_score_low` | 命中且 < 650 | 650−score,上限 97 |
|
||||
|
||||
**借选指数模型分说明(JRZQ5E9F):**
|
||||
|
||||
| 字段 | 含义 | 取值范围 |
|
||||
| :--- | :--- | :--- |
|
||||
| `xyp_model_score_high` | 星耀Pro 小额网贷分 V1 | [350, 950],越大逾期率越低 |
|
||||
| `xyp_model_score_mid` | 星耀Pro 小额分期分 V1 | [350, 950],越大逾期率越低 |
|
||||
| `xyp_model_score_low` | 星耀Pro 中大额分期分 V1 | [350, 950],越大逾期率越低 |
|
||||
|
||||
> 未命中为 `-1`,不参与扣分;三项独立计分,合计扣分上限 291。
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ ra_fraud_score(欺诈,辅助输出,不参与加权)
|
||||
|
||||
- **方法链:** `calcRAFraudScore → calcRAFraudRiskPoints → toRASafetyScore`
|
||||
- **数据来源:** `behavior`、`complaint`、`fraud`、`special`
|
||||
|
||||
| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 行为黑名单 | `behavior.result.black_list` | `"1"` | 23 |
|
||||
| 行为黑标签 | `behavior.result.black_tag**` | 任意 `"1"` | 23 / 项 |
|
||||
| 投诉风险 | `complaint.result.score` | 有值且 > 0 | 23 |
|
||||
| 欺诈黑名单 | `fraud.hit` | `1` | 23 |
|
||||
| 特殊名单 | `special.Rule_final_decision` | `Reject` / `Review` | 23 |
|
||||
|
||||
> 欺诈维度采用 **「每命中一项扣 23 分」** 统一计分,多项独立累加,单维上限 1000。
|
||||
> 欺诈信号仍单独计算并返回 `ra_fraud_score`,供风控人工复核;**不进入 `ra_score` 三维度加权**,避免与借贷维度重复计分。
|
||||
|
||||
---
|
||||
|
||||
## 七、综合分与等级计算样例
|
||||
|
||||
### ✅ 样例 1:基准场景(无显著风险 → A)
|
||||
|
||||
| 维度 | 安全分 | 权重 |
|
||||
| :--- | :--- | :--- |
|
||||
| 个人身份 | 920 | 10% |
|
||||
| 个人司法 | 980 | 50% |
|
||||
| 借贷 | 760 | 40% |
|
||||
|
||||
```text
|
||||
ra_score = 920×0.10 + 980×0.50 + 760×0.40
|
||||
= 92 + 490 + 304
|
||||
= 886 → A
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ⚠️ 样例 2:命中失信 + 限高(司法权重上调 → C/D)
|
||||
|
||||
| 维度 | 安全分 | 说明 |
|
||||
| :--- | :--- | :--- |
|
||||
| 个人身份 | 900 | 核验正常 |
|
||||
| 个人司法 | 670 | 失信 1 条 + 限高 1 条,扣分 330(143+187) |
|
||||
| 借贷 | 680 | 轻度借贷风险 |
|
||||
|
||||
动态权重:身份 10% + 司法 65% + 借贷 25%
|
||||
|
||||
```text
|
||||
ra_score = 900×0.10 + 670×0.65 + 680×0.25
|
||||
= 90 + 435.5 + 170
|
||||
= 696 → C
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ⚠️ 样例 3:仅借贷风险(借贷权重上调 → B/C)
|
||||
|
||||
| 维度 | 安全分 |
|
||||
| :--- | :--- |
|
||||
| 个人身份 | 880 |
|
||||
| 个人司法 | 1000 |
|
||||
| 借贷 | 520 |
|
||||
|
||||
动态权重:身份 10% + 司法 40% + 借贷 50%
|
||||
|
||||
```text
|
||||
ra_score = 880×0.10 + 1000×0.40 + 520×0.50
|
||||
= 88 + 400 + 260
|
||||
= 748 → B
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ❌ 样例 4:司法 + 借贷双高(强制 F 档)
|
||||
|
||||
- `ra_judicial_score = 197`(失信 3 条 ×143 + 限高 2 条 ×187,扣分 803,司法命中 **5 条**)
|
||||
- `ra_credit_score = 0`(逾期 287 + 未履约 97 + 探针 103 + Reject 387 + 权重 40×4,扣分超 1000,借贷命中 **4 条**)
|
||||
- 合计命中 **9 条 > 5**,满足强制 F 条件
|
||||
- `ra_verify_score = 1000`
|
||||
|
||||
动态权重:身份 10% + 司法 70% + 借贷 20%
|
||||
|
||||
```text
|
||||
ra_score_raw = 1000×0.10 + 197×0.70 + 0×0.20
|
||||
= 100 + 137.9 + 0
|
||||
= 238
|
||||
→ 强制 F 档:ra_level = "F",ra_score = min(238, 500) = 238
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、代码位置
|
||||
|
||||
| 方法 | 文件 |
|
||||
| :--- | :--- |
|
||||
| `buildDWBG9FB3RA` | `dwbg9fb3_ra.go` |
|
||||
| `calcRA*Score` / `calcRA*RiskPoints` | `dwbg9fb3_ra.go` |
|
||||
| `toRASafetyScore` | `dwbg9fb3_ra.go` |
|
||||
| `raLevelFromScore` | `dwbg9fb3_ra.go` |
|
||||
|
||||
---
|
||||
|
||||
## 九、变更总结
|
||||
|
||||
| 项目 | 原方案 | 新方案 |
|
||||
| :--- | :--- | :--- |
|
||||
| 加权维度 | 欺诈 + 借贷 + 司法 + 身份(四维) | **身份 + 司法 + 借贷(三维)** |
|
||||
| 身份权重 | 15%–20% 浮动 | **固定 10%** |
|
||||
| 司法 / 借贷权重 | 各自独立浮动 | **基准 50% / 40%,动态互调** |
|
||||
| 司法子维度 | 合并描述 | **涉诉统计 / 失信执行人 / 限高执行人 分项说明** |
|
||||
| 限高 vs 失信 | 同表罗列 | **限高 ×187/条、失信 ×143/条,独立计分** |
|
||||
| 欺诈维度 | 参与加权 | **单独输出,不参与 `ra_score`;每命中一项扣 23 分** |
|
||||
| 扣分系数 | 整齐 5/10 倍数 | **47/38/33/143/187 等非整齐系数** |
|
||||
| 双高风险 | 强制 0 分 | **加权计分 + 强制 F 档,封顶 500** |
|
||||
| 等级区间 | A:800+ / B:600+ … | **每档 100 分,F: 0–499** |
|
||||
| 借选指数 | `rating.score` | **`xyp_model_score_high/mid/low`(JRZQ5E9F)** |
|
||||
Reference in New Issue
Block a user