Selaa lähdekoodia

修改读取数据的特征字段

杨泽宇 1 päivä sitten
vanhempi
commit
43ef452a23
2 muutettua tiedostoa jossa 146 lisäystä ja 32 poistoa
  1. 20 11
      database/dao/mysql_dao.py
  2. 126 21
      models/rank/data/config_new.py

+ 20 - 11
database/dao/mysql_dao.py

@@ -18,9 +18,10 @@ class MySqlDao:
         
         self.db_helper = MySqlDatabaseHelper()
         self._product_tablename = "tads_brandcul_product_info_f"
-        self._cust_tablename = "tads_brandcul_cust_info_f"
+        self._cust_tablename = "tads_brandcul_retail_cust_label"
         self._order_tablename = "tads_brandcul_consumer_order"
         self._eval_order_name = "tads_brandcul_consumer_order_check_week"
+        self._order_analysis_table_name = "tads_brandcul_analysis_index"  # 销售指标指标分析表
         self._mock_order_tablename = "yunfu_mock_data"
         self._shopping_tablename = "tads_brandcul_cust_info_lbs_f"
         # self._shopping_tablename = "yunfu_shopping_mock_data"
@@ -30,7 +31,7 @@ class MySqlDao:
         
     def load_product_data(self, city_uuid):
         """从数据库中读取商品信息"""
-        query = f"SELECT * FROM {self._product_tablename} WHERE city_uuid = :city_uuid"
+        query = f"SELECT * FROM {self._product_tablename} WHERE city_uuid = :city_uuid AND org_is_active = '是'"
         params = {"city_uuid": city_uuid}
         
         data = self.db_helper.load_data_with_page(query, params)
@@ -38,7 +39,7 @@ class MySqlDao:
         
     def load_cust_data(self, city_uuid):
         """从数据库中读取商户信息"""
-        query = f"SELECT * FROM {self._cust_tablename} WHERE BA_CITY_ORG_CODE = :city_uuid"
+        query = f"SELECT * FROM {self._cust_tablename} WHERE corp_uuid = :city_uuid"
         params = {"city_uuid": city_uuid}
         
         data = self.db_helper.load_data_with_page(query, params)
@@ -54,10 +55,18 @@ class MySqlDao:
         data.drop('city_uuid', axis=1, inplace=True)
         
         cust_list = self.get_cust_list(city_uuid)
-        cust_index = cust_list.set_index("BB_RETAIL_CUSTOMER_CODE")
+        cust_index = cust_list.set_index("cust_code")
         data = data.join(cust_index, on="cust_code", how="inner")
         return data
     
+    def load_order_analysis_index_data(self, city_uuid):
+        """从数据库中读取销售指标评估表"""
+        query = f"SELECT * FROM {self._order_analysis_table_name} WHERE city_uuid = :city_uuid"
+        params = {"city_uuid": city_uuid}
+        
+        data = self.db_helper.load_data_with_page(query, params)
+        return data
+
     def load_delivery_order_data(self, city_uuid, start_time, end_time):
         """从数据库中读取订单信息"""
         query = f"SELECT * FROM {self._eval_order_name} WHERE city_uuid = :city_uuid AND cycle_begin_date = :start_time AND cycle_end_date = :end_time"
@@ -109,8 +118,8 @@ class MySqlDao:
         query = text(f"""
         SELECT *
         FROM {self._cust_tablename}
-        WHERE BA_CITY_ORG_CODE = :city_uuid
-        AND BB_RETAIL_CUSTOMER_CODE IN :ids
+        WHERE corp_uuid = :city_uuid
+        AND cust_code IN :ids
     """).bindparams(bindparam("ids", expanding=True))
         params = {"city_uuid": city_uuid, "ids": list(cust_id_list)}
         data = pd.DataFrame(self.db_helper.fetch_all(query, params))
@@ -164,7 +173,7 @@ class MySqlDao:
         data = pd.DataFrame(self.db_helper.fetch_all(query, params))
 
         cust_list = self.get_cust_list(city_uuid)
-        cust_index = cust_list.set_index("BB_RETAIL_CUSTOMER_CODE")
+        cust_index = cust_list.set_index("cust_code")
         data = data.join(cust_index, on="cust_code", how="inner")
 
         return data
@@ -181,7 +190,7 @@ class MySqlDao:
         data = self.db_helper.load_data_with_page(query, params)
         
         cust_list = self.get_cust_list(city_uuid)
-        cust_index = cust_list.set_index("BB_RETAIL_CUSTOMER_CODE")
+        cust_index = cust_list.set_index("cust_code")
         data = data.join(cust_index, on="cust_code", how="inner")
         
         return data
@@ -252,7 +261,7 @@ class MySqlDao:
         return data
 
     def get_cust_list(self, city_uuid):
-        query = f"SELECT DISTINCT BB_RETAIL_CUSTOMER_CODE FROM {self._cust_tablename} WHERE BA_CITY_ORG_CODE = :city_uuid"
+        query = f"SELECT DISTINCT cust_code FROM {self._cust_tablename} WHERE corp_uuid = :city_uuid"
         params = {"city_uuid": city_uuid}
         
         data = self.db_helper.load_data_with_page(query, params)
@@ -301,8 +310,8 @@ class MySqlDao:
         
 if __name__ == "__main__":
     dao = MySqlDao()
-    cultivacation_id = '10000001'
+    city_uuid = '00000000000000000000000011445301'
     
-    data = dao.get_report_file_id(cultivacation_id)
+    data = dao.load_order_data(city_uuid)
     print(data)
     

+ 126 - 21
models/rank/data/config_new.py

@@ -1,7 +1,6 @@
 class CustConfig:
     FEATURES_COLUMNS = [
         "cust_code",                    # 零售户编码
-        "cust_name",
         "busi_place_area_section",      # 营业面积区间
         "rent_section",                 # 租金区间
         "rent_price_section",           # 租金单价区间
@@ -342,24 +341,23 @@ class ProductConfig:
         "direct_retail_price",           # 卷烟建议零售价
         "tbc_total_length",              # 烟支总长度
         "product_style",                 # 包装类型
-
-        "flavor_type_std",                              # 香型_规范
-        "main_color_std",                               # 主色调_规范
-        "carton_packaging_std",                         # 条装包装_规范
-        "packaging_type_std",                           # 包装类型_规范
-        "opening_method_std",                           # 打开方式_规范
-        "cigarette_paper_std",                          # 卷烟纸_规范
-        "cigarette_holder_length_std",                  # 烟嘴长度_规范
-        "flavor_feature_std",                           # 口味特征_规范
-        "new_product_connotation_std",                  # 新品希望传递的品牌内涵_规范
-        "core_competitive_advantage_std",               # 同类核心竞争优势_规范
-        "target_consumers_std",                         # 目标消费者_规范
-        "consumption_scenario_std",                     # 消费场景_规范
-        "core_selling_points_std",                      # 核心卖点_规范
-        "product_features_std",                         # 产品特征_规范
-        "regional_market_preference_match_std",         # 区域市场偏好匹配度_规范
-        "cigarette_holder_std",                         # 烟嘴_规范
-        "target_competitors_std"                        # 目标竞品_规范
+        # "flavor_type_std",                              # 香型_规范
+        # "main_color_std",                               # 主色调_规范
+        # "carton_packaging_std",                         # 条装包装_规范
+        # "packaging_type_std",                           # 包装类型_规范
+        # "opening_method_std",                           # 打开方式_规范
+        # "cigarette_paper_std",                          # 卷烟纸_规范
+        # "cigarette_holder_length_std",                  # 烟嘴长度_规范
+        # "flavor_feature_std",                           # 口味特征_规范
+        # "new_product_connotation_std",                  # 新品希望传递的品牌内涵_规范
+        # "core_competitive_advantage_std",               # 同类核心竞争优势_规范
+        # "target_consumers_std",                         # 目标消费者_规范
+        # "consumption_scenario_std",                     # 消费场景_规范
+        # "core_selling_points_std",                      # 核心卖点_规范
+        # "product_features_std",                         # 产品特征_规范
+        # "regional_market_preference_match_std",         # 区域市场偏好匹配度_规范
+        # "cigarette_holder_std",                         # 烟嘴_规范
+        # "target_competitors_std"                        # 目标竞品_规范
     ]
 
     FEATURE_ENUM_MAP = {
@@ -524,12 +522,119 @@ class ProductConfig:
     }
 
 class OrderConfig:
+    FEATURE_COLUMNS = [
+        "cust_code",                      # 零售户编码
+        "product_code",                   # 品牌规格编码
+        "sale_qty",                       # 销量包
+        # "sale_qty_l",                     # 销量上期
+        # "sale_qty_hb",                    # 销量环比
+        # "sale_amt",                       # 销售额包
+    ]
+
+class OrderAnalysisConfig:
     FEATURE_COLUMNS = [
         "cust_code",                        # 商户编码
         "product_code",                     # 品规编码
-        "price_tier",
         "order_number_stability",           # 订购次数稳定性
         "order_quantity_stability",         # 订购量稳定性
         "order_ratio_stability",            # 订购占比稳定性
         "real_demand_stability"             # 真实需求稳定性
-    ]
+    ]
+
+class ImportanceFeaturesMap:
+    CUSTOM_FEATURES_MAP = {
+        "busi_place_area_section":      "营业面积区间",
+        "rent_section": "租金区间",
+        "rent_price_section": "租金单价区间",
+        "busi_open_section": "营业开始时间区间",
+        "busi_close_section": "营业结束时间区间",
+        "is_chain_storename": "是否连锁",
+        "criterion_codename": "守法经营情况",
+        "market_info_codename":             "市场采集点情况",
+        "tag_codename":                     "卷烟价格执行情况",
+        "cooperate_codename":               "配合程度",
+        "store_appearance_name":            "店面形象",
+        "position_codename":                "商圈名称",
+        "sub_position_codename":            "次级商圈名称",
+        "zone_appraise_name":               "地段评价",
+        "choose_road_name":                 "路段评价",
+        "choose_address_name":              "选址",
+        "area_position_type_name":          "区域位置划分",
+        "area_func_type_name":              "区域功能划分",
+        "community_func_type_name":         "社区功能划分",
+        "rate_pay_type_name":               "纳税性质",
+        "order_cycle_type_name":            "订货周期",
+        "is_modern_terminalname":           "是否现代终端",
+        "modern_terminal_name":             "现代终端类型",
+        "cooperate_type_name":              "加盟类型",
+        "terminal_star_name":               "终端星级",
+        "star_terminal_name":               "星级终端类型",
+        "appearance_span_section":          "门面跨度区间",
+        "upholster_name":                   "店内装潢名称",
+        "shop_feature_name":                "门店特色名称",
+        "shop_char_type_name":              "经营特色名称",
+        "has_taste_name":                   "是否卷烟品吸区",
+        "show_area_section":                "卷烟成列面积区间",
+        "sign_status_name":                 "是否有店招门头(店招门头状态)",
+        "shopsunny_vi_name":                "现代终端VI门头名称",
+        "header_name":                      "门头标识",
+        "counter_status_name":              "地柜状态",
+        "counter_number":                   "地柜个数",
+        "counter_put_type_name":            "地柜陈列样式",
+        "back_counter_status_name":         "背柜状态",
+        "back_counter_put_type_name":       "背柜陈列样式",
+        "back_counter_style_name":          "背柜样式",
+        "back_counter_number":              "背柜个数",
+        "back_counter_has_show_name":       "背柜条烟陈列区状态",
+        "legal_person_gender":              "法人性别",
+        "legal_education_name":             "法人文化程度",
+        "legal_is_cpc_member":              "法人是否为党员",
+        "operator_person_gender":           "经营者性别",
+        "operator_education_name":          "经营者文化程度",
+        "operator_is_cpc_member":           "经营者是否为党员",
+        "market_type_name":                 "市场类型名称",
+        "busi_place_codename":              "经营业态名称",
+        "sub_busi_codename":                "业态细分名称",
+        "sub_market_type_name":             "城乡分类名称",
+        "creditclass_name":                 "信用等级名称",
+    }
+    
+    PRODUCT_FEATRUES_MAP = {
+        "factory_name":              "产地",
+        "brand_name":                "品牌名称",
+        "is_low_tar":                "低焦油卷烟",
+        "is_medium":                 "中支烟",
+        "is_tiny":                   "细支烟",
+        "is_coarse":                 "粗支烟",
+        "is_exploding_beads":        "爆珠烟",
+        "is_abnormity":              "异形包装",
+        "is_cig":                    "雪茄烟",
+        "is_chuangxin":              "创新品类",
+        "direct_retail_price":       "卷烟建议零售价",
+        "tbc_total_length":          "烟支总长度",
+        "product_style":             "包装类型",
+    }
+    
+class DeliveryConfig:
+    FEATURE_COLUMNS = [
+        "customer_code",            # 零售户代码
+        "goods_code",               # 卷烟代码
+        "retail_index_week",        # 周市场零售价格监测指数
+        "turnover_rate_collpoint",  # 采集点销售量动销率(周)
+        "turnover_rate_terminal",   # 零售终端销售量动销率(周)
+        "sale_qty",                 # 周销售量
+    ]
+    
+    CLEANING_RULES = {
+        "retail_index_week":                    {"method": "fillna", "opt": "fill", "value": 0.0000, "type": "num"},
+        "turnover_rate_collpoint":              {"method": "fillna", "opt": "fill", "value": 0.0000, "type": "num"},
+        "turnover_rate_terminal":               {"method": "fillna", "opt": "fill", "value": 0.0000, "type": "num"},
+        "sale_qty":                             {"method": "fillna", "opt": "fill", "value": 0, "type": "num"},
+    }
+    
+    FEATURES_MAP = {
+        "retail_index_week": "市场零售价格监测指数(周)",
+        "turnover_rate_collpoint": "采集点销售量动销率(周)",
+        "turnover_rate_terminal": "零售终端销售量动销率(周)",
+        "sale_qty": "周销售量"
+    }