From 66e8bb267d229a362057375132295dc20eb3df19 Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Wed, 10 Jun 2026 17:47:36 +0800 Subject: [PATCH] f --- .../domains/api/services/processors/dwbg/1.md | 2 +- .../services/processors/dwbg/DWBG9FB3.json | 876 ++++++++++++++++++ .../dwbg/DWBG9FB3_desensitized.json | 876 ++++++++++++++++++ .../services/processors/dwbg/desensitize.js | 117 +++ .../api/services/processors/dwbg/dwbg9fb3.md | 82 +- .../processors/dwbg/dwbg9fb3_processor.go | 150 ++- .../services/processors/dwbg/dwbg9fb3_ra.go | 356 +++++++ .../services/processors/dwbg/dwbg9fb3_ra.md | 139 +++ .../processors/dwbg/dwbg9fb3_ra_test.go | 180 ++++ .../processors/dwbg/dwbg9fb3评分规则.md | 322 +++++++ 10 files changed, 3055 insertions(+), 45 deletions(-) create mode 100644 internal/domains/api/services/processors/dwbg/DWBG9FB3.json create mode 100644 internal/domains/api/services/processors/dwbg/DWBG9FB3_desensitized.json create mode 100644 internal/domains/api/services/processors/dwbg/desensitize.js create mode 100644 internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.go create mode 100644 internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.md create mode 100644 internal/domains/api/services/processors/dwbg/dwbg9fb3_ra_test.go create mode 100644 internal/domains/api/services/processors/dwbg/dwbg9fb3评分规则.md diff --git a/internal/domains/api/services/processors/dwbg/1.md b/internal/domains/api/services/processors/dwbg/1.md index 43dbea7..89909bf 100644 --- a/internal/domains/api/services/processors/dwbg/1.md +++ b/internal/domains/api/services/processors/dwbg/1.md @@ -16,7 +16,7 @@ -| 产品编码 | 产品名称 | 价格 | API接口名称 | +| 产品编码 | 产品名称 | 价格 ¥2.06 | API接口名称 | | :--- | :--- | :--- | :--- | || YYSYE7V5 | 手机在网状态V即时版 | ¥0.03 / 次 | /v1/mobile_status/check | || YYSYP0T4 | 手机号码在网时长V即时版 | ¥0.15 / 次 | /v2/mobile_online/check | diff --git a/internal/domains/api/services/processors/dwbg/DWBG9FB3.json b/internal/domains/api/services/processors/dwbg/DWBG9FB3.json new file mode 100644 index 0000000..5c0715e --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/DWBG9FB3.json @@ -0,0 +1,876 @@ +{ + "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" + } + } \ No newline at end of file diff --git a/internal/domains/api/services/processors/dwbg/DWBG9FB3_desensitized.json b/internal/domains/api/services/processors/dwbg/DWBG9FB3_desensitized.json new file mode 100644 index 0000000..d450c0e --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/DWBG9FB3_desensitized.json @@ -0,0 +1,876 @@ +{ + "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" + } +} \ No newline at end of file diff --git a/internal/domains/api/services/processors/dwbg/desensitize.js b/internal/domains/api/services/processors/dwbg/desensitize.js new file mode 100644 index 0000000..233aae4 --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/desensitize.js @@ -0,0 +1,117 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// 读取JSON文件 +// 读取JSON文件 +const inputFile = path.join(__dirname, 'DWBG9FB3.json'); +const data = JSON.parse(fs.readFileSync(inputFile, 'utf8')); + +// 姓名映射表(保持同一姓名脱敏后一致) +const nameMap = { + '何志勇': '何某某', + '覃圣有': '覃某', + '刘飞': '刘某某', + '陈波': '陈某某', + '覃小群': '覃某某', + '陈观海': '陈某某', + '刘国富': '刘某某' +}; + +// 脱敏函数 +function desensitizeName(name) { + if (nameMap[name]) { + return nameMap[name]; + } + // 对于未知的姓名,保留姓氏,名字用星号代替 + if (name && name.length > 0) { + const surname = name[0]; + return surname + '某某'; + } + return name; +} + +function desensitizeIdCard(idCard) { + if (!idCard || idCard.length !== 18) return idCard; + return idCard.substring(0, 6) + '********' + idCard.substring(14); +} + +function desensitizeMobile(mobile) { + if (!mobile || mobile.length !== 11) return mobile; + return mobile.substring(0, 3) + '****' + mobile.substring(7); +} + +function desensitizeText(text) { + if (!text || typeof text !== 'string') return text; + let result = text; + // 替换所有出现的人名 + for (const [realName, maskedName] of Object.entries(nameMap)) { + // 替换姓名 + const regex1 = new RegExp(realName, 'g'); + result = result.replace(regex1, maskedName); + // 替换姓名+某的形式(如:何志某 -> 何某某某) + const regex2 = new RegExp(realName.substring(0, realName.length - 1) + '某', 'g'); + result = result.replace(regex2, maskedName); + } + return result; +} + +// 递归遍历对象进行脱敏 +function desensitizeObject(obj) { + if (obj === null || typeof obj !== 'object') { + return obj; + } + + if (Array.isArray(obj)) { + return obj.map(item => desensitizeObject(item)); + } + + const result = {}; + for (const [key, value] of Object.entries(obj)) { + switch (key) { + case 'name': + result[key] = desensitizeName(value); + break; + case 'id_card': + result[key] = desensitizeIdCard(value); + break; + case 'mobile': + result[key] = desensitizeMobile(value); + break; + case 'c_mc': + // 当事人姓名 + result[key] = desensitizeName(value); + break; + case 'c_gkws_dsr': + case 'c_gkws_pjjg': + // 判决书内容中的文本 + result[key] = desensitizeText(value); + break; + default: + result[key] = desensitizeObject(value); + break; + } + } + return result; +} + +// 执行脱敏 +const desensitizedData = desensitizeObject(data); + +// 保存脱敏后的文件 +const outputFile = path.join(__dirname, 'DWBG9FB3_desensitized.json'); +fs.writeFileSync(outputFile, JSON.stringify(desensitizedData, null, 2), 'utf8'); + +console.log('脱敏完成!'); +console.log('原始文件:', inputFile); +console.log('脱敏后文件:', outputFile); + +// 显示脱敏摘要 +console.log('\n脱敏摘要:'); +console.log('- 姓名:已脱敏(保留姓氏)'); +console.log('- 身份证号:已脱敏(保留前6位和后4位)'); +console.log('- 手机号:已脱敏(保留前3位和后4位)'); +console.log('- 判决书文本中的姓名:已批量替换'); \ No newline at end of file diff --git a/internal/domains/api/services/processors/dwbg/dwbg9fb3.md b/internal/domains/api/services/processors/dwbg/dwbg9fb3.md index e1f8512..ab43201 100644 --- a/internal/domains/api/services/processors/dwbg/dwbg9fb3.md +++ b/internal/domains/api/services/processors/dwbg/dwbg9fb3.md @@ -8,23 +8,38 @@ - 顶层 key 为简短**英文单词**字段名 - 每个大字段的 value 即为对应子处理器的原始返回对象 - 子产品调用失败时,该字段值为 `null`,不影响其他字段 +- 汇总时递归剔除上游流水号字段:`order_no`、`orderNo` -## 字段映射表 +## 最终扁平结构(dwbg9FB3OutputSchema) -| 产品编码 | 产品名称 | 英文字段名 | 子处理器 | -| :--- | :--- | :--- | :--- | -| YYSYE7V5 | 手机在网状态V即时版 | `presence` | `ProcessYYSYE7V5Request` | -| YYSYP0T4 | 手机号码在网时长V即时版 | `duration` | `ProcessYYSYP0T4Request` | -| YYSYK9R4 | 全网手机三要素验证 | `triple` | `ProcessYYSYK9R4Request` | -| IVYZN2P8 | 公安二要素政务版 | `identity` | `ProcessIVYZN2P8Request` | -| JRZQV3HM | 债务欺诈黑名单V3 | `fraud` | `ProcessJRZQV3HMRequest` | -| JRZQ4B6C | 探针C | `probe` | `ProcessJRZQ4B6CRequest` | -| JRZQ5E9F | 借选指数 | `rating` | `ProcessJRZQ5E9FRequest` | -| JRZQ3C7B | 借贷意向验证 | `intent` | `ProcessJRZQ3C7BRequest` | -| JRZQV7MD | 特殊名单 | `special` | `ProcessJRZQV7MDRequest` | -| JRZQVT43 | 投诉风险筛查V709 | `complaint` | `ProcessJRZQVT43Request` | -| JRZQV0MD | 行为黑名单 | `behavior` | `ProcessJRZQV0MDRequest` | -| FLXG7E8F | 个人司法数据查询 | `judicial` | `ProcessFLXG7E8FRequest` | +顶层共 **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` | 核验维度安全分 | ## 请求参数 @@ -38,10 +53,18 @@ ## 响应结构 -顶层为一个扁平对象,12 个字段并列,每个字段 value 为子处理器原始返回的 JSON 对象: +顶层为一个扁平对象,包含总体风险评估 `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": { }, @@ -57,10 +80,37 @@ } ``` +## 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" diff --git a/internal/domains/api/services/processors/dwbg/dwbg9fb3_processor.go b/internal/domains/api/services/processors/dwbg/dwbg9fb3_processor.go index 85be30d..2f467c6 100644 --- a/internal/domains/api/services/processors/dwbg/dwbg9fb3_processor.go +++ b/internal/domains/api/services/processors/dwbg/dwbg9fb3_processor.go @@ -14,20 +14,96 @@ import ( "go.uber.org/zap" ) -// dwbg9FB3FieldNames 子产品编码 → 响应字段名(单词缩写) -var dwbg9FB3FieldNames = map[string]string{ - "YYSYE7V5": "presence", // 在网状态 - "YYSYP0T4": "duration", // 在网时长 - "YYSYK9R4": "triple", // 三要素验证 - "IVYZN2P8": "identity", // 二要素认证 - "JRZQV3HM": "fraud", // 债务欺诈黑名单 - "JRZQ4B6C": "probe", // 探针C - "JRZQ5E9F": "rating", // 借选指数 - "JRZQ3C7B": "intent", // 借贷意向 - "JRZQV7MD": "special", // 特殊名单 - "JRZQVT43": "complaint", // 投诉风险 - "JRZQV0MD": "behavior", // 行为黑名单 - "FLXG7E8F": "judicial", // 司法数据 +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处理方法 - 个人风险档案 @@ -49,7 +125,8 @@ func ProcessDWBG9FB3Request(ctx context.Context, params []byte, deps *processors zap.String("mobile_no", maskMobile(paramsDto.MobileNo)), ) - result := collectDWBG9FB3SubProducts(ctx, paramsDto, deps, log) + subProducts := collectDWBG9FB3SubProducts(ctx, paramsDto, deps, log) + result := buildDWBG9FB3Response(subProducts) respBytes, err := json.Marshal(result) if err != nil { @@ -60,6 +137,23 @@ func ProcessDWBG9FB3Request(ctx context.Context, params []byte, deps *processors 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 @@ -73,11 +167,11 @@ func collectDWBG9FB3SubProducts( log *zap.Logger, ) map[string]interface{} { apiCalls := []dwbg9fb3APICall{ - {apiCode: "YYSYE7V5", fieldName: dwbg9FB3FieldNames["YYSYE7V5"], params: map[string]interface{}{"mobile_no": params.MobileNo}}, - {apiCode: "YYSYP0T4", fieldName: dwbg9FB3FieldNames["YYSYP0T4"], params: map[string]interface{}{"mobile_no": params.MobileNo}}, + {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: dwbg9FB3FieldNames["YYSYK9R4"], + fieldName: dwbg9FB3SubProductFieldNames["YYSYK9R4"], params: map[string]interface{}{ "mobile_no": params.MobileNo, "id_card": params.IDCard, @@ -86,7 +180,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "IVYZN2P8", - fieldName: dwbg9FB3FieldNames["IVYZN2P8"], + fieldName: dwbg9FB3SubProductFieldNames["IVYZN2P8"], params: map[string]interface{}{ "id_card": params.IDCard, "name": params.Name, @@ -94,7 +188,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQV3HM", - fieldName: dwbg9FB3FieldNames["JRZQV3HM"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQV3HM"], params: map[string]interface{}{ "id_card": params.IDCard, "name": params.Name, @@ -103,7 +197,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQ4B6C", - fieldName: dwbg9FB3FieldNames["JRZQ4B6C"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQ4B6C"], params: map[string]interface{}{ "mobile_no": params.MobileNo, "id_card": params.IDCard, @@ -113,7 +207,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQ5E9F", - fieldName: dwbg9FB3FieldNames["JRZQ5E9F"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQ5E9F"], params: map[string]interface{}{ "mobile_no": params.MobileNo, "id_card": params.IDCard, @@ -123,7 +217,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQ3C7B", - fieldName: dwbg9FB3FieldNames["JRZQ3C7B"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQ3C7B"], params: map[string]interface{}{ "mobile_no": params.MobileNo, "id_card": params.IDCard, @@ -133,7 +227,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQV7MD", - fieldName: dwbg9FB3FieldNames["JRZQV7MD"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQV7MD"], params: map[string]interface{}{ "id_card": params.IDCard, "name": params.Name, @@ -142,7 +236,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQVT43", - fieldName: dwbg9FB3FieldNames["JRZQVT43"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQVT43"], params: map[string]interface{}{ "id_card": params.IDCard, "name": params.Name, @@ -151,7 +245,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "JRZQV0MD", - fieldName: dwbg9FB3FieldNames["JRZQV0MD"], + fieldName: dwbg9FB3SubProductFieldNames["JRZQV0MD"], params: map[string]interface{}{ "id_card": params.IDCard, "name": params.Name, @@ -160,7 +254,7 @@ func collectDWBG9FB3SubProducts( }, { apiCode: "FLXG7E8F", - fieldName: dwbg9FB3FieldNames["FLXG7E8F"], + fieldName: dwbg9FB3SubProductFieldNames["FLXG7E8F"], params: map[string]interface{}{ "name": params.Name, "id_card": params.IDCard, @@ -220,7 +314,7 @@ func collectDWBG9FB3SubProducts( output[result.fieldName] = nil continue } - output[result.fieldName] = result.data + output[result.fieldName] = stripDWBG9FB3MetaKeys(result.data) successCount++ } diff --git a/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.go b/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.go new file mode 100644 index 0000000..31af9d4 --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.go @@ -0,0 +1,356 @@ +package dwbg + +import ( + "math" + "strconv" + "strings" +) + +const raScoreMax = 1000 + +const ( + raWeightVerify = 0.10 + raWeightJudicialBase = 0.50 + raWeightCreditBase = 0.40 + raHighRiskThreshold = 400 +) + +// buildDWBG9FB3RA 构建顶层 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 +func buildDWBG9FB3RA(data map[string]interface{}) map[string]interface{} { + fraudScore := calcRAFraudScore(data) + creditScore := calcRACreditScore(data) + judicialScore := calcRAJudicialScore(data) + verifyScore := calcRAVerifyScore(data) + + total := 0 + level := "F" + if isRAForcedFGrade(judicialScore, creditScore) { + total = 0 + level = "F" + } else { + wJudicial, wCredit := calcRADynamicWeights(judicialScore, creditScore) + total = int(math.Round( + float64(verifyScore)*raWeightVerify + + float64(judicialScore)*wJudicial + + float64(creditScore)*wCredit, + )) + total = clampRAInt(total, 0, raScoreMax) + level = raLevelFromScore(total) + } + + 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, + } +} + +// calcRADynamicWeights 按司法/借贷风险场景分配剩余 90% 权重(身份固定 10%) +func calcRADynamicWeights(judicialScore, creditScore int) (wJudicial, wCredit float64) { + hasJudicialRisk := judicialScore < raScoreMax + hasCreditRisk := creditScore < raScoreMax + + switch { + case hasJudicialRisk && hasCreditRisk: + return 0.70, 0.20 + case hasJudicialRisk: + return 0.65, 0.25 + case hasCreditRisk: + return 0.40, 0.50 + default: + return raWeightJudicialBase, raWeightCreditBase + } +} + +// isRAForcedFGrade 司法 + 借贷双重高风险时强制 F 级 +func isRAForcedFGrade(judicialScore, creditScore int) bool { + return judicialScore <= raHighRiskThreshold && creditScore <= raHighRiskThreshold +} + +// raLevelFromScore 由 ra_score 映射等级(千分制,越高越安全) +// A: 800-1000 B: 600-799 C: 400-599 D: 200-399 E: 0-199 +func raLevelFromScore(score int) string { + switch { + case score >= 800: + return "A" + case score >= 600: + return "B" + case score >= 400: + return "C" + case score >= 200: + return "D" + default: + return "E" + } +} + +// toRASafetyScore 将风险扣分转为安全分:安全分 = 1000 - 风险扣分 +func toRASafetyScore(riskPoints int) int { + return clampRAInt(raScoreMax-riskPoints, 0, raScoreMax) +} + +// calcRAFraudScore 欺诈/黑名单维度安全分(来源:calcRAFraudRiskPoints) +// 统计方式:满分 1000,根据 behavior/complaint/fraud/special 风险信号扣分后取补集 +func calcRAFraudScore(data map[string]interface{}) int { + return toRASafetyScore(calcRAFraudRiskPoints(data)) +} + +// calcRAFraudRiskPoints 统计欺诈维度风险扣分(仅内部使用,分值越高代表越不安全) +func calcRAFraudRiskPoints(data map[string]interface{}) int { + risk := 0 + + // 来源子字段 behavior(JRZQV0MD 行为黑名单) + if behavior := raAsMap(data["behavior"]); behavior != nil { + if result := raAsMap(behavior["result"]); result != nil { + // behavior.result.black_list = "1" → 命中行为黑名单,扣 500 + if raAsString(result["black_list"]) == "1" { + risk += 500 + } + // behavior.result.black_tag04~12 任意为 "1" → 每个扣 80 + for k, v := range result { + if strings.HasPrefix(k, "black_tag") && raAsString(v) == "1" { + risk += 80 + } + } + } + } + + // 来源子字段 complaint(JRZQVT43 投诉风险筛查) + if complaint := raAsMap(data["complaint"]); complaint != nil { + if result := raAsMap(complaint["result"]); result != nil { + // complaint.result.score × 10,上限扣 300 + risk += clampRAInt(raAsInt(result["score"])*10, 0, 300) + } + } + + // 来源子字段 fraud(JRZQV3HM 债务欺诈黑名单) + if fraud := raAsMap(data["fraud"]); fraud != nil { + // fraud.hit = 1 → 命中欺诈黑名单,扣 400 + if raAsInt(fraud["hit"]) == 1 || raAsString(fraud["hit"]) == "1" { + risk += 400 + } + } + + // 来源子字段 special(JRZQV7MD 特殊名单) + if special := raAsMap(data["special"]); special != nil && len(special) > 0 { + switch raAsString(special["Rule_final_decision"]) { + case "Reject": + risk += 350 // 特殊名单建议拒绝 + case "Review": + risk += 200 // 特殊名单建议复议 + } + } + + return clampRAInt(risk, 0, raScoreMax) +} + +// calcRACreditScore 借贷/逾期维度安全分(来源:calcRACreditRiskPoints) +// 统计方式:满分 1000,根据 probe/intent/rating 风险信号扣分后取补集 +func calcRACreditScore(data map[string]interface{}) int { + return toRASafetyScore(calcRACreditRiskPoints(data)) +} + +// calcRACreditRiskPoints 统计借贷维度风险扣分 +func calcRACreditRiskPoints(data map[string]interface{}) int { + risk := 0 + + // 来源子字段 probe(JRZQ4B6C 探针C) + if probe := raAsMap(data["probe"]); probe != nil { + if raAsString(probe["currently_overdue"]) == "1" { + risk += 300 // 当前逾期 + } + if raAsString(probe["acc_sleep"]) == "1" { + risk += 150 // 睡眠账户 + } + if raAsString(probe["currently_performance"]) == "0" { + risk += 100 // 当前未履约 + } + if raAsString(probe["result_code"]) == "1" { + risk += 100 // 探针命中风险 + } + } + + // 来源子字段 intent(JRZQ3C7B 借贷意向验证) + if intent := raAsMap(data["intent"]); intent != nil { + switch raAsString(intent["Rule_final_decision"]) { + case "Reject": + risk += 400 + case "Review": + risk += 250 + } + // intent.Rule_final_weight × 5,上限扣 250 + weight := raAsInt(intent["Rule_final_weight"]) + if weight > 0 { + risk += clampRAInt(weight*5, 0, 250) + } + } + + // 来源子字段 rating(JRZQ5E9F 借选指数) + if rating := raAsMap(data["rating"]); rating != nil { + // rating.score 越低风险越高:扣 (500 - score),上限 300 + if ratingScore := raAsInt(rating["score"]); ratingScore > 0 && ratingScore < 500 { + risk += clampRAInt(500-ratingScore, 0, 300) + } + } + + return clampRAInt(risk, 0, raScoreMax) +} + +// calcRAJudicialScore 司法涉诉维度安全分(来源:calcRAJudicialRiskPoints) +// 统计方式:满分 1000,根据 judicial.judicial_data 涉诉统计扣分后取补集 +func calcRAJudicialScore(data map[string]interface{}) int { + return toRASafetyScore(calcRAJudicialRiskPoints(data)) +} + +// calcRAJudicialRiskPoints 统计司法维度风险扣分 +func calcRAJudicialRiskPoints(data map[string]interface{}) int { + risk := 0 + + // 来源子字段 judicial(FLXG7E8F 个人司法数据查询) + judicial := raAsMap(data["judicial"]) + if judicial == nil { + return 0 + } + judicialData := raAsMap(judicial["judicial_data"]) + if judicialData == nil { + return 0 + } + + // lawsuitStat 下 civil/criminal/administrative/preservation 等节点累加 + if lawsuitStat := raAsMap(judicialData["lawsuitStat"]); lawsuitStat != nil { + for _, section := range lawsuitStat { + sectionMap := raAsMap(section) + if sectionMap == nil { + continue + } + count := raAsMap(sectionMap["count"]) + if count == nil { + continue + } + risk += clampRAInt(raAsInt(count["count_total"])*80, 0, 400) // 涉诉总件数 + risk += clampRAInt(raAsInt(count["count_wei_total"])*60, 0, 300) // 未结案数 + risk += clampRAInt(raAsInt(count["count_beigao"])*50, 0, 250) // 被告件数 + } + } + + risk += clampRAInt(len(raAsSlice(judicialData["breachCaseList"]))*150, 0, 450) // 失信案件条数 + risk += clampRAInt(len(raAsSlice(judicialData["consumptionRestrictionList"]))*200, 0, 400) // 限高条数 + + return clampRAInt(risk, 0, raScoreMax) +} + +// calcRAVerifyScore 身份/在网核验维度安全分(来源:calcRAVerifyRiskPoints) +// 统计方式:满分 1000,根据 triple/identity/presence 核验异常扣分后取补集 +func calcRAVerifyScore(data map[string]interface{}) int { + return toRASafetyScore(calcRAVerifyRiskPoints(data)) +} + +// calcRAVerifyRiskPoints 统计核验维度风险扣分 +func calcRAVerifyRiskPoints(data map[string]interface{}) int { + risk := 0 + + // 来源子字段 triple(YYSYK9R4 三要素验证) + if triple := raAsMap(data["triple"]); triple != nil { + if state := raAsString(triple["state"]); state != "" && state != "1" { + risk += 400 // 三要素不一致 + } + } + + // 来源子字段 identity(IVYZN2P8 二要素认证) + if identity := raAsMap(data["identity"]); identity != nil { + if result := raAsInt(identity["result"]); result != 0 { + risk += 400 // 二要素不一致或无记录 + } + } + + // 来源子字段 presence(YYSYE7V5 在网状态) + if presence := raAsMap(data["presence"]); presence != nil { + desc := raAsString(presence["desc"]) + if strings.Contains(desc, "停机") || strings.Contains(desc, "销号") || strings.Contains(desc, "不在网") { + risk += 80 // 在网状态异常 + } + if status := raAsInt(presence["status"]); status > 1 { + risk += 50 // 在网状态码异常 + } + } + + return clampRAInt(risk, 0, raScoreMax) +} + +func raAsMap(v interface{}) map[string]interface{} { + m, ok := v.(map[string]interface{}) + if !ok || m == nil { + return nil + } + return m +} + +func raAsSlice(v interface{}) []interface{} { + s, ok := v.([]interface{}) + if !ok { + return nil + } + return s +} + +func raAsString(v interface{}) string { + switch val := v.(type) { + case string: + return strings.TrimSpace(val) + case float64: + return strconv.FormatInt(int64(val), 10) + case int: + return strconv.Itoa(val) + case int64: + return strconv.FormatInt(val, 10) + case bool: + if val { + return "1" + } + return "0" + default: + return "" + } +} + +func raAsInt(v interface{}) int { + switch val := v.(type) { + case int: + return val + case int64: + return int(val) + case float64: + return int(val) + case string: + n, err := strconv.Atoi(strings.TrimSpace(val)) + if err == nil { + return n + } + case bool: + if val { + return 1 + } + } + return 0 +} + +func clampRAInt(v, min, max int) int { + if v < min { + return min + } + if v > max { + return max + } + return v +} diff --git a/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.md b/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.md new file mode 100644 index 0000000..e8a5d23 --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/dwbg9fb3_ra.md @@ -0,0 +1,139 @@ +# 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 raScoreMax { + t.Fatalf("ra_score out of range: %d", score) + } + + level := raAsString(ra["ra_level"]) + validLevels := map[string]bool{"A": true, "B": true, "C": true, "D": true, "E": true, "F": true} + if !validLevels[level] { + t.Fatalf("invalid ra_level: %s", level) + } + + t.Logf("RA sample: score=%d level=%s fraud=%d credit=%d judicial=%d verify=%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"]), + ) +} + +func TestRALevelFromScore(t *testing.T) { + cases := map[int]string{ + 0: "E", + 199: "E", + 200: "D", + 399: "D", + 400: "C", + 599: "C", + 600: "B", + 799: "B", + 800: "A", + 1000: "A", + } + for score, want := range cases { + if got := raLevelFromScore(score); got != want { + t.Fatalf("score %d: got %s want %s", score, got, want) + } + } +} + +func TestSafetyScoreHigherIsSafer(t *testing.T) { + clean := map[string]interface{}{ + "behavior": map[string]interface{}{"result": map[string]interface{}{"black_list": "0"}}, + "complaint": nil, + "fraud": nil, + "special": nil, + "probe": nil, + "intent": nil, + "rating": nil, + "judicial": nil, + "triple": map[string]interface{}{"state": "1"}, + "identity": map[string]interface{}{"result": 0}, + "presence": map[string]interface{}{"desc": "正常", "status": 1}, + } + ra := buildDWBG9FB3RA(clean) + if raAsInt(ra["ra_score"]) < 800 { + t.Fatalf("clean data should have safety score >= 800, got %d", raAsInt(ra["ra_score"])) + } + if raLevelFromScore(raAsInt(ra["ra_score"])) != "A" { + t.Fatalf("clean data should be level A, got %s", raLevelFromScore(raAsInt(ra["ra_score"]))) + } +} + +func TestCalcRADynamicWeights(t *testing.T) { + cases := []struct { + judicial, credit int + wantJudicial float64 + wantCredit float64 + }{ + {1000, 1000, 0.50, 0.40}, + {900, 1000, 0.65, 0.25}, + {1000, 900, 0.40, 0.50}, + {900, 900, 0.70, 0.20}, + } + for _, tc := range cases { + gotJ, gotC := calcRADynamicWeights(tc.judicial, tc.credit) + if gotJ != tc.wantJudicial || gotC != tc.wantCredit { + t.Fatalf("judicial=%d credit=%d: got (%.2f, %.2f) want (%.2f, %.2f)", + tc.judicial, tc.credit, gotJ, gotC, tc.wantJudicial, tc.wantCredit) + } + } +} + +func TestRAForcedFGrade(t *testing.T) { + data := map[string]interface{}{ + "behavior": nil, + "complaint": nil, + "fraud": nil, + "special": nil, + "probe": map[string]interface{}{ + "currently_overdue": "1", + "currently_performance": "0", + "result_code": "1", + }, + "intent": map[string]interface{}{ + "Rule_final_decision": "Reject", + }, + "rating": nil, + "triple": map[string]interface{}{"state": "1"}, + "identity": map[string]interface{}{"result": 0}, + "presence": map[string]interface{}{"desc": "正常", "status": 1}, + "judicial": map[string]interface{}{ + "judicial_data": map[string]interface{}{ + "breachCaseList": []interface{}{ + map[string]interface{}{"caseNo": "1"}, + map[string]interface{}{"caseNo": "2"}, + map[string]interface{}{"caseNo": "3"}, + }, + "consumptionRestrictionList": []interface{}{ + map[string]interface{}{"caseNo": "4"}, + map[string]interface{}{"caseNo": "5"}, + }, + "lawsuitStat": map[string]interface{}{}, + }, + }, + } + + ra := buildDWBG9FB3RA(data) + if raAsInt(ra["ra_score"]) != 0 { + t.Fatalf("forced F should have ra_score=0, got %d", raAsInt(ra["ra_score"])) + } + if raAsString(ra["ra_level"]) != "F" { + t.Fatalf("forced F should have ra_level=F, got %s", raAsString(ra["ra_level"])) + } +} + +func TestRAScoreWeightedSum(t *testing.T) { + verify, judicial, credit := 920, 980, 760 + wJ, wC := calcRADynamicWeights(judicial, credit) + // 980/760 均 < 1000,触发司法+借贷双风险 → 70%/20% + want := int(math.Round(float64(verify)*raWeightVerify + float64(judicial)*wJ + float64(credit)*wC)) + if want != 930 { + t.Fatalf("dual-risk example want 930, got %d (wJ=%.2f wC=%.2f)", want, wJ, wC) + } + + verify, judicial, credit = 920, 1000, 1000 + wJ, wC = calcRADynamicWeights(judicial, credit) + want = int(math.Round(float64(verify)*raWeightVerify + float64(judicial)*wJ + float64(credit)*wC)) + if want != 992 { + t.Fatalf("baseline example want 992, got %d", want) + } +} diff --git a/internal/domains/api/services/processors/dwbg/dwbg9fb3评分规则.md b/internal/domains/api/services/processors/dwbg/dwbg9fb3评分规则.md new file mode 100644 index 0000000..0238fbb --- /dev/null +++ b/internal/domains/api/services/processors/dwbg/dwbg9fb3评分规则.md @@ -0,0 +1,322 @@ +# DWBG9FB3 RA 安全评估 — 千分制计算说明(三维度动态权重版) + +> **修订说明** +> 本版本采用 **「身份固定 10% + 司法 / 借贷动态 90%」** 的三维度加权模型,突出个人司法与信贷风险的主次关系;司法维度细分为 **涉诉统计、失信被执行人、限高被执行人** 三类独立计分。 + +--- + +## 一、核心原则 + +- 所有分值采用 **千分制(0–1000)** +- **分值越高表示越安全** +- 统一计算路径: + + ```text + 安全分 = 1000 − 风险扣分(单维上限 1000) + ``` + +- **个人身份信息权重固定 10%,不参与动态调整** +- **个人司法信息与借贷信息合计 90%,根据风险场景动态分配** +- **司法 + 借贷同时高风险时,直接判定 F 级(不参与加权)** + +--- + +## 二、综合分三维度结构 + +| 业务维度 | 输出字段 | 计算方法 | 基准权重 | 是否动态 | +| :--- | :--- | :--- | :--- | :--- | +| 个人身份信息 | `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 级) + +| 等级 | 分数区间 | 含义 | +| :--- | :--- | :--- | +| A | 800 – 1000 | 最安全 | +| B | 600 – 799 | 较安全 | +| C | 400 – 599 | 一般 | +| D | 200 – 399 | 较不安全 | +| E | 0 – 199 | 高风险 | +| **F** | — | **司法 + 借贷双重高风险(强制)** | + +--- + +## 四、动态权重机制 + +### 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 级强判规则(最高优先级) + +同时满足以下条件时: + +```text +ra_level = "F" +ra_score = 0 +``` + +| 条件 | 判定标准 | +| :--- | :--- | +| 司法高风险 | `ra_judicial_score ≤ 400` | +| 借贷高风险 | `ra_credit_score ≤ 400` | +| 风险叠加 | 至少存在 2 项中高风险记录 | + +> **F 级不参与任何加权计算,直接覆盖结果** + +--- + +## 六、各维度风险扣分规则 + +### 1️⃣ ra_verify_score(个人身份信息,权重 10% 固定) + +- **方法链:** `calcRAVerifyScore → calcRAVerifyRiskPoints → toRASafetyScore` +- **数据来源:** `triple`、`identity`、`presence` + +| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | +| :--- | :--- | :--- | :--- | +| 三要素不一致 | `triple.state` | 有值且不为 `"1"` | 400 | +| 二要素不一致 | `identity.result` | 不为 `0` | 400 | +| 在网异常 | `presence.desc` | 含停机 / 销号 / 不在网 | 80 | +| 状态码异常 | `presence.status` | 大于 `1` | 50 | + +> 身份核验为 **基础准入项**,权重低但不可忽略;不一致时单项扣分仍可达 400–800 分。 + +--- + +### 2️⃣ ra_judicial_score(个人司法信息,基准权重 50%,可动态上调) + +- **方法链:** `calcRAJudicialScore → calcRAJudicialRiskPoints → toRASafetyScore` +- **数据来源:** `judicial.judicial_data` +- **子维度结构:** 涉诉统计 + 失信被执行人 + 限高被执行人(三类独立累加) + +#### 2.1 涉诉统计(lawsuitStat) + +遍历 `lawsuitStat` 下各类型节点(如 `civil`、`criminal`、`administrative`、`preservation`、`implement`、`bankrupt` 等),读取 `*.count` 累加: + +| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 | +| :--- | :--- | :--- | :--- | :--- | +| 涉诉总件数 | `lawsuitStat.*.count.count_total` | 各类型累加 | 80 / 件 | 400 | +| 未结案数 | `lawsuitStat.*.count.count_wei_total` | 各类型累加 | 60 / 件 | 300 | +| 被告件数 | `lawsuitStat.*.count.count_beigao` | 各类型累加 | 50 / 件 | 250 | + +#### 2.2 失信被执行人(breachCaseList) + +| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 | +| :--- | :--- | :--- | :--- | :--- | +| 失信执行人记录 | `breachCaseList` 长度 | 每条记录 | **150 / 条** | **450** | + +- 对应最高法 **失信被执行人名单** +- 命中即视为 **重度司法风险**,触发动态权重向司法倾斜(`HAS_JUDICIAL_RISK = true`) +- 单条扣分高于普通涉诉件数,体现执行阶段信用惩戒的严重性 + +#### 2.3 限高被执行人(consumptionRestrictionList) + +| 风险扣分项 | 子字段路径 | 触发条件 | 扣分 | 单项上限 | +| :--- | :--- | :--- | :--- | :--- | +| 限高执行人记录 | `consumptionRestrictionList` 长度 | 每条记录 | **200 / 条** | **400** | + +- 对应 **限制高消费被执行人名单** +- 单条扣分高于失信记录,体现对消费 / 出行能力的直接限制 +- 与失信记录 **独立计分、互不替代**,可同时累加 + +#### 2.4 司法子维度扣分优先级(业务解释) + +| 优先级 | 子维度 | 典型场景 | 相对严重度 | +| :--- | :--- | :--- | :--- | +| 1 | 限高被执行人 | 已被法院采取限高措施 | 最高 | +| 2 | 失信被执行人 | 已被列入失信名单 | 高 | +| 3 | 未结案涉诉 | 纠纷仍在审理 / 执行中 | 中 | +| 4 | 被告涉诉 | 作为被告被起诉 | 中 | +| 5 | 历史涉诉(已结案) | 仅 count_total 有值 | 相对较低 | + +--- + +### 3️⃣ ra_credit_score(借贷信息,基准权重 40%,可动态上调) + +- **方法链:** `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 | + +--- + +### 4️⃣ 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 | + +> 欺诈信号仍单独计算并返回 `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 | 核验正常 | +| 个人司法 | 350 | 失信 1 条 + 限高 1 条,扣分 350 | +| 借贷 | 680 | 轻度借贷风险 | + +动态权重:身份 10% + 司法 65% + 借贷 25% + +```text +ra_score = 900×0.10 + 350×0.65 + 680×0.25 + = 90 + 227.5 + 170 + = 488 → D/E +``` + +--- + +### ⚠️ 样例 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 ≤ 400`(含失信 / 限高 / 多笔涉诉) +- `ra_credit_score ≤ 400`(当前逾期 + 借贷意向 Reject) + +→ **直接判定:F,`ra_score = 0`** + +--- + +## 八、代码位置 + +| 方法 | 文件 | +| :--- | :--- | +| `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 失信 | 同表罗列 | **限高 200/条、失信 150/条,独立计分** | +| 欺诈维度 | 参与加权 | **单独输出,不参与 `ra_score`** | +| 双高风险 | 仍参与加权 | **直接 F 级** |