فهرست منبع

add ad abtest: target_uv_param

liqian 2 سال پیش
والد
کامیت
6dc4b284ab
2فایلهای تغییر یافته به همراه16 افزوده شده و 2 حذف شده
  1. 10 2
      ad_threshold_auto_update.py
  2. 6 0
      config.py

+ 10 - 2
ad_threshold_auto_update.py

@@ -226,7 +226,7 @@ def update_ad_abtest_threshold(project, table, dt, ad_abtest_abcode_config, ad_t
     return robot_msg_record
 
 
-def get_ad_target_uv():
+def get_ad_target_uv(now_h):
     """获取管理后台开启自动调整阈值开关的目标uv值"""
     ad_target_uv = {}
     result = request_get(request_url=config_.GET_AD_TARGET_UV_URL)
@@ -241,9 +241,16 @@ def get_ad_target_uv():
     for item in result['content']:
         app_type = item['productId']
         target_uv_mapping = {}
+        target_uv_param = config_.AD_ABTEST_ABCODE_CONFIG.get(int(app_type)).get('target_uv_param', {})
         for uv_item in item['uvTargetDetails']:
             ab_group = uv_item['abParam']
             target_uv = uv_item['uvTarget']
+            target_uv_param_group = target_uv_param.get(ab_group, None)
+            if target_uv_param_group is not None:
+                update_hours = target_uv_param_group.get('update_hours')
+                update_param = target_uv_param_group.get('update_param')
+                if now_h in update_hours:
+                    target_uv *= update_param
             target_uv_mapping[ab_group] = target_uv
         ad_target_uv[app_type] = target_uv_mapping
     return ad_target_uv
@@ -260,11 +267,12 @@ def timer_check():
         project = config_.AD_THRESHOLD_AUTO_UPDATE_DATA.get('project')
         table = config_.AD_THRESHOLD_AUTO_UPDATE_DATA.get('table')
         now_date = datetime.datetime.today()
+        now_h = datetime.datetime.now().hour
         now_min = datetime.datetime.now().minute
         log_.info(f"now_date: {datetime.datetime.strftime(now_date, '%Y%m%d%H')}")
 
         # 管理后台获取开启自动调整阈值开关的目标uv值
-        ad_target_uv = get_ad_target_uv()
+        ad_target_uv = get_ad_target_uv(now_h=now_h)
         log_.info(f"ad_target_uv: {ad_target_uv}")
         if len(ad_target_uv) == 0:
             return

+ 6 - 0
config.py

@@ -1060,6 +1060,7 @@ class BaseConfig(object):
             'not_update': 0.01,  # 无需调整阈值的uv浮动
             'gradient': 0.05,  # 调整梯度
             'max_update_step': 5,  # 最大调整步数
+            # 调整步长
             'threshold_update': {
                 'ab0': 1 / 48,
                 'ab1': 1 / 48,
@@ -1072,6 +1073,11 @@ class BaseConfig(object):
                 'ab8': 1 / 48,
                 'ab9': 1 / 48,
             },
+            # 分时段控制目标uv参数
+            'target_uv_param': {
+                'ab5': {'update_hours': list(range(10)), 'update_param': 0},  # 0-10点,uv控制在0%
+                'ab6': {'update_hours': list(range(10)), 'update_param': 1/2},  # 0-10点,uv控制在设定目标uv的1/2
+            }
         },
         # 票圈视频+
         APP_TYPE['PIAO_QUAN_VIDEO_PLUS']: {