Explorar o código

更新特征字段

Sherlock hai 11 meses
pai
achega
12ff0174db
Modificáronse 2 ficheiros con 939 adicións e 494 borrados
  1. 428 494
      models/rank/data/config.py
  2. 511 0
      models/rank/data/config_ori.py

+ 428 - 494
models/rank/data/config.py

@@ -1,513 +1,447 @@
 class CustConfig:
     FEATURE_COLUMNS = [
-        "BB_RETAIL_CUSTOMER_CODE",                     # 零售户代码
-        "BB_RTL_CUST_GRADE_NAME",                      # 零售户分档名称
-        "BB_RTL_CUST_MARKET_TYPE_NAME",                # 零售户市场类型名称
-        "STORE_AREA",                                  # 店铺经营面积
-        "BB_RTL_CUST_BUSINESS_TYPE_NAME",              # 零售户业态名称
-        "OPERATOR_EDU_LEVEL",                          # 零售客户经营者文化程
-        "OPERATOR_AGE",                                # 经营者年龄
-        "BB_RTL_CUST_CHAIN_FLAG",                      # 零售户连锁标识
-        "PRESENT_STAR_TERMINAL",                       # 终端星级
-        "MD04_MG_RTL_CUST_CREDITCLASS_NAME",           # 零售户信用等级名称
-        "MD04_DIR_SAL_STORE_FLAG",                     # 直营店标识
-        "BB_CUSTOMER_MANAGER_SCOPE_NAME",              # 零售户经营范围名称
-        "PRODUCT_INSALE_QTY",                          # 在销品规数
-        # "CUST_INVESTMENT",                             # 店铺资源投入建设
-        
-        # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",       # 新品订货量占同价类比重
-        # "PRODUCT_LISTING_RATE",                        # 品规上架率
-        # "STOCKOUT_DAYS",                              # 断货天数
-        # "YLT_TURNOVER_RATE",                           # 易灵通动销率
-        # "YLT_BAR_PACKAGE_SALE_OCC",                    # 易灵通条包销售占比
-        # "UNPACKING_RATE",                              # 拆包率
-        
-        
-        # "BB_RTL_CUST_POSITION_TYPE_NAME",              # 零售户商圈类型名称
-        
-        # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME",             # 零售户业态细分名称
-        
-        # "BB_RTL_CUST_TERMINAL_LEVEL_NAME",             # 零售户终端层级名称
-        # "BB_RTL_CUST_TERMINALEVEL_NAME",               # 零售户终端层级细分名称
-        # "MD04_MG_SAMPLE_CUST_FLAG",                    # 样本户标识
-        # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG",            # 零售户大户标识
-        # "BB_RTL_CUST_OPERATE_METHOD_NAME",             # 零售户经营方式名称
-        # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME",          # 零售户卷烟经营规模名称
-        
-        # "AVERAGE_CONSUMER_FLOW",                       # 月均消费人流
-        # "NEW_PRODUCT_MEMBERS_QTY",                     # 新品消费会员数量
+        "BB_RETAIL_CUSTOMER_CODE",              # 零售户代码
+        "BB_RTL_CUST_MARKET_TYPE_NAME",         # 零售户市场类型名称
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME",       # 零售客户业态名称
+        "BB_RTL_CUST_CHAIN_FLAG",               # 零售户连锁标识
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME",    # 零售户信用等级名称
+        "MD04_DIR_SAL_STORE_FLAG",              # 直营店标识
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME",       # 零售户经营范围名称
+        "BB_RTL_CUST_TERMINAL_LEVEL_NAME",      # 零售户终端层级名称
+        "OPERATOR_EDU",                         # 零售客户经营者文化程度
+        "STORE_AREA",                           # 店铺经营面积
+        "OPERATOR_AGE",                         # 经营者年龄
+        "PRODUCT_INSALE_QTY",                   # 在销品规数
     ]
-    # 数据清洗规则
-    CLEANING_RULES = {
-        "BB_RTL_CUST_GRADE_NAME":                   {"method": "fillna", "opt": "fill", "value": "十五档", "type": "str"},
-        "BB_RTL_CUST_MARKET_TYPE_NAME":             {"method": "fillna", "opt": "fill", "value": "城网", "type": "str"},
-        "STORE_AREA":                               {"method": "fillna", "opt": "mean", "type": "num"},
-        "BB_RTL_CUST_BUSINESS_TYPE_NAME":           {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
-        "OPERATOR_EDU_LEVEL":                       {"method": "fillna", "opt": "fill", "value": "无数据", "type": "str"},
-        "OPERATOR_AGE":                             {"method": "fillna", "opt": "mean", "type": "num"},
-        "BB_RTL_CUST_CHAIN_FLAG":                   {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
-        "PRESENT_STAR_TERMINAL":                    {"method": "fillna", "opt": "fill", "value": "非星级", "type": "str"},
-        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":        {"method": "fillna", "opt": "fill", "value": "B", "type": "str"},
-        "MD04_DIR_SAL_STORE_FLAG":                  {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
-        "BB_CUSTOMER_MANAGER_SCOPE_NAME":           {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
-        "PRODUCT_INSALE_QTY":                       {"method": "fillna", "opt": "mean", "type": "num"},
-        # "CUST_INVESTMENT":                          {"method": "fillna", "opt": "fill", "type": 0}
-        
-        
-        # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC":    {"method": "fillna", "opt": "mean", "type": "num"},
-        # "PRODUCT_LISTING_RATE":                     {"method": "fillna", "opt": "mean", "type": "num"},
-        # "STOCKOUT_DAYS":                            {"method": "fillna", "opt": "mean", "type": "num"},
-        # "YLT_TURNOVER_RATE":                        {"method": "fillna", "opt": "mean", "type": "num"},
-        # "NEW_PRODUCT_MEMBERS_QTY":                  {"method": "fillna", "opt": "mean", "type": "num"},
-        # "PRODUCT_INSALE_QTY":                       {"method": "fillna", "opt": "mean", "type": "num"},
-        # "UNPACKING_RATE":                           {"method": "fillna", "opt": "mean", "type": "num"},
-        
-        
-        
-        
-        # "BB_RTL_CUST_POSITION_TYPE_NAME":           {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
-        # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME":          {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
-        # "BB_RTL_CUST_TERMINALEVEL_NAME":          {"method": "fillna", "opt": "replace", "value": "BB_RTL_CUST_TERMINAL_LEVEL_NAME", "type": "str"},
-        # "MD04_MG_SAMPLE_CUST_FLAG":                 {"method": "fillna", "value": "N", "opt": "fill"},
-        # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG":         {"method": "fillna", "value": "N", "opt": "fill"},
-        # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME":       {"method": "fillna", "value": "中", "opt": "fill"},
-    }
     
     ONEHOT_CAT = {
-        "BB_RTL_CUST_GRADE_NAME":                   ['一档', '二档', '三档', '四档', '五档', '六档', '七档', '八档', '九档', '十档', '十一档', '十二档', 
-                                                    '十三档', '十四档', '十五档', '十六档', '十七档', '十八档', '十九档', '二十档', '二十一档', '二十二档', 
-                                                    '二十三档', '二十四档', '二十五档', '二十六档', '二十七档', '二十八档', '二十九档', '三十档'],
-        "BB_RTL_CUST_MARKET_TYPE_NAME":             ["城网", "农网"],
-        "BB_RTL_CUST_BUSINESS_TYPE_NAME":           ["便利店", "超市", "烟草专业店", "娱乐服务类", "其他"],
-        "OPERATOR_EDU_LEVEL":                       [1, 2, 3, 4, 5, 6, 7, "无数据"],
-        "BB_RTL_CUST_CHAIN_FLAG":                   ["是", "否"],
-        "PRESENT_STAR_TERMINAL":                    ["一星", "二星", "三星", "四星", "五星", "非星级"],
-        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":        ["AAA", "AA", "A", "B", "C", "D"],
-        "MD04_DIR_SAL_STORE_FLAG":                  ["是", "否"],
-        "BB_CUSTOMER_MANAGER_SCOPE_NAME":           ["是", "否"],
-        
-        
-        
-        # "BB_RTL_CUST_POSITION_TYPE_NAME":           ["居民区", "商业娱乐区", "交通枢纽区", "旅游景区", "工业区", "集贸区", "院校学区", "办公区", "其他"]
+        "BB_RTL_CUST_MARKET_TYPE_NAME":           ["城网", "农网"],
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME":         ["便利店", "超市", "烟草专业店", "娱乐服务类", "其他"],
+        "BB_RTL_CUST_CHAIN_FLAG":                 ["是", "否"],
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":      ["AAA", "AA", "A", "B", "C", "D"],
+        "MD04_DIR_SAL_STORE_FLAG":                ["是", "否"],
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME":         ["是", "否"],
+        "BB_RTL_CUST_TERMINAL_LEVEL_NAME":        ["普通终端", "一般现代终端", "合作终端", "加盟终端", "直营终端"],
+        "OPERATOR_EDU":                           [1, 2, 3, 4, 5, 6, 7, "无数据"],
+        "STORE_AREA":                             ["0-20", "21-50", "51-100", "101-150", "151-200", "201-300", "301-400", "401-600", "601-1000", "1001-2000", "2000以上"],
+        "OPERATOR_AGE":                           ["19-30", "31-40", "41-50", "51-65", "66-80", "80以上"],
+        "PRODUCT_INSALE_QTY":                     ["0-10", "11-20", "21-30", "31-40", "41-50", "51-60", 
+                                                   "61-70", "71-80", "81-90", "91-100", "101-110", "111-120", 
+                                                   "121-130", "131-140", "141-150", "151-160", "161-170", "171-180", 
+                                                   "181-190", "191-200", "201-210", "211-220", "221-230", "231-240", 
+                                                   "241-250", "251-260", "261-270", "271-280", "281-290", "291-350"],
     }
-    
-    
-    
+
 class ProductConfig:
     FEATURE_COLUMNS = [
-        "product_code",                                # 商品编码
-        "direct_retail_price",                         # 建议零售价
-        "is_low_tar",                                  # 是否低焦油烟
-        "tar_qty",                                     # 焦油含量
-        "is_exploding_beads",                          # 是否爆珠
-        "is_shortbranch",                              # 是否短支烟
-        "is_medium",                                   # 是否中支烟
-        "is_tiny",                                     # 是否细支
-        "product_style_code_name",                     # 包装类型名称
-        "org_is_abnormity",                            # 是否异形包装
-        "is_chuangxin",                                # 是否创新品类
-        "is_key_brand",                                # 是否重点品牌
-        "foster_level_hy",                             # 是否行业共育品规
-        "foster_level_sj",                             # 是否省级共育品规
-        "is_cigar",                                    # 是否雪茄型卷烟
-        "co_qty",                                      # 一氧化碳含量
-        "tbc_total_length",                            # 烟支总长度
-        "tbc_length",                                  # 烟支长度
-        "filter_length",                               # 滤嘴长度
-        
-
-        
-        # "adjust_price",                                # 含税调拨价
-        # "notwithtax_adjust_price",                     # 不含税调拨价
-        # "whole_sale_price",                            # 统一批发价
-        # "allot_price",                                 # 调拨价
-        # "direct_whole_price",                          # 批发指导价
-        # "retail_price",                                # 零售价
-        # "price_type_name",                             # 卷烟价类名称
-        # "gear_type_name",                              # 卷烟档位名称
-        # "category_type_name",                          # 卷烟品类名称
-        # "is_high_level",                               # 是否高端烟
-        # "is_upscale_level",                            # 是否高端烟不含高价
-        # "is_high_price",                               # 是否高价烟
-        # "is_low_price",                                # 是否低价烟
-        # "is_encourage",                                # 是否全国鼓励品牌
-        # "is_abnormity",                                # 是否异形包装
-        # "is_intake",                                   # 是否进口烟
-        # "is_short",                                    # 是否紧俏品牌
-        # "is_ordinary_price_type",                      # 是否普一类烟
-        # "source_type",                                 # 来源类型
-        # "chinese_mix",                                 # 中式混合
-        # "sub_price_type_name",                         # 细分卷烟价类名称
+        "city_uuid",                     # 地市id
+        "product_code",                  # 商品编码
+        "factory_name",                  # 产地(工业公司名称)
+        "brand_name",                    # 品牌名称
+        "is_low_tar",                    # 低焦油卷烟
+        "is_medium",                     # 中支烟
+        "is_tiny",                       # 细支烟
+        "is_coarse",                     # 粗支烟(同时非中非细)
+        "is_exploding_beads",            # 爆珠烟
+        "no_is_exploding_beads",         # 非爆珠烟
+        "is_abnormity",                  # 异形包装
+        "no_is_abnormity",               # 非异形包装
+        "is_cig",                        # 雪茄烟
+        "no_is_cig",                     # 非雪茄烟
+        "is_chuangxin",                  # 创新品类
+        "no_is_chuangxin",               # 非创新品类
+        "direct_retail_price",           # 卷烟建议零售价
+        "tbc_total_length",              # 烟支总长度
+        "product_style",                 # 包装类型
     ]
     
-    CLEANING_RULES = {
-        "direct_retail_price":                         {"method": "fillna", "opt": "mean", "type": "num"},
-        "is_low_tar":                                  {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "tar_qty":                                     {"method": "fillna", "opt": "mean", "type": "num"},
-        "is_exploding_beads":                          {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_shortbranch":                              {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_medium":                                   {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_tiny":                                     {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "product_style_code_name":                     {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
-        "org_is_abnormity":                            {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_chuangxin":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_key_brand":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "foster_level_hy":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "foster_level_sj":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "is_cigar":                                    {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        "co_qty":                                      {"method": "fillna", "opt": "mean", "type": "num"},
-        "tbc_total_length":                            {"method": "fillna", "opt": "mean", "type": "num"},
-        "tbc_length":                                  {"method": "fillna", "opt": "mean", "type": "num"},
-        "filter_length":                               {"method": "fillna", "opt": "mean", "type": "num"},
-        
-        
-        # "adjust_price":                                {"method": "fillna", "opt": "mean", "type": "num"},
-        # "notwithtax_adjust_price":                     {"method": "fillna", "opt": "mean", "type": "num"},
-        # "whole_sale_price":                            {"method": "fillna", "opt": "mean", "type": "num"},
-        # "allot_price":                                 {"method": "fillna", "opt": "fill", "type": "num", "value": 0.0},
-        # "direct_whole_price":                          {"method": "fillna", "opt": "mean", "type": "num"},
-        # "retail_price":                                {"method": "fillna", "opt": "mean", "type": "num"},
-        # "price_type_name":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "一类烟"},
-        # "gear_type_name":                              {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
-        # "category_type_name":                          {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
-        # "is_high_level":                               {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_upscale_level":                            {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_high_price":                               {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_low_price":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_encourage":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_abnormity":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_intake":                                   {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_short":                                    {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "is_ordinary_price_type":                      {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "source_type":                                 {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
-        # "chinese_mix":                                 {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
-        # "sub_price_type_name":                         {"method": "fillna", "opt": "fill", "type": "str", "value": "普一类烟"},
-    }
-    
-
     ONEHOT_CAT = {
-        "is_low_tar":                                  ["是", "否"],
-        "is_exploding_beads":                          ["是", "否"],
-        "is_shortbranch":                              ["是", "否"],
-        "is_medium":                                   ["是", "否"],
-        "is_tiny":                                     ["是", "否"],
-        "product_style_code_name":                     ["条盒硬盒", "条包硬盒", "条盒软盒", "条包软盒", "铁盒", "其他"],
-        "org_is_abnormity":                            ["是", "否"],
-        "is_chuangxin":                                ["是", "否"],
-        "is_key_brand":                                ["是", "否"],
-        "foster_level_hy":                             ["是", "否"],
-        "foster_level_sj":                             ["是", "否"],
-        "is_cigar":                                    ["是", "否"],
-        
-        
-        
-        # "price_type_name":                             ["一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
-        # "gear_type_name":                              ["第一档位", "第二档位", "第三档位", "第四档位", "第五档位", "第六档位", "第七档位", "第八档位", "其他"],
-        # "category_type_name":                          ["第1品类", "第2品类", "第3品类", "第4品类", "第5品类", "第6品类", "第7品类", 
-        #                                                 "第8品类", "第9品类", "第10品类", "第11品类", "第12品类", "第13品类", "其他"],
-        # "is_high_level":                               ["是", "否"],
-        # "is_upscale_level":                            ["是", "否"],
-        # "is_high_price":                               ["是", "否"],
-        # "is_low_price":                                ["是", "否"],
-        # "is_encourage":                                ["是", "否"],
-        # "is_abnormity":                                ["是", "否"],
-        # "is_intake":                                   ["是", "否"],
-        # "is_short":                                    ["是", "否"],
-        # "is_ordinary_price_type":                      ["是", "否"],
-        # "source_type":                                 ["是", "否"],
-        # "chinese_mix":                                 ["是", "否"],
-        # "sub_price_type_name":                         ["高端烟", "高价位烟", "普一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
+        "factory_name":                    ["安徽中烟", "澳门云福卷烟厂", "北欧烟草集团", "博格集团", "重庆中烟", "川渝中烟", "菲利普莫里斯亚洲", 
+                                            "福建中烟", "甘肃工业", "广东中烟", "广西中烟", "贵州中烟", "海南红塔", "河北中烟", "河南中烟", 
+                                            "黑龙江工业", "红塔辽宁烟草", "湖北中烟", "湖南中烟", "吉林工业", "家源开发股份有限公司", 
+                                            "嘉莱赫国际有限公司", "江苏中烟", "江西中烟", "凯德控股有限公司", "力量雪茄烟草有限公司", 
+                                            "南洋兄弟烟草股份", "内蒙古昆明卷烟", "日本烟草(香港)有限公司", "三宝麟国际集团", "厦门调拨站", 
+                                            "山东中烟", "山西昆明烟草", "陕西中烟", "上海烟草(集团)公司", "上海烟草公司", "深圳工业", "四川中烟", 
+                                            "特富意烟草(国际)", "雪茄客烟草国际贸易有限公司", "耀莱雪茄控股有限公司", "引领国际有限公司", 
+                                            "英飞烽香港有限公司", "英美烟草中国有限公司", "云南中烟", "浙江中烟", "中茄国际贸易有限公司", 
+                                            "中烟英美烟草国际有限公司", "株式会社 KT&G"],
+        "brand_name":                      ["万宝路", "555", "骆驼(国外)", "大华", "娇子", "大青山", "龙凤呈祥", "黄鹤楼", "真龙", "七匹狼", 
+                                            "芙蓉王", "双喜(广)", "贵烟", "钓鱼台", "红双喜(南洋)", "云烟", "蒙特", "富恩特", "拉·加莱拉", "苏烟", 
+                                            "丹纳曼", "黄山", "南京", "利群", "金桥", "泰山", "好日子", "石林", "美登", "红河", "嘉辉", "七星", 
+                                            "都彭", "天下秀", "长城", "高希霸", "钻石", "金圣", "王冠雪茄", "黄金叶", "中南海", "长白山", "红旗渠", 
+                                            "建牌", "大卫杜夫", "罗密欧", "茂大", "红金龙", "天子", "熊猫", "双喜(深)", "大前门", "兰州", 
+                                            "红双喜(沪)", "雄狮", "广州", "红玫王", "黄果树", "红塔山", "福", "小熊猫", "爱喜", "蒙特利", "玉溪", 
+                                            "都宝", "麦克纽杜", "卡里罗", "中华", "牡丹(沪)", "阿里山", "顺百利", "白沙", "羊城", "白云", 
+                                            "特美思", "国宾", "帕特加", "比德奥", "冬虫夏草", "威龙(湛江)", "香格里拉", "红梅", "延安", 
+                                            "特富意", "石狮", "金香港", "好猫", "登喜路", "乐迪", "林海灵芝", "椰树", "北京", "大红鹰", "大丰收", 
+                                            "红双喜(武汉)", "五叶神", "狮", "优民", "将军", "遵义", "恒大", "飞马", "红三环", "芙蓉", "工字", 
+                                            "古田", "狮牌", "君力", "哈尔滨", "梦都", "香梅(阜阳)", "哈德门", "梅州", "红山茶", "猴王", "沙龙", 
+                                            "潘趣", "狮子牌", "上海", "红玫", "醒宝", "广州湾", "百乐门", "关塔那摩", "威斯", "五一", "寿百年", 
+                                            "人民大会堂", "土楼", "三沙", "西湖", "光明", "阿诗玛", "宝亨", "恭贺新禧", "长寿", "茶花", "迎客松", 
+                                            "龙烟", "金澳门", "宝岛", "多米尼加之花", "国喜", "金驼", "君特欧", "上游", "幸福", "春城", "吉庆", 
+                                            "黄山松", "黄金龙", "紫气东来", "彼亚赛", "银辉", "潮牌", "庐山", "三峡", "壹支笔", "双叶"],
+        "is_low_tar":                      ["是", "否"],
+        "is_medium":                       ["是", "否"],
+        "is_tiny":                         ["是", "否"],
+        "is_coarse":                       ["是", "否"],
+        "is_exploding_beads":              ["是", "否"],
+        "no_is_exploding_beads":           ["是", "否"],
+        "is_abnormity":                    ["是", "否"],
+        "no_is_abnormity":                 ["是", "否"],
+        "is_cig":                          ["是", "否"],
+        "no_is_cig":                       ["是", "否"],
+        "is_chuangxin":                    ["是", "否"],
+        "no_is_chuangxin":                 ["是", "否"],
+        "direct_retail_price":             ["0-10", "10-30", "31-50", "51-100", "10-19.9", "250-499.9", "200-249.9", 
+                                            "5-9.9", "0-5", "100-109.9", "150-199.9", "101-150", "120-129.9", "大于500", 
+                                            "20-29.9", "30-39.9", "140-149.9", "50-59.9", "40-49.9", "80-89.9", "60-69.9", 
+                                            "70-79.9", "大于150", "130-139.9", "90-99.9", "110-119.9"],
+        "tbc_total_length":                ["小于79", "80-89", "90-100", "大于120"],
+        "product_style":                   ["包装类型(条盒硬盒)", "包装类型(条包硬盒)", "包装类型(条盒软盒)", "包装类型(条包软盒)", "包装类型(铁盒)", "包装类型(其它)"],
     }
-    
+
 class OrderConfig:
     FEATURE_COLUMNS = [
-        "BB_RETAIL_CUSTOMER_CODE",                          # 零售户编码
-        "PRODUCT_CODE",                                     # 卷烟编码
-        "MONTH6_SALE_QTY",                                  # 近半年销量(箱)
-        "MONTH6_SALE_AMT",                                  # 近半年销售额(万元)
-        "MONTH6_GROSS_PROFIT_RATE",                         # 近半年毛利率
-        "MONTH6_SALE_QTY_YOY",                              # 销售量同比
-        "MONTH6_SALE_QTY_MOM",                              # 销售量环比
-        "MONTH6_SALE_AMT_YOY",                              # 销售额(购进额)同比
-        "MONTH6_SALE_AMT_MOM",                              # 销售额(购进额)环比
-        "STOCK_QTY",                                        # 库存
-        "ORDER_FULLORDR_RATE",                              # 订足率
-        "FULL_FILLMENT_RATE",                               # 订单满足率
-        "ORDER_FULLORDR_RATE_MOM",                          # 订足率环比
-        "CUSTOMER_REPURCHASE_RATE",                         # 会员重购率  
-        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",            # 新品订货量占同价类比重/decimal(18,6)
-        "DEMAND_RATE",                                      # 需求量满足率
-        "LISTING_RATE",                                     # 品规商上架率
-        "PUT_MARKET_FINISH_RATE",                           # 投放完成率
-        "OUT_STOCK_DAYS",                                   # 断货天数
-        "YLT_TURNOVER_RATE",                                # 易灵通动销率
-        "YLT_BAR_PACKAGE_SALE_OCC",                         # 易灵通调包销售占比
-        "UNPACKING_RATE",                                   # 拆包率
-        "POS_PACKAGE_PRICE",                                # pos机单包价格
-    ]
-    
-    CLEANING_FEATURES = [
-        "MONTH6_SALE_QTY",
-        "MONTH6_SALE_AMT",
-        "MONTH6_GROSS_PROFIT_RATE",
-        "MONTH6_SALE_QTY_YOY",
-        "MONTH6_SALE_QTY_MOM",
-        "MONTH6_SALE_AMT_YOY",
-        "MONTH6_SALE_AMT_MOM",
-        "STOCK_QTY",
-        "ORDER_FULLORDR_RATE",
-        "FULL_FILLMENT_RATE",
-        "ORDER_FULLORDR_RATE_MOM",
-        "CUSTOMER_REPURCHASE_RATE",
-        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",
-        "DEMAND_RATE",
-        "LISTING_RATE",
-        "PUT_MARKET_FINISH_RATE",
-        "OUT_STOCK_DAYS",
-        "UNPACKING_RATE",
+        "cust_uuid",                      # 零售户uuid
+        "cust_code",                      # 零售户编码
+        "product_code",                   # 品牌规格编码
+        "sale_qty",                       # 销量包
+        "sale_qty_l",                     # 销量上期
+        "sale_qty_hb",                    # 销量环比
+        "sale_amt",                       # 销售额包
     ]
     
-    WEIGHTS = {
-        "MONTH6_SALE_QTY":                                  0.15,
-        "MONTH6_SALE_QTY_MOM":                              0.2,
-        "ORDER_FULLORDR_RATE":                              0.3,
-        "ORDER_FULLORDR_RATE_MOM":                          0.35,
-    }
-    
-    POSFEATURES = [
-        "YLT_TURNOVER_RATE","YLT_BAR_PACKAGE_SALE_OCC","POS_PACKAGE_PRICE"
+
+class ShopConfig:
+    FEATURE_COLUMNS = [
+        "cust_code",                      # 客户编码
+        "r_home_num",                     # 常驻人口_居住人数
+        "r_work_num",                     # 常驻人口_工作人数
+        "r_resident_num",                 # 常驻人口_工作或居住人数
+        "r_urban_cons_middle",            # 常驻人口_城市消费水平_中
+        "r_urban_cons_low",               # 常驻人口_城市消费水平_低
+        "r_urban_cons_lower",             # 常驻人口_城市消费水平_次低
+        "r_urban_cons_secondhigh",        # 常驻人口_城市消费水平_次高
+        "r_urban_cons_high",              # 常驻人口_城市消费水平_高
+        "r_edu_junior_middle",            # 常驻人口_学历_初中
+        "r_edu_doctor",                   # 常驻人口_学历_博士
+        "r_edu_specialty",                # 常驻人口_学历_大专
+        "r_edu_primary",                  # 常驻人口_学历_小学
+        "r_edu_college",                  # 常驻人口_学历_本科
+        "r_edu_postgraduate",             # 常驻人口_学历_硕士
+        "r_edu_senior_middle",            # 常驻人口_学历_高中
+        "r_house_price79999",             # 常驻人口_居住社区房价_60000_79999
+        "r_house_price59999",             # 常驻人口_居住社区房价_40000_59999
+        "r_house_price39999",             # 常驻人口_居住社区房价_20000_39999
+        "r_house_price19999",             # 常驻人口_居住社区房价_10000_19999
+        "r_house_price9999",              # 常驻人口_居住社区房价_8000_9999
+        "r_house_price7999",              # 常驻人口_居住社区房价_5000_7999
+        "r_house_price4999",              # 常驻人口_居住社区房价_2000_4999
+        "r_age_17",                       # 常驻人口_年龄_0_17
+        "r_age_24",                       # 常驻人口_年龄_18_24
+        "r_age_30",                       # 常驻人口_年龄_25_30
+        "r_age_35",                       # 常驻人口_年龄_31_35
+        "r_age_40",                       # 常驻人口_年龄_36_40
+        "r_age_45",                       # 常驻人口_年龄_41_45
+        "r_age_60",                       # 常驻人口_年龄_46_60
+        "r_age_over_60",                  # 常驻人口_年龄_61以上
+        "r_sex_woman",                    # 常驻人口_性别_女
+        "r_sex_man",                      # 常驻人口_性别_男
+        "r_catering_50",                  # 常驻人口_餐饮消费水平_50
+        "r_catering_100",                 # 常驻人口_餐饮消费水平_100
+        "r_catering_150",                 # 常驻人口_餐饮消费水平_150
+        "r_catering_200",                 # 常驻人口_餐饮消费水平_200
+        "r_catering_500",                 # 常驻人口_餐饮消费水平_500
+        "r_catering_over_500",            # 常驻人口_餐饮消费水平_500以上
+        "r_catering_times_2",             # 常驻人口_餐饮消费频次_1_2
+        "r_catering_times_4",             # 常驻人口_餐饮消费频次_2_4
+        "r_catering_times_6",             # 常驻人口_餐饮消费频次_4_6
+        "r_catering_times_8",             # 常驻人口_餐饮消费频次_6_8
+        "r_catering_times_10",            # 常驻人口_餐饮消费频次_8_10
+        "r_catering_times_11",            # 常驻人口_餐饮消费频次_11以上
+        "r_native_beijing",               # 常驻人口_家乡地_北京市
+        "r_native_tianjing",              # 常驻人口_家乡地_天津市
+        "r_native_hebei",                 # 常驻人口_家乡地_河北省
+        "r_native_shanxi",                # 常驻人口_家乡地_山西省
+        "r_native_neimeng",               # 常驻人口_家乡地_内蒙古
+        "r_native_liaoning",              # 常驻人口_家乡地_辽宁省
+        "r_native_jilin",                 # 常驻人口_家乡地_吉林省
+        "r_native_heilongjiang",          # 常驻人口_家乡地_黑龙江省
+        "r_native_shanghai",              # 常驻人口_家乡地_上海市
+        "r_native_jiangsu",               # 常驻人口_家乡地_江苏省
+        "r_native_zhejiang",              # 常驻人口_家乡地_浙江省
+        "r_native_anhui",                 # 常驻人口_家乡地_安徽省
+        "r_native_fujian",                # 常驻人口_家乡地_福建省
+        "r_native_jiangix",               # 常驻人口_家乡地_江西省
+        "r_native_shandong",              # 常驻人口_家乡地_山东省
+        "r_native_henan",                 # 常驻人口_家乡地_河南省
+        "r_native_hubei",                 # 常驻人口_家乡地_湖北省
+        "r_native_hunan",                 # 常驻人口_家乡地_湖南省
+        "r_native_guangdong",             # 常驻人口_家乡地_广东省
+        "r_native_hainan",                # 常驻人口_家乡地_海南省
+        "r_native_sichuan",               # 常驻人口_家乡地_四川省
+        "r_native_guizhou",               # 常驻人口_家乡地_贵州省
+        "r_native_yunnan",                # 常驻人口_家乡地_云南省
+        "r_native_shan",                  # 常驻人口_家乡地_陕西省
+        "r_native_gansu",                 # 常驻人口_家乡地_甘肃省
+        "r_native_qinghai",               # 常驻人口_家乡地_青海省
+        "r_native_guangxi",               # 常驻人口_家乡地_广西壮族自治区
+        "r_native_ningxia",               # 常驻人口_家乡地_宁夏回族自治区
+        "r_native_xinjiang",              # 常驻人口_家乡地_新疆维吾尔自治区
+        "r_native_xizang",                # 常驻人口_家乡地_西藏自治区
+        "r_native_chongqing",             # 常驻人口_家乡地_重庆市
+        "r_native_hongkong",              # 常驻人口_家乡地_香港
+        "r_native_macao",                 # 常驻人口_家乡地_澳门
+        "r_native_taiwan",                # 常驻人口_家乡地_台湾
+        "r_native_other",                 # 常驻人口_家乡地_其它
+        "f_flow_num",                     # 流动人口_工作日_日均流动人口数量
+        "f_holiday_flow_num",             # 流动人口_节假日_日均流动人口数量
+        "f_workday_flow_num",             # 流动人口_日均流动人口数量
+        "f_flowurban_cons_middle",        # 日均流动_城市消费水平_中
+        "f_flowurban_cons_low",           # 日均流动_城市消费水平_低
+        "f_flowurban_cons_lower",         # 日均流动_城市消费水平_次低
+        "f_flowurban_cons_second_high",   # 日均流动_城市消费水平_次高
+        "f_flowurban_cons_high",          # 日均流动_城市消费水平_高
+        "f_flowedu_junior_middle",        # 日均流动_学历_初中
+        "f_flowedu_doctor",               # 日均流动_学历_博士
+        "f_flowedu_specialty",            # 日均流动_学历_大专
+        "f_flowedu_primary",              # 日均流动_学历_小学
+        "f_flowedu_college",              # 日均流动_学历_本科
+        "f_flowedu_postgraduate",         # 日均流动_学历_硕士
+        "f_flowedu_senior_middle",        # 日均流动_学历_高中
+        "f_flowhouse_middle",             # 日均流动_居住社区房价_中
+        "f_flowhouse_low",                # 日均流动_居住社区房价_低
+        "f_flowhouse_lower",              # 日均流动_居住社区房价_次低
+        "f_flowhouse_second_high",        # 日均流动_居住社区房价_次高
+        "f_flowhouse_high",               # 日均流动_居住社区房价_高
+        "f_flowage_17",                   # 日均流动_年龄_0_17
+        "f_flowage_24",                   # 日均流动_年龄_18_24
+        "f_flowage_30",                   # 日均流动_年龄_25_30
+        "f_flowage_35",                   # 日均流动_年龄_31_35
+        "f_flowage_40",                   # 日均流动_年龄_36_40
+        "f_flowage_45",                   # 日均流动_年龄_41_45
+        "f_flowage_60",                   # 日均流动_年龄_46_60
+        "f_flowage_over_60",              # 日均流动_年龄_61以上
+        "f_flowsex_woman",                # 日均流动_性别_女
+        "f_flowsex_man",                  # 日均流动_性别_男
+        "f_holidayurban_cons_middle",     # 节假日流动_城市消费水平_中
+        "f_holidayurban_cons_low",        # 节假日流动_城市消费水平_低
+        "f_holidayurban_cons_lower",      # 节假日流动_城市消费水平_次低
+        "f_holidayurban_cons_secondhigh", # 节假日流动_城市消费水平_次高
+        "f_holidayurban_cons_high",       # 节假日流动_城市消费水平_高
+        "f_holidayedu_junior_middle",     # 节假日流动_学历_初中
+        "f_holidayedu_doctor",            # 节假日流动_学历_博士
+        "f_holidayedu_specialty",         # 节假日流动_学历_大专
+        "f_holidayedu_primary",           # 节假日流动_学历_小学
+        "f_holidayedu_college",           # 节假日流动_学历_本科
+        "f_holidayedu_postgraduate",      # 节假日流动_学历_硕士
+        "f_holidayedu_senior_middle",     # 节假日流动_学历_高中
+        "f_holidayhouse_middle",          # 节假日流动_居住社区房价_中
+        "f_holidayhouse_low",             # 节假日流动_居住社区房价_低
+        "f_holidayhouse_lower",           # 节假日流动_居住社区房价_次低
+        "f_holidayhouse_second_high",     # 节假日流动_居住社区房价_次高
+        "f_holidayhouse_high",            # 节假日流动_居住社区房价_高
+        "f_holidayage_17",                # 节假日流动_年龄_0_17
+        "f_holidayage_24",                # 节假日流动_年龄_18_24
+        "f_holidayage_30",                # 节假日流动_年龄_25_30
+        "f_holidayage_35",                # 节假日流动_年龄_31_35
+        "f_holidayage_40",                # 节假日流动_年龄_36_40
+        "f_holidayage_45",                # 节假日流动_年龄_41_45
+        "f_holidayage_60",                # 节假日流动_年龄_46_60
+        "f_holidayage_over_60",           # 节假日流动_年龄_61以上
+        "f_holidaysex_woman",             # 节假日流动_性别_女
+        "f_holidaysex_man",               # 节假日流动_性别_男
+        "f_workday_urban_cons_middle",    # 工作日流动_城市消费水平_中
+        "f_workday_urban_cons_low",       # 工作日流动_城市消费水平_低
+        "f_workday_urban_cons_lower",     # 工作日流动_城市消费水平_次低
+        "f_workday_urban_cons_secondhigh",# 工作日流动_城市消费水平_次高
+        "f_workday_urban_cons_high",      # 工作日流动_城市消费水平_高
+        "f_workday_edu_junior_middle",    # 工作日流动_学历_初中
+        "f_workday_edu_doctor",           # 工作日流动_学历_博士
+        "f_workday_edu_specialty",        # 工作日流动_学历_大专
+        "f_workday_edu_primary",          # 工作日流动_学历_小学
+        "f_workday_edu_college",          # 工作日流动_学历_本科
+        "f_workday_edu_postgraduate",     # 工作日流动_学历_硕士
+        "f_workday_edu_senior_middle",    # 工作日流动_学历_高中
+        "f_workday_house_middle",         # 工作日流动_居住社区房价_中
+        "f_workday_house_low",            # 工作日流动_居住社区房价_低
+        "f_workday_house_lower",          # 工作日流动_居住社区房价_次低
+        "f_workday_house_second_high",    # 工作日流动_居住社区房价_次高
+        "f_workday_house_high",           # 工作日流动_居住社区房价_高
+        "f_workday_age_17",               # 工作日流动_年龄_0_17
+        "f_workday_age_24",               # 工作日流动_年龄_18_24
+        "f_workday_age_30",               # 工作日流动_年龄_25_30
+        "f_workday_age_35",               # 工作日流动_年龄_31_35
+        "f_workday_age_40",               # 工作日流动_年龄_36_40
+        "f_workday_age_45",               # 工作日流动_年龄_41_45
+        "f_workday_age_60",               # 工作日流动_年龄_46_60
+        "f_workday_age_over_60",          # 工作日流动_年龄_61以上
+        "f_workday_sex_woman",            # 工作日流动_性别_女
+        "f_workday_sex_man",              # 工作日流动_性别_男
     ]
     
-class ImportanceFeaturesMap:
-    CUSTOM_FEATRUES_MAP = {
-        "BB_RTL_CUST_GRADE_NAME":                           "零售户分档名称",
-        "BB_RTL_CUST_MARKET_TYPE_NAME":                     "零售户市场类型名称",
-        "STORE_AREA":                                       "店铺经营面积",
-        "BB_RTL_CUST_BUSINESS_TYPE_NAME":                   "零售户业态名称",
-        "OPERATOR_EDU_LEVEL":                               "零售客户经营者文化程",
-        "OPERATOR_AGE":                                     "经营者年龄",
-        "BB_RTL_CUST_CHAIN_FLAG":                           "零售户连锁标识",
-        "PRESENT_STAR_TERMINAL":                            "终端星级",
-        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":                "零售户信用等级名称",
-        "MD04_DIR_SAL_STORE_FLAG":                          "直营店标识",
-        "BB_CUSTOMER_MANAGER_SCOPE_NAME":                   "零售户经营范围名称",
-        "PRODUCT_INSALE_QTY":                               "在销品规数",
-        # "CUST_INVESTMENT":                                  "店铺资源投入建设",
-    }
-    
-    PRODUCT_FEATRUES_MAP = {
-        # ProductConfig 字段映射
-        "direct_retail_price":                              "建议零售价",
-        "is_low_tar":                                       "是否低焦油烟",
-        "tar_qty":                                          "焦油含量",
-        "is_exploding_beads":                               "是否爆珠",
-        "is_shortbranch":                                   "是否短支烟",
-        "is_medium":                                        "是否中支烟",
-        "is_tiny":                                          "是否细支",
-        "product_style_code_name":                          "包装类型名称",
-        "org_is_abnormity":                                 "是否异形包装",
-        "is_chuangxin":                                     "是否创新品类",
-        "is_key_brand":                                     "是否重点品牌",
-        "foster_level_hy":                                  "是否行业共育品规",
-        "foster_level_sj":                                  "是否省级共育品规",
-        "is_cigar":                                         "是否雪茄型卷烟",
-        "co_qty":                                           "一氧化碳含量",
-        "tbc_total_length":                                 "烟支总长度",
-        "tbc_length":                                       "烟支长度",
-        "filter_length":                                    "滤嘴长度",
-    }
-    
-    ORDER_FEATURE_MAP = {
-        "MONTH6_SALE_QTY": "近半年销量(箱)",
-        "MONTH6_SALE_AMT": "近半年销售额(万元)",
-        "MONTH6_GROSS_PROFIT_RATE": "近半年毛利率",
-        "MONTH6_SALE_QTY_YOY": "销量同比",
-        "MONTH6_SALE_QTY_MOM": "销量环比",
-        "MONTH6_SALE_AMT_YOY": "销售额(购进额)同比",
-        "MONTH6_SALE_AMT_MOM": "销售额(购进额)环比",
-        "STOCK_QTY": "库存",
-        "ORDER_FULLORDR_RATE": "订足率",
-        "ORDER_FULLORDR_RATE_MOM": "订足率环比",
-        "FULL_FILLMENT_RATE": "订单满足率",
-        "CUSTOMER_REPURCHASE_RATE": "会员重购率(部分有会员)",
-        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC": "新品订货量占同价类比重",
-        "DEMAND_RATE": "需求量满足率",
-        "LISTING_RATE": "品规上架率",
-        "PUT_MARKET_FINISH_RATE": "投放完成率",
-        "OUT_STOCK_DAYS": "断货天数(部分零售商有)",
-        "UNPACKING_RATE": "拆包率",
-        "city_uuid": "城市UUID"
-    }
-    
-    POS_FEATURE_MAP = {
-        "YLT_TURNOVER_RATE": "易灵通动销率",
-        "YLT_BAR_PACKAGE_SALE_OCC": "易灵通条包销售占比",
-        "POS_PACKAGE_PRICE": "POS机单包价格",
+    ONEHOT_CAT = {
+        "r_home_num":                        ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10000以上"],
+        "r_work_num":                        ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10000以上"],
+        "r_resident_num":                    ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10001-20000", "20000以上"],
+        "r_urban_cons_middle":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_urban_cons_low":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_urban_cons_lower":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_urban_cons_secondhigh":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_urban_cons_high":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_junior_middle":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_doctor":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_specialty":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_primary":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_college":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_postgraduate":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_edu_senior_middle":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price79999":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price59999":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price39999":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price19999":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price9999":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price7999":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_house_price4999":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_17":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_24":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_30":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_35":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_40":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_45":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_60":                          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_age_over_60":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_sex_woman":                       ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_sex_man":                         ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_50":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_100":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_150":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_200":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_500":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_over_500":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_2":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_4":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_6":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_8":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_10":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_catering_times_11":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_beijing":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_tianjing":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_hebei":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_shanxi":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_neimeng":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_liaoning":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_jilin":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_heilongjiang":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_shanghai":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_jiangsu":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_zhejiang":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_anhui":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_fujian":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_jiangix":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_shandong":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_henan":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_hubei":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_hunan":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_guangdong":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_hainan":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_sichuan":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_guizhou":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_yunnan":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_shan":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_gansu":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_qinghai":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_guangxi":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_ningxia":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_xinjiang":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_xizang":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_chongqing":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_hongkong":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_macao":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_taiwan":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "r_native_other":                    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flow_num":                        ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10001-50000", "50001-100000", "100000以上"],
+        "f_holiday_flow_num":                ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10001-50000", "50001-100000", "100000以上"],
+        "f_workday_flow_num":                ["0-100", "101-500", "501-2000", "2001-5000", "5001-10000", "10001-50000", "50001-100000", "100000以上"],
+        "f_flowurban_cons_middle":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowurban_cons_low":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowurban_cons_lower":            ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowurban_cons_second_high":      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowurban_cons_high":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_junior_middle":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_doctor":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_specialty":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_primary":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_college":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_postgraduate":            ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowedu_senior_middle":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowhouse_middle":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowhouse_low":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowhouse_lower":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowhouse_second_high":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowhouse_high":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_17":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_24":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_30":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_35":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_40":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_45":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_60":                      ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowage_over_60":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowsex_woman":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_flowsex_man":                     ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayurban_cons_middle":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayurban_cons_low":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayurban_cons_lower":         ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayurban_cons_secondhigh":    ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayurban_cons_high":          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_junior_middle":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_doctor":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_specialty":            ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_primary":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_college":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_postgraduate":         ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayedu_senior_middle":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayhouse_middle":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayhouse_low":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayhouse_lower":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayhouse_second_high":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayhouse_high":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_17":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_24":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_30":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_35":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_40":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_45":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_60":                   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidayage_over_60":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidaysex_woman":                ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_holidaysex_man":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_urban_cons_middle":       ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_urban_cons_low":          ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_urban_cons_lower":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_urban_cons_secondhigh":   ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_urban_cons_high":         ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_junior_middle":       ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_doctor":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_specialty":           ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_primary":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_college":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_postgraduate":        ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_edu_senior_middle":       ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_house_middle":            ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_house_low":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_house_lower":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_house_second_high":       ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_house_high":              ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_17":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_24":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_30":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_35":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_40":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_45":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_60":                  ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_age_over_60":             ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_sex_woman":               ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
+        "f_workday_sex_man":                 ["0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100"],
     }
-    
-    SHOPING_FEATURES_MAP = {
-        # 商圈 字段映射
-        "r_home_num": "常驻人口_居住人数",
-        "r_work_num": "常驻人口_工作人数",
-        "r_resident_num": "常驻人口_工作或居住人数",
-        "r_urban_cons_middle": "常驻人口_城市消费水平_中",
-        "r_urban_cons_low": "常驻人口_城市消费水平_低",
-        "r_urban_cons_lower": "常驻人口_城市消费水平_次低",
-        "r_urban_cons_secondhigh": "常驻人口_城市消费水平_次高",
-        "r_urban_cons_high": "常驻人口_城市消费水平_高",
-        "r_edu_junior_middle": "常驻人口_学历_初中",
-        "r_edu_doctor": "常驻人口_学历_博士",
-        "r_edu_specialty": "常驻人口_学历_大专",
-        "r_edu_primary": "常驻人口_学历_小学",
-        "r_edu_college": "常驻人口_学历_本科",
-        "r_edu_postgraduate": "常驻人口_学历_硕士",
-        "r_edu_senior_middle": "常驻人口_学历_高中",
-        "r_house_price79999": "常驻人口_居住社区房价_60000_79999",
-        "r_house_price59999": "常驻人口_居住社区房价_40000_59999",
-        "r_house_price39999": "常驻人口_居住社区房价_20000_39999",
-        "r_house_price19999": "常驻人口_居住社区房价_10000_19999",
-        "r_house_price9999": "常驻人口_居住社区房价_8000_9999",
-        "r_house_price7999": "常驻人口_居住社区房价_5000_7999",
-        "r_house_price4999": "常驻人口_居住社区房价_2000_4999",
-        "r_age_17": "常驻人口_年龄_0_17",
-        "r_age_24": "常驻人口_年龄_18_24",
-        "r_age_30": "常驻人口_年龄_25_30",
-        "r_age_35": "常驻人口_年龄_31_35",
-        "r_age_40": "常驻人口_年龄_36_40",
-        "r_age_45": "常驻人口_年龄_41_45",
-        "r_age_60": "常驻人口_年龄_46_60",
-        "r_age_over_60": "常驻人口_年龄_61以上",
-        "r_sex_woman": "常驻人口_性别_女",
-        "r_sex_man": "常驻人口_性别_男",
-        "r_catering_50": "常驻人口_餐饮消费水平_50",
-        "r_catering_100": "常驻人口_餐饮消费水平_100",
-        "r_catering_150": "常驻人口_餐饮消费水平_150",
-        "r_catering_200": "常驻人口_餐饮消费水平_200",
-        "r_catering_500": "常驻人口_餐饮消费水平_500",
-        "r_catering_over_500": "常驻人口_餐饮消费水平_500以上",
-        "r_catering_times_2": "常驻人口_餐饮消费频次_1_2",
-        "r_catering_times_4": "常驻人口_餐饮消费频次_2_4",
-        "r_catering_times_6": "常驻人口_餐饮消费频次_4_6",
-        "r_catering_times_8": "常驻人口_餐饮消费频次_6_8",
-        "r_catering_times_10": "常驻人口_餐饮消费频次_8_10",
-        "r_catering_times_11": "常驻人口_餐饮消费频次_11以上",
-        "r_native_beijing": "常驻人口_家乡地_北京市",
-        "r_native_tianjing": "常驻人口_家乡地_天津市",
-        "r_native_hebei": "常驻人口_家乡地_河北省",
-        "r_native_shanxi": "常驻人口_家乡地_山西省",
-        "r_native_neimeng": "常驻人口_家乡地_内蒙古",
-        "r_native_liaoning": "常驻人口_家乡地_辽宁省",
-        "r_native_jilin": "常驻人口_家乡地_吉林省",
-        "r_native_heilongjiang": "常驻人口_家乡地_黑龙江省",
-        "r_native_shanghai": "常驻人口_家乡地_上海市",
-        "r_native_jiangsu": "常驻人口_家乡地_江苏省",
-        "r_native_zhejiang": "常驻人口_家乡地_浙江省",
-        "r_native_anhui": "常驻人口_家乡地_安徽省",
-        "r_native_fujian": "常驻人口_家乡地_福建省",
-        "r_native_jiangix": "常驻人口_家乡地_江西省",
-        "r_native_shandong": "常驻人口_家乡地_山东省",
-        "r_native_henan": "常驻人口_家乡地_河南省",
-        "r_native_hubei": "常驻人口_家乡地_湖北省",
-        "r_native_hunan": "常驻人口_家乡地_湖南省",
-        "r_native_guangdong": "常驻人口_家乡地_广东省",
-        "r_native_hainan": "常驻人口_家乡地_海南省",
-        "r_native_sichuan": "常驻人口_家乡地_四川省",
-        "r_native_guizhou": "常驻人口_家乡地_贵州省",
-        "r_native_yunnan": "常驻人口_家乡地_云南省",
-        "r_native_shan": "常驻人口_家乡地_陕西省",
-        "r_native_gansu": "常驻人口_家乡地_甘肃省",
-        "r_native_qinghai": "常驻人口_家乡地_青海省",
-        "r_native_guangxi": "常驻人口_家乡地_广西壮族自治区",
-        "r_native_ningxia": "常驻人口_家乡地_宁夏回族自治区",
-        "r_native_xinjiang": "常驻人口_家乡地_新疆维吾尔自治区",
-        "r_native_xizang": "常驻人口_家乡地_西藏自治区",
-        "r_native_chongqing": "常驻人口_家乡地_重庆市",
-        "r_native_hongkong": "常驻人口_家乡地_香港",
-        "r_native_macao": "常驻人口_家乡地_澳门",
-        "r_native_taiwan": "常驻人口_家乡地_台湾",
-        "r_native_other": "常驻人口_家乡地_其它",
-        "f_flow_num": "流动人口_日均流动人口数量",
-        "f_holiday_flow_num": "流动人口_节假日日均流动人口数量",
-        "f_workday_flow_num": "流动人口_工作日日均流动人口数量",
-        "f_flowurban_cons_middle": "日均流动_城市消费水平_中",
-        "f_flowurban_cons_low": "日均流动_城市消费水平_低",
-        "f_flowurban_cons_lower": "日均流动_城市消费水平_次低",
-        "f_flowurban_cons_second_high": "日均流动_城市消费水平_次高",
-        "f_flowurban_cons_high": "日均流动_城市消费水平_高",
-        "f_flowedu_junior_middle": "日均流动_学历_初中",
-        "f_flowedu_doctor": "日均流动_学历_博士",
-        "f_flowedu_specialty": "日均流动_学历_大专",
-        "f_flowedu_primary": "日均流动_学历_小学",
-        "f_flowedu_college": "日均流动_学历_本科",
-        "f_flowedu_postgraduate": "日均流动_学历_硕士",
-        "f_flowedu_senior_middle": "日均流动_学历_高中",
-        "f_flowhouse_middle": "日均流动_居住社区房价_中",
-        "f_flowhouse_low": "日均流动_居住社区房价_低",
-        "f_flowhouse_lower": "日均流动_居住社区房价_次低",
-        "f_flowhouse_second_high": "日均流动_居住社区房价_次高",
-        "f_flowhouse_high": "日均流动_居住社区房价_高",
-        "f_flowage_17": "日均流动_年龄_0_17",
-        "f_flowage_24": "日均流动_年龄_18_24",
-        "f_flowage_30": "日均流动_年龄_25_30",
-        "f_flowage_35": "日均流动_年龄_31_35",
-        "f_flowage_40": "日均流动_年龄_36_40",
-        "f_flowage_45": "日均流动_年龄_41_45",
-        "f_flowage_60": "日均流动_年龄_46_60",
-        "f_flowage_over_60": "日均流动_年龄_61以上",
-        "f_flowsex_woman": "日均流动_性别_女",
-        "f_flowsex_man": "日均流动_性别_男",
-        "f_holidayurban_cons_middle": "节假日流动_城市消费水平_中",
-        "f_holidayurban_cons_low": "节假日流动_城市消费水平_低",
-        "f_holidayurban_cons_lower": "节假日流动_城市消费水平_次低",
-        "f_holidayurban_cons_secondhigh": "节假日流动_城市消费水平_次高",
-        "f_holidayurban_cons_high": "节假日流动_城市消费水平_高",
-        "f_holidayedu_junior_middle": "节假日流动_学历_初中",
-        "f_holidayedu_doctor": "节假日流动_学历_博士",
-        "f_holidayedu_specialty": "节假日流动_学历_大专",
-        "f_holidayedu_primary": "节假日流动_学历_小学",
-        "f_holidayedu_college": "节假日流动_学历_本科",
-        "f_holidayedu_postgraduate": "节假日流动_学历_硕士",
-        "f_holidayedu_senior_middle": "节假日流动_学历_高中",
-        "f_holidayhouse_middle": "节假日流动_居住社区房价_中",
-        "f_holidayhouse_low": "节假日流动_居住社区房价_低",
-        "f_holidayhouse_lower": "节假日流动_居住社区房价_次低",
-        "f_holidayhouse_second_high": "节假日流动_居住社区房价_次高",
-        "f_holidayhouse_high": "节假日流动_居住社区房价_高",
-        "f_holidayage_17": "节假日流动_年龄_0_17",
-        "f_holidayage_24": "节假日流动_年龄_18_24",
-        "f_holidayage_30": "节假日流动_年龄_25_30",
-        "f_holidayage_35": "节假日流动_年龄_31_35",
-        "f_holidayage_40": "节假日流动_年龄_36_40",
-        "f_holidayage_45": "节假日流动_年龄_41_45",
-        "f_holidayage_60": "节假日流动_年龄_46_60",
-        "f_holidayage_over_60": "节假日流动_年龄_61以上",
-        "f_holidaysex_woman": "节假日流动_性别_女",
-        "f_holidaysex_man": "节假日流动_性别_男",
-        "f_workday_urban_cons_middle": "工作日流动_城市消费水平_中",
-        "f_workday_urban_cons_low": "工作日流动_城市消费水平_低",
-        "f_workday_urban_cons_lower": "工作日流动_城市消费水平_次低",
-        "f_workday_urban_cons_secondhigh": "工作日流动_城市消费水平_次高",
-        "f_workday_urban_cons_high": "工作日流动_城市消费水平_高",
-        "f_workday_edu_junior_middle": "工作日流动_学历_初中",
-        "f_workday_edu_doctor": "工作日流动_学历_博士",
-        "f_workday_edu_specialty": "工作日流动_学历_大专",
-        "f_workday_edu_primary": "工作日流动_学历_小学",
-        "f_workday_edu_college": "工作日流动_学历_本科",
-        "f_workday_edu_postgraduate": "工作日流动_学历_硕士",
-        "f_workday_edu_senior_middle": "工作日流动_学历_高中",
-        "f_workday_house_middle": "工作日流动_居住社区房价_中",
-        "f_workday_house_low": "工作日流动_居住社区房价_低",
-        "f_workday_house_lower": "工作日流动_居住社区房价_次低",
-        "f_workday_house_second_high": "工作日流动_居住社区房价_次高",
-        "f_workday_house_high": "工作日流动_居住社区房价_高",
-        "f_workday_age_17": "工作日流动_年龄_0_17",
-        "f_workday_age_24": "工作日流动_年龄_18_24",
-        "f_workday_age_30": "工作日流动_年龄_25_30",
-        "f_workday_age_35": "工作日流动_年龄_31_35",
-        "f_workday_age_40": "工作日流动_年龄_36_40",
-        "f_workday_age_45": "工作日流动_年龄_41_45",
-        "f_workday_age_60": "工作日流动_年龄_46_60",
-        "f_workday_age_over_60": "工作日流动_年龄_61以上",
-        "f_workday_sex_woman": "工作日流动_性别_女",
-        "f_workday_sex_man": "工作日流动_性别_男"
-    }

+ 511 - 0
models/rank/data/config_ori.py

@@ -0,0 +1,511 @@
+class CustConfig:
+    FEATURE_COLUMNS = [
+        "BB_RETAIL_CUSTOMER_CODE",                     # 零售户代码
+        "BB_RTL_CUST_GRADE_NAME",                      # 零售户分档名称
+        "BB_RTL_CUST_MARKET_TYPE_NAME",                # 零售户市场类型名称
+        "STORE_AREA",                                  # 店铺经营面积
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME",              # 零售户业态名称
+        "OPERATOR_EDU_LEVEL",                          # 零售客户经营者文化程
+        "OPERATOR_AGE",                                # 经营者年龄
+        "BB_RTL_CUST_CHAIN_FLAG",                      # 零售户连锁标识
+        "PRESENT_STAR_TERMINAL",                       # 终端星级
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME",           # 零售户信用等级名称
+        "MD04_DIR_SAL_STORE_FLAG",                     # 直营店标识
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME",              # 零售户经营范围名称
+        "PRODUCT_INSALE_QTY",                          # 在销品规数
+        # "CUST_INVESTMENT",                             # 店铺资源投入建设
+        
+        # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",       # 新品订货量占同价类比重
+        # "PRODUCT_LISTING_RATE",                        # 品规上架率
+        # "STOCKOUT_DAYS",                              # 断货天数
+        # "YLT_TURNOVER_RATE",                           # 易灵通动销率
+        # "YLT_BAR_PACKAGE_SALE_OCC",                    # 易灵通条包销售占比
+        # "UNPACKING_RATE",                              # 拆包率
+        
+        
+        # "BB_RTL_CUST_POSITION_TYPE_NAME",              # 零售户商圈类型名称
+        
+        # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME",             # 零售户业态细分名称
+        
+        # "BB_RTL_CUST_TERMINAL_LEVEL_NAME",             # 零售户终端层级名称
+        # "BB_RTL_CUST_TERMINALEVEL_NAME",               # 零售户终端层级细分名称
+        # "MD04_MG_SAMPLE_CUST_FLAG",                    # 样本户标识
+        # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG",            # 零售户大户标识
+        # "BB_RTL_CUST_OPERATE_METHOD_NAME",             # 零售户经营方式名称
+        # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME",          # 零售户卷烟经营规模名称
+        
+        # "AVERAGE_CONSUMER_FLOW",                       # 月均消费人流
+        # "NEW_PRODUCT_MEMBERS_QTY",                     # 新品消费会员数量
+    ]
+    # 数据清洗规则
+    CLEANING_RULES = {
+        "BB_RTL_CUST_GRADE_NAME":                   {"method": "fillna", "opt": "fill", "value": "十五档", "type": "str"},
+        "BB_RTL_CUST_MARKET_TYPE_NAME":             {"method": "fillna", "opt": "fill", "value": "城网", "type": "str"},
+        "STORE_AREA":                               {"method": "fillna", "opt": "mean", "type": "num"},
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME":           {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
+        "OPERATOR_EDU_LEVEL":                       {"method": "fillna", "opt": "fill", "value": "无数据", "type": "str"},
+        "OPERATOR_AGE":                             {"method": "fillna", "opt": "mean", "type": "num"},
+        "BB_RTL_CUST_CHAIN_FLAG":                   {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
+        "PRESENT_STAR_TERMINAL":                    {"method": "fillna", "opt": "fill", "value": "非星级", "type": "str"},
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":        {"method": "fillna", "opt": "fill", "value": "B", "type": "str"},
+        "MD04_DIR_SAL_STORE_FLAG":                  {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME":           {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
+        "PRODUCT_INSALE_QTY":                       {"method": "fillna", "opt": "mean", "type": "num"},
+        # "CUST_INVESTMENT":                          {"method": "fillna", "opt": "fill", "type": 0}
+        
+        
+        # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC":    {"method": "fillna", "opt": "mean", "type": "num"},
+        # "PRODUCT_LISTING_RATE":                     {"method": "fillna", "opt": "mean", "type": "num"},
+        # "STOCKOUT_DAYS":                            {"method": "fillna", "opt": "mean", "type": "num"},
+        # "YLT_TURNOVER_RATE":                        {"method": "fillna", "opt": "mean", "type": "num"},
+        # "NEW_PRODUCT_MEMBERS_QTY":                  {"method": "fillna", "opt": "mean", "type": "num"},
+        # "PRODUCT_INSALE_QTY":                       {"method": "fillna", "opt": "mean", "type": "num"},
+        # "UNPACKING_RATE":                           {"method": "fillna", "opt": "mean", "type": "num"},
+        
+        
+        
+        
+        # "BB_RTL_CUST_POSITION_TYPE_NAME":           {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
+        # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME":          {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
+        # "BB_RTL_CUST_TERMINALEVEL_NAME":          {"method": "fillna", "opt": "replace", "value": "BB_RTL_CUST_TERMINAL_LEVEL_NAME", "type": "str"},
+        # "MD04_MG_SAMPLE_CUST_FLAG":                 {"method": "fillna", "value": "N", "opt": "fill"},
+        # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG":         {"method": "fillna", "value": "N", "opt": "fill"},
+        # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME":       {"method": "fillna", "value": "中", "opt": "fill"},
+    }
+    
+    ONEHOT_CAT = {
+        "BB_RTL_CUST_GRADE_NAME":                   ['一档', '二档', '三档', '四档', '五档', '六档', '七档', '八档', '九档', '十档', '十一档', '十二档', 
+                                                    '十三档', '十四档', '十五档', '十六档', '十七档', '十八档', '十九档', '二十档', '二十一档', '二十二档', 
+                                                    '二十三档', '二十四档', '二十五档', '二十六档', '二十七档', '二十八档', '二十九档', '三十档'],
+        "BB_RTL_CUST_MARKET_TYPE_NAME":             ["城网", "农网"],
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME":           ["便利店", "超市", "烟草专业店", "娱乐服务类", "其他"],
+        "OPERATOR_EDU_LEVEL":                       [1, 2, 3, 4, 5, 6, 7, "无数据"],
+        "BB_RTL_CUST_CHAIN_FLAG":                   ["是", "否"],
+        "PRESENT_STAR_TERMINAL":                    ["一星", "二星", "三星", "四星", "五星", "非星级"],
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":        ["AAA", "AA", "A", "B", "C", "D"],
+        "MD04_DIR_SAL_STORE_FLAG":                  ["是", "否"],
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME":           ["是", "否"],
+        
+        
+        
+        # "BB_RTL_CUST_POSITION_TYPE_NAME":           ["居民区", "商业娱乐区", "交通枢纽区", "旅游景区", "工业区", "集贸区", "院校学区", "办公区", "其他"]
+    }
+    
+class ProductConfig:
+    FEATURE_COLUMNS = [
+        "product_code",                                # 商品编码
+        "direct_retail_price",                         # 建议零售价
+        "is_low_tar",                                  # 是否低焦油烟
+        "tar_qty",                                     # 焦油含量
+        "is_exploding_beads",                          # 是否爆珠
+        "is_shortbranch",                              # 是否短支烟
+        "is_medium",                                   # 是否中支烟
+        "is_tiny",                                     # 是否细支
+        "product_style_code_name",                     # 包装类型名称
+        "org_is_abnormity",                            # 是否异形包装
+        "is_chuangxin",                                # 是否创新品类
+        "is_key_brand",                                # 是否重点品牌
+        "foster_level_hy",                             # 是否行业共育品规
+        "foster_level_sj",                             # 是否省级共育品规
+        "is_cigar",                                    # 是否雪茄型卷烟
+        "co_qty",                                      # 一氧化碳含量
+        "tbc_total_length",                            # 烟支总长度
+        "tbc_length",                                  # 烟支长度
+        "filter_length",                               # 滤嘴长度
+        
+
+        
+        # "adjust_price",                                # 含税调拨价
+        # "notwithtax_adjust_price",                     # 不含税调拨价
+        # "whole_sale_price",                            # 统一批发价
+        # "allot_price",                                 # 调拨价
+        # "direct_whole_price",                          # 批发指导价
+        # "retail_price",                                # 零售价
+        # "price_type_name",                             # 卷烟价类名称
+        # "gear_type_name",                              # 卷烟档位名称
+        # "category_type_name",                          # 卷烟品类名称
+        # "is_high_level",                               # 是否高端烟
+        # "is_upscale_level",                            # 是否高端烟不含高价
+        # "is_high_price",                               # 是否高价烟
+        # "is_low_price",                                # 是否低价烟
+        # "is_encourage",                                # 是否全国鼓励品牌
+        # "is_abnormity",                                # 是否异形包装
+        # "is_intake",                                   # 是否进口烟
+        # "is_short",                                    # 是否紧俏品牌
+        # "is_ordinary_price_type",                      # 是否普一类烟
+        # "source_type",                                 # 来源类型
+        # "chinese_mix",                                 # 中式混合
+        # "sub_price_type_name",                         # 细分卷烟价类名称
+    ]
+    
+    CLEANING_RULES = {
+        "direct_retail_price":                         {"method": "fillna", "opt": "mean", "type": "num"},
+        "is_low_tar":                                  {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "tar_qty":                                     {"method": "fillna", "opt": "mean", "type": "num"},
+        "is_exploding_beads":                          {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_shortbranch":                              {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_medium":                                   {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_tiny":                                     {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "product_style_code_name":                     {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
+        "org_is_abnormity":                            {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_chuangxin":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_key_brand":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "foster_level_hy":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "foster_level_sj":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "is_cigar":                                    {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        "co_qty":                                      {"method": "fillna", "opt": "mean", "type": "num"},
+        "tbc_total_length":                            {"method": "fillna", "opt": "mean", "type": "num"},
+        "tbc_length":                                  {"method": "fillna", "opt": "mean", "type": "num"},
+        "filter_length":                               {"method": "fillna", "opt": "mean", "type": "num"},
+        
+        
+        # "adjust_price":                                {"method": "fillna", "opt": "mean", "type": "num"},
+        # "notwithtax_adjust_price":                     {"method": "fillna", "opt": "mean", "type": "num"},
+        # "whole_sale_price":                            {"method": "fillna", "opt": "mean", "type": "num"},
+        # "allot_price":                                 {"method": "fillna", "opt": "fill", "type": "num", "value": 0.0},
+        # "direct_whole_price":                          {"method": "fillna", "opt": "mean", "type": "num"},
+        # "retail_price":                                {"method": "fillna", "opt": "mean", "type": "num"},
+        # "price_type_name":                             {"method": "fillna", "opt": "fill", "type": "str", "value": "一类烟"},
+        # "gear_type_name":                              {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
+        # "category_type_name":                          {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
+        # "is_high_level":                               {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_upscale_level":                            {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_high_price":                               {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_low_price":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_encourage":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_abnormity":                                {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_intake":                                   {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_short":                                    {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "is_ordinary_price_type":                      {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "source_type":                                 {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
+        # "chinese_mix":                                 {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
+        # "sub_price_type_name":                         {"method": "fillna", "opt": "fill", "type": "str", "value": "普一类烟"},
+    }
+    
+
+    ONEHOT_CAT = {
+        "is_low_tar":                                  ["是", "否"],
+        "is_exploding_beads":                          ["是", "否"],
+        "is_shortbranch":                              ["是", "否"],
+        "is_medium":                                   ["是", "否"],
+        "is_tiny":                                     ["是", "否"],
+        "product_style_code_name":                     ["条盒硬盒", "条包硬盒", "条盒软盒", "条包软盒", "铁盒", "其他"],
+        "org_is_abnormity":                            ["是", "否"],
+        "is_chuangxin":                                ["是", "否"],
+        "is_key_brand":                                ["是", "否"],
+        "foster_level_hy":                             ["是", "否"],
+        "foster_level_sj":                             ["是", "否"],
+        "is_cigar":                                    ["是", "否"],
+        
+        
+        
+        # "price_type_name":                             ["一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
+        # "gear_type_name":                              ["第一档位", "第二档位", "第三档位", "第四档位", "第五档位", "第六档位", "第七档位", "第八档位", "其他"],
+        # "category_type_name":                          ["第1品类", "第2品类", "第3品类", "第4品类", "第5品类", "第6品类", "第7品类", 
+        #                                                 "第8品类", "第9品类", "第10品类", "第11品类", "第12品类", "第13品类", "其他"],
+        # "is_high_level":                               ["是", "否"],
+        # "is_upscale_level":                            ["是", "否"],
+        # "is_high_price":                               ["是", "否"],
+        # "is_low_price":                                ["是", "否"],
+        # "is_encourage":                                ["是", "否"],
+        # "is_abnormity":                                ["是", "否"],
+        # "is_intake":                                   ["是", "否"],
+        # "is_short":                                    ["是", "否"],
+        # "is_ordinary_price_type":                      ["是", "否"],
+        # "source_type":                                 ["是", "否"],
+        # "chinese_mix":                                 ["是", "否"],
+        # "sub_price_type_name":                         ["高端烟", "高价位烟", "普一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
+    }
+    
+class OrderConfig:
+    FEATURE_COLUMNS = [
+        "BB_RETAIL_CUSTOMER_CODE",                          # 零售户编码
+        "PRODUCT_CODE",                                     # 卷烟编码
+        "MONTH6_SALE_QTY",                                  # 近半年销量(箱)
+        "MONTH6_SALE_AMT",                                  # 近半年销售额(万元)
+        "MONTH6_GROSS_PROFIT_RATE",                         # 近半年毛利率
+        "MONTH6_SALE_QTY_YOY",                              # 销售量同比
+        "MONTH6_SALE_QTY_MOM",                              # 销售量环比
+        "MONTH6_SALE_AMT_YOY",                              # 销售额(购进额)同比
+        "MONTH6_SALE_AMT_MOM",                              # 销售额(购进额)环比
+        "STOCK_QTY",                                        # 库存
+        "ORDER_FULLORDR_RATE",                              # 订足率
+        "FULL_FILLMENT_RATE",                               # 订单满足率
+        "ORDER_FULLORDR_RATE_MOM",                          # 订足率环比
+        "CUSTOMER_REPURCHASE_RATE",                         # 会员重购率  
+        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",            # 新品订货量占同价类比重/decimal(18,6)
+        "DEMAND_RATE",                                      # 需求量满足率
+        "LISTING_RATE",                                     # 品规商上架率
+        "PUT_MARKET_FINISH_RATE",                           # 投放完成率
+        "OUT_STOCK_DAYS",                                   # 断货天数
+        "YLT_TURNOVER_RATE",                                # 易灵通动销率
+        "YLT_BAR_PACKAGE_SALE_OCC",                         # 易灵通调包销售占比
+        "UNPACKING_RATE",                                   # 拆包率
+        "POS_PACKAGE_PRICE",                                # pos机单包价格
+    ]
+    
+    CLEANING_FEATURES = [
+        "MONTH6_SALE_QTY",
+        "MONTH6_SALE_AMT",
+        "MONTH6_GROSS_PROFIT_RATE",
+        "MONTH6_SALE_QTY_YOY",
+        "MONTH6_SALE_QTY_MOM",
+        "MONTH6_SALE_AMT_YOY",
+        "MONTH6_SALE_AMT_MOM",
+        "STOCK_QTY",
+        "ORDER_FULLORDR_RATE",
+        "FULL_FILLMENT_RATE",
+        "ORDER_FULLORDR_RATE_MOM",
+        "CUSTOMER_REPURCHASE_RATE",
+        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC",
+        "DEMAND_RATE",
+        "LISTING_RATE",
+        "PUT_MARKET_FINISH_RATE",
+        "OUT_STOCK_DAYS",
+        "UNPACKING_RATE",
+    ]
+    
+    WEIGHTS = {
+        "MONTH6_SALE_QTY":                                  0.15,
+        "MONTH6_SALE_QTY_MOM":                              0.2,
+        "ORDER_FULLORDR_RATE":                              0.3,
+        "ORDER_FULLORDR_RATE_MOM":                          0.35,
+    }
+    
+    POSFEATURES = [
+        "YLT_TURNOVER_RATE","YLT_BAR_PACKAGE_SALE_OCC","POS_PACKAGE_PRICE"
+    ]
+    
+class ImportanceFeaturesMap:
+    CUSTOM_FEATRUES_MAP = {
+        "BB_RTL_CUST_GRADE_NAME":                           "零售户分档名称",
+        "BB_RTL_CUST_MARKET_TYPE_NAME":                     "零售户市场类型名称",
+        "STORE_AREA":                                       "店铺经营面积",
+        "BB_RTL_CUST_BUSINESS_TYPE_NAME":                   "零售户业态名称",
+        "OPERATOR_EDU_LEVEL":                               "零售客户经营者文化程",
+        "OPERATOR_AGE":                                     "经营者年龄",
+        "BB_RTL_CUST_CHAIN_FLAG":                           "零售户连锁标识",
+        "PRESENT_STAR_TERMINAL":                            "终端星级",
+        "MD04_MG_RTL_CUST_CREDITCLASS_NAME":                "零售户信用等级名称",
+        "MD04_DIR_SAL_STORE_FLAG":                          "直营店标识",
+        "BB_CUSTOMER_MANAGER_SCOPE_NAME":                   "零售户经营范围名称",
+        "PRODUCT_INSALE_QTY":                               "在销品规数",
+        # "CUST_INVESTMENT":                                  "店铺资源投入建设",
+    }
+    
+    PRODUCT_FEATRUES_MAP = {
+        # ProductConfig 字段映射
+        "direct_retail_price":                              "建议零售价",
+        "is_low_tar":                                       "是否低焦油烟",
+        "tar_qty":                                          "焦油含量",
+        "is_exploding_beads":                               "是否爆珠",
+        "is_shortbranch":                                   "是否短支烟",
+        "is_medium":                                        "是否中支烟",
+        "is_tiny":                                          "是否细支",
+        "product_style_code_name":                          "包装类型名称",
+        "org_is_abnormity":                                 "是否异形包装",
+        "is_chuangxin":                                     "是否创新品类",
+        "is_key_brand":                                     "是否重点品牌",
+        "foster_level_hy":                                  "是否行业共育品规",
+        "foster_level_sj":                                  "是否省级共育品规",
+        "is_cigar":                                         "是否雪茄型卷烟",
+        "co_qty":                                           "一氧化碳含量",
+        "tbc_total_length":                                 "烟支总长度",
+        "tbc_length":                                       "烟支长度",
+        "filter_length":                                    "滤嘴长度",
+    }
+    
+    ORDER_FEATURE_MAP = {
+        "MONTH6_SALE_QTY": "近半年销量(箱)",
+        "MONTH6_SALE_AMT": "近半年销售额(万元)",
+        "MONTH6_GROSS_PROFIT_RATE": "近半年毛利率",
+        "MONTH6_SALE_QTY_YOY": "销量同比",
+        "MONTH6_SALE_QTY_MOM": "销量环比",
+        "MONTH6_SALE_AMT_YOY": "销售额(购进额)同比",
+        "MONTH6_SALE_AMT_MOM": "销售额(购进额)环比",
+        "STOCK_QTY": "库存",
+        "ORDER_FULLORDR_RATE": "订足率",
+        "ORDER_FULLORDR_RATE_MOM": "订足率环比",
+        "FULL_FILLMENT_RATE": "订单满足率",
+        "CUSTOMER_REPURCHASE_RATE": "会员重购率(部分有会员)",
+        "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC": "新品订货量占同价类比重",
+        "DEMAND_RATE": "需求量满足率",
+        "LISTING_RATE": "品规上架率",
+        "PUT_MARKET_FINISH_RATE": "投放完成率",
+        "OUT_STOCK_DAYS": "断货天数(部分零售商有)",
+        "UNPACKING_RATE": "拆包率",
+        "city_uuid": "城市UUID"
+    }
+    
+    POS_FEATURE_MAP = {
+        "YLT_TURNOVER_RATE": "易灵通动销率",
+        "YLT_BAR_PACKAGE_SALE_OCC": "易灵通条包销售占比",
+        "POS_PACKAGE_PRICE": "POS机单包价格",
+    }
+    
+    SHOPING_FEATURES_MAP = {
+        # 商圈 字段映射
+        "r_home_num": "常驻人口_居住人数",
+        "r_work_num": "常驻人口_工作人数",
+        "r_resident_num": "常驻人口_工作或居住人数",
+        "r_urban_cons_middle": "常驻人口_城市消费水平_中",
+        "r_urban_cons_low": "常驻人口_城市消费水平_低",
+        "r_urban_cons_lower": "常驻人口_城市消费水平_次低",
+        "r_urban_cons_secondhigh": "常驻人口_城市消费水平_次高",
+        "r_urban_cons_high": "常驻人口_城市消费水平_高",
+        "r_edu_junior_middle": "常驻人口_学历_初中",
+        "r_edu_doctor": "常驻人口_学历_博士",
+        "r_edu_specialty": "常驻人口_学历_大专",
+        "r_edu_primary": "常驻人口_学历_小学",
+        "r_edu_college": "常驻人口_学历_本科",
+        "r_edu_postgraduate": "常驻人口_学历_硕士",
+        "r_edu_senior_middle": "常驻人口_学历_高中",
+        "r_house_price79999": "常驻人口_居住社区房价_60000_79999",
+        "r_house_price59999": "常驻人口_居住社区房价_40000_59999",
+        "r_house_price39999": "常驻人口_居住社区房价_20000_39999",
+        "r_house_price19999": "常驻人口_居住社区房价_10000_19999",
+        "r_house_price9999": "常驻人口_居住社区房价_8000_9999",
+        "r_house_price7999": "常驻人口_居住社区房价_5000_7999",
+        "r_house_price4999": "常驻人口_居住社区房价_2000_4999",
+        "r_age_17": "常驻人口_年龄_0_17",
+        "r_age_24": "常驻人口_年龄_18_24",
+        "r_age_30": "常驻人口_年龄_25_30",
+        "r_age_35": "常驻人口_年龄_31_35",
+        "r_age_40": "常驻人口_年龄_36_40",
+        "r_age_45": "常驻人口_年龄_41_45",
+        "r_age_60": "常驻人口_年龄_46_60",
+        "r_age_over_60": "常驻人口_年龄_61以上",
+        "r_sex_woman": "常驻人口_性别_女",
+        "r_sex_man": "常驻人口_性别_男",
+        "r_catering_50": "常驻人口_餐饮消费水平_50",
+        "r_catering_100": "常驻人口_餐饮消费水平_100",
+        "r_catering_150": "常驻人口_餐饮消费水平_150",
+        "r_catering_200": "常驻人口_餐饮消费水平_200",
+        "r_catering_500": "常驻人口_餐饮消费水平_500",
+        "r_catering_over_500": "常驻人口_餐饮消费水平_500以上",
+        "r_catering_times_2": "常驻人口_餐饮消费频次_1_2",
+        "r_catering_times_4": "常驻人口_餐饮消费频次_2_4",
+        "r_catering_times_6": "常驻人口_餐饮消费频次_4_6",
+        "r_catering_times_8": "常驻人口_餐饮消费频次_6_8",
+        "r_catering_times_10": "常驻人口_餐饮消费频次_8_10",
+        "r_catering_times_11": "常驻人口_餐饮消费频次_11以上",
+        "r_native_beijing": "常驻人口_家乡地_北京市",
+        "r_native_tianjing": "常驻人口_家乡地_天津市",
+        "r_native_hebei": "常驻人口_家乡地_河北省",
+        "r_native_shanxi": "常驻人口_家乡地_山西省",
+        "r_native_neimeng": "常驻人口_家乡地_内蒙古",
+        "r_native_liaoning": "常驻人口_家乡地_辽宁省",
+        "r_native_jilin": "常驻人口_家乡地_吉林省",
+        "r_native_heilongjiang": "常驻人口_家乡地_黑龙江省",
+        "r_native_shanghai": "常驻人口_家乡地_上海市",
+        "r_native_jiangsu": "常驻人口_家乡地_江苏省",
+        "r_native_zhejiang": "常驻人口_家乡地_浙江省",
+        "r_native_anhui": "常驻人口_家乡地_安徽省",
+        "r_native_fujian": "常驻人口_家乡地_福建省",
+        "r_native_jiangix": "常驻人口_家乡地_江西省",
+        "r_native_shandong": "常驻人口_家乡地_山东省",
+        "r_native_henan": "常驻人口_家乡地_河南省",
+        "r_native_hubei": "常驻人口_家乡地_湖北省",
+        "r_native_hunan": "常驻人口_家乡地_湖南省",
+        "r_native_guangdong": "常驻人口_家乡地_广东省",
+        "r_native_hainan": "常驻人口_家乡地_海南省",
+        "r_native_sichuan": "常驻人口_家乡地_四川省",
+        "r_native_guizhou": "常驻人口_家乡地_贵州省",
+        "r_native_yunnan": "常驻人口_家乡地_云南省",
+        "r_native_shan": "常驻人口_家乡地_陕西省",
+        "r_native_gansu": "常驻人口_家乡地_甘肃省",
+        "r_native_qinghai": "常驻人口_家乡地_青海省",
+        "r_native_guangxi": "常驻人口_家乡地_广西壮族自治区",
+        "r_native_ningxia": "常驻人口_家乡地_宁夏回族自治区",
+        "r_native_xinjiang": "常驻人口_家乡地_新疆维吾尔自治区",
+        "r_native_xizang": "常驻人口_家乡地_西藏自治区",
+        "r_native_chongqing": "常驻人口_家乡地_重庆市",
+        "r_native_hongkong": "常驻人口_家乡地_香港",
+        "r_native_macao": "常驻人口_家乡地_澳门",
+        "r_native_taiwan": "常驻人口_家乡地_台湾",
+        "r_native_other": "常驻人口_家乡地_其它",
+        "f_flow_num": "流动人口_日均流动人口数量",
+        "f_holiday_flow_num": "流动人口_节假日日均流动人口数量",
+        "f_workday_flow_num": "流动人口_工作日日均流动人口数量",
+        "f_flowurban_cons_middle": "日均流动_城市消费水平_中",
+        "f_flowurban_cons_low": "日均流动_城市消费水平_低",
+        "f_flowurban_cons_lower": "日均流动_城市消费水平_次低",
+        "f_flowurban_cons_second_high": "日均流动_城市消费水平_次高",
+        "f_flowurban_cons_high": "日均流动_城市消费水平_高",
+        "f_flowedu_junior_middle": "日均流动_学历_初中",
+        "f_flowedu_doctor": "日均流动_学历_博士",
+        "f_flowedu_specialty": "日均流动_学历_大专",
+        "f_flowedu_primary": "日均流动_学历_小学",
+        "f_flowedu_college": "日均流动_学历_本科",
+        "f_flowedu_postgraduate": "日均流动_学历_硕士",
+        "f_flowedu_senior_middle": "日均流动_学历_高中",
+        "f_flowhouse_middle": "日均流动_居住社区房价_中",
+        "f_flowhouse_low": "日均流动_居住社区房价_低",
+        "f_flowhouse_lower": "日均流动_居住社区房价_次低",
+        "f_flowhouse_second_high": "日均流动_居住社区房价_次高",
+        "f_flowhouse_high": "日均流动_居住社区房价_高",
+        "f_flowage_17": "日均流动_年龄_0_17",
+        "f_flowage_24": "日均流动_年龄_18_24",
+        "f_flowage_30": "日均流动_年龄_25_30",
+        "f_flowage_35": "日均流动_年龄_31_35",
+        "f_flowage_40": "日均流动_年龄_36_40",
+        "f_flowage_45": "日均流动_年龄_41_45",
+        "f_flowage_60": "日均流动_年龄_46_60",
+        "f_flowage_over_60": "日均流动_年龄_61以上",
+        "f_flowsex_woman": "日均流动_性别_女",
+        "f_flowsex_man": "日均流动_性别_男",
+        "f_holidayurban_cons_middle": "节假日流动_城市消费水平_中",
+        "f_holidayurban_cons_low": "节假日流动_城市消费水平_低",
+        "f_holidayurban_cons_lower": "节假日流动_城市消费水平_次低",
+        "f_holidayurban_cons_secondhigh": "节假日流动_城市消费水平_次高",
+        "f_holidayurban_cons_high": "节假日流动_城市消费水平_高",
+        "f_holidayedu_junior_middle": "节假日流动_学历_初中",
+        "f_holidayedu_doctor": "节假日流动_学历_博士",
+        "f_holidayedu_specialty": "节假日流动_学历_大专",
+        "f_holidayedu_primary": "节假日流动_学历_小学",
+        "f_holidayedu_college": "节假日流动_学历_本科",
+        "f_holidayedu_postgraduate": "节假日流动_学历_硕士",
+        "f_holidayedu_senior_middle": "节假日流动_学历_高中",
+        "f_holidayhouse_middle": "节假日流动_居住社区房价_中",
+        "f_holidayhouse_low": "节假日流动_居住社区房价_低",
+        "f_holidayhouse_lower": "节假日流动_居住社区房价_次低",
+        "f_holidayhouse_second_high": "节假日流动_居住社区房价_次高",
+        "f_holidayhouse_high": "节假日流动_居住社区房价_高",
+        "f_holidayage_17": "节假日流动_年龄_0_17",
+        "f_holidayage_24": "节假日流动_年龄_18_24",
+        "f_holidayage_30": "节假日流动_年龄_25_30",
+        "f_holidayage_35": "节假日流动_年龄_31_35",
+        "f_holidayage_40": "节假日流动_年龄_36_40",
+        "f_holidayage_45": "节假日流动_年龄_41_45",
+        "f_holidayage_60": "节假日流动_年龄_46_60",
+        "f_holidayage_over_60": "节假日流动_年龄_61以上",
+        "f_holidaysex_woman": "节假日流动_性别_女",
+        "f_holidaysex_man": "节假日流动_性别_男",
+        "f_workday_urban_cons_middle": "工作日流动_城市消费水平_中",
+        "f_workday_urban_cons_low": "工作日流动_城市消费水平_低",
+        "f_workday_urban_cons_lower": "工作日流动_城市消费水平_次低",
+        "f_workday_urban_cons_secondhigh": "工作日流动_城市消费水平_次高",
+        "f_workday_urban_cons_high": "工作日流动_城市消费水平_高",
+        "f_workday_edu_junior_middle": "工作日流动_学历_初中",
+        "f_workday_edu_doctor": "工作日流动_学历_博士",
+        "f_workday_edu_specialty": "工作日流动_学历_大专",
+        "f_workday_edu_primary": "工作日流动_学历_小学",
+        "f_workday_edu_college": "工作日流动_学历_本科",
+        "f_workday_edu_postgraduate": "工作日流动_学历_硕士",
+        "f_workday_edu_senior_middle": "工作日流动_学历_高中",
+        "f_workday_house_middle": "工作日流动_居住社区房价_中",
+        "f_workday_house_low": "工作日流动_居住社区房价_低",
+        "f_workday_house_lower": "工作日流动_居住社区房价_次低",
+        "f_workday_house_second_high": "工作日流动_居住社区房价_次高",
+        "f_workday_house_high": "工作日流动_居住社区房价_高",
+        "f_workday_age_17": "工作日流动_年龄_0_17",
+        "f_workday_age_24": "工作日流动_年龄_18_24",
+        "f_workday_age_30": "工作日流动_年龄_25_30",
+        "f_workday_age_35": "工作日流动_年龄_31_35",
+        "f_workday_age_40": "工作日流动_年龄_36_40",
+        "f_workday_age_45": "工作日流动_年龄_41_45",
+        "f_workday_age_60": "工作日流动_年龄_46_60",
+        "f_workday_age_over_60": "工作日流动_年龄_61以上",
+        "f_workday_sex_woman": "工作日流动_性别_女",
+        "f_workday_sex_man": "工作日流动_性别_男"
+    }