config.py 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. import os
  2. # from log import Log
  3. # log_ = Log()
  4. class BaseConfig(object):
  5. # 产品标识
  6. APP_TYPE = {
  7. 'VLOG': 0, # vlog
  8. 'LOVE_LIVE': 4, # 票圈视频
  9. 'LONG_VIDEO': 5, # 内容精选
  10. 'SHORT_VIDEO': 6, # 票圈短视频
  11. 'WAN_NENG_VIDEO': 17, # 万能影视屋
  12. 'LAO_HAO_KAN_VIDEO': 18, # 老好看视频
  13. 'ZUI_JING_QI': 19, # 票圈最惊奇
  14. 'APP': 13, # 票圈视频APP
  15. 'PIAO_QUAN_VIDEO_PLUS': 21, # 票圈视频+
  16. }
  17. # APP ab实验配置
  18. APP_AB_CODE = {
  19. '10003': '110154', # 首页, 小程序地域分组小时级数据
  20. '10037': '100373', # 相关推荐, 小程序地域分组小时级数据
  21. }
  22. # AB实验配置
  23. AB_EXP_CODE = {
  24. # 'rec_size_home': '003',
  25. # 'rec_size_relevant': '004',
  26. # 'rule_rank1': '011',
  27. # 'rule_rank2': '016',
  28. # 'rov_rank_appType_18_19': '019',
  29. # 'rule_rank3': '023',
  30. # 'rule_rank4': '024',
  31. # 'rule_rank5': '025',
  32. # 'rov_rank_appType_19': '027',
  33. # 'day_rule_rank1': '026',
  34. # 'day_rule_rank2': '030',
  35. # 'ab_initial': '031',
  36. # 'old_video': '034',
  37. # 'region_rule_rank1': '037',
  38. # 'rule_rank6': '040',
  39. # '24h_rule_rank1': '052',
  40. # 'region_rule_rank2': '054',
  41. # 'region_rule_rank3': '055',
  42. # 'top_video_relevant_appType_19': '058',
  43. # '24h_rule_rank2': '059',
  44. # 'whole_movies': '063',
  45. 'region_rule_rank4_appType_5_data1': '068',
  46. 'region_rule_rank4_appType_19': '069',
  47. 'region_rule_rank4_appType_4': '072',
  48. 'region_rule_rank4_appType_6': '073',
  49. 'region_rule_rank4_appType_18': '074',
  50. 'region_rule_rank4': '079',
  51. # 'region_rule_rank3_appType_5_data2': '081',
  52. 'region_rule_rank4_appType_5_data3': '082',
  53. 'region_rule_rank4_appType_5_data4': '083',
  54. 'region_rule_rank4_appType_0_data2': '084',
  55. 'region_rule_rank4_appType_19_data2': '089',
  56. 'region_rule_rank4_appType_19_data3': '090',
  57. 'region_rule_rank5_appType_0_data1': '095',
  58. }
  59. # abTest
  60. AB_TEST = {
  61. 'w_h_rate': [APP_TYPE['LONG_VIDEO']], # 视频宽高比实验(每组的前两个视频调整为横屏视频), 已下线
  62. 'position_insert': [APP_TYPE['SHORT_VIDEO'], APP_TYPE['LOVE_LIVE']],
  63. 'relevant_video_op': [APP_TYPE['LONG_VIDEO']], # 相关推荐强插实验(运营对某些视频给定一些相关视频,调整为对应视频相关推荐的头部)
  64. 'rank_by_h': [APP_TYPE['VLOG']], # 小时级别更新rov列表
  65. }
  66. # abCode
  67. AB_CODE = {
  68. 'initial': 10000, # 初始
  69. 'special_mid': 99999, # 特殊mid
  70. 'w_h_rate': 10001, # 视频宽高比实验(每组的前两个视频调整为横屏视频),已下线
  71. 'position_insert': 10002, # 按位置插入
  72. 'relevant_video_op': 10003, # 运营对某些视频给定一些相关视频,调整为对应视频相关推荐的头部
  73. 'rov_rank_appType_18_19': 30001, # 老好看视频 / 票圈最惊奇 首页/相关推荐逻辑更新实验
  74. 'rov_rank_appType_19': 30002, # 票圈最惊奇 首页/相关推荐逻辑更新实验 (2:2)
  75. 'rank_by_h': {
  76. 'rule_rank1': 20001,
  77. 'rule_rank2': 20002,
  78. 'rule_rank3': 20003,
  79. 'rule_rank4': 20004,
  80. 'rule_rank5': 20005,
  81. 'rule_rank6': 20006,
  82. }, # 小时级别更新rov列表实验
  83. 'rank_by_day': {
  84. 'day_rule_rank1': 40001,
  85. 'day_rule_rank2': 40002,
  86. }, # 天级别规则更新rov列表实验
  87. 'ab_initial': 20000, # ab实验相对实验组(无人工调整)
  88. 'old_video': 50001, # 固定位置插入老视频
  89. 'region_rank_by_h': {
  90. 'region_rule_rank1': 60001,
  91. 'region_rule_rank2': 60002,
  92. 'region_rule_rank3': 60003,
  93. 'region_rule_rank4': 60004,
  94. 'region_rule_rank4_appType_5_data2': 60005,
  95. 'region_rule_rank4_appType_5_data3': 60006,
  96. 'region_rule_rank4_appType_5_data4': 60007,
  97. 'region_rule_rank4_appType_0_data2': 60007,
  98. 'region_rule_rank4_appType_19_data2': 60008,
  99. 'region_rule_rank4_appType_19_data3': 60009,
  100. 'region_rule_rank5_appType_0_data1': 60010
  101. }, # 地域分组小时级规则实验
  102. 'rank_by_24h': {
  103. '24h_rule_rank1': 70001,
  104. '24h_rule_rank2': 70002,
  105. }, # 小时级规则更新过去24h数据实验
  106. 'top_video_relevant_appType_19': 80001, # 最惊奇电影类视频分享页相关推荐相似视频实验
  107. 'whole_movies': 90001, # 最惊奇首页/相关推荐 完整影视资源实验
  108. }
  109. # 小程序小时级列表key不同实验标识
  110. RULE_KEY = {
  111. 'initial': '',
  112. 'rule_rank1': 'rule1',
  113. 'rule_rank2': 'rule2',
  114. 'rule_rank3': 'rule3',
  115. 'rule_rank4': 'rule4',
  116. 'rule_rank5': 'rule5',
  117. 'rule_rank6': 'rule6',
  118. }
  119. # 小程序地域分组小时级列表key不同实验标识
  120. RULE_KEY_REGION = {
  121. 'initial': {'rule_key': '', 'data_key': ''},
  122. # 'region_rule_rank1': 'rule1',
  123. # 'region_rule_rank2': 'rule1',
  124. # 'region_rule_rank3': {'rule_key': 'rule2', 'data_key': 'data1'},
  125. 'region_rule_rank4': {'rule_key': 'rule3', 'data_key': 'data1'},
  126. 'region_rule_rank4_appType_5_data1': {'rule_key': 'rule3', 'data_key': 'data1'},
  127. # 'region_rule_rank3_appType_5_data2': {'rule_key': 'rule3', 'data_key': 'data2'},
  128. 'region_rule_rank4_appType_5_data3': {'rule_key': 'rule3', 'data_key': 'data3'},
  129. 'region_rule_rank4_appType_5_data4': {'rule_key': 'rule3', 'data_key': 'data4'},
  130. 'region_rule_rank4_appType_0_data2': {'rule_key': 'rule3', 'data_key': 'data2'},
  131. 'region_rule_rank4_appType_19_data2': {'rule_key': 'rule3', 'data_key': 'data2'},
  132. 'region_rule_rank4_appType_19_data3': {'rule_key': 'rule3', 'data_key': 'data3'},
  133. 'region_rule_rank5_appType_0_data1': {'rule_key': 'rule4', 'data_key': 'data1'},
  134. }
  135. # 小程序地域分组小时级列表key不同实验标识
  136. DATA_KEY_REGION = {
  137. 'initial': '',
  138. 'region_rule_rank3': 'data1'
  139. }
  140. # 小时级规则更新过去24h数据列表key不同实验标识
  141. RULE_KEY_24H = {
  142. 'initial': '',
  143. '24h_rule_rank1': 'rule1',
  144. '24h_rule_rank2': 'rule2',
  145. }
  146. # pushFrom
  147. PUSH_FROM = {
  148. 'rov_recall': 'recall_pool', # rov召回池
  149. 'flow_recall': 'flow_pool', # 流量池
  150. 'top': 'op_manual', # 置顶
  151. 'bottom': 'bottom_strategy', # 一层兜底
  152. 'bottom_last': 'bottom_strategy_last', # 二层兜底
  153. 'position_insert': 'position_insert', # 按位置插入
  154. 'relevant_video_op': 'relevant_video_op', # 相关推荐强插
  155. 'rov_recall_h': 'recall_pool_h', # 小时级更新列表
  156. 'rov_recall_24h': 'recall_pool_24h', # 小时级更新列表
  157. 'rov_recall_day': 'recall_pool_day', # 天级规则更新列表
  158. 'old_video': 'old_video_recall', # 老视频
  159. 'rov_recall_region_h': 'recall_pool_region_h', # 地域分组小时级更新列表
  160. 'rov_recall_region_day': 'recall_pool_region_day', # 地域分组天级更新列表
  161. 'rov_recall_region_24h': 'recall_pool_region_24h', # 地域分组小时级更新24h列表
  162. 'rov_recall_24h_dup': 'rov_recall_24h_dup', # 小时级更新24h筛选后剩余数据列表
  163. 'top_video_relevant_appType_19': 'relevant_video', # 相似视频
  164. 'whole_movies': 'whole_movies', # 完整影视
  165. 'talk_videos': 'talk_videos', # 影视解说
  166. 'special_mid': 'special_mid_videos', # 特殊mid指定视频
  167. }
  168. # category id mapping
  169. CATEGORY = {
  170. 'recommend': [55], # 推荐
  171. 'other': [] # 其他类别
  172. }
  173. # 前k个从ROV召回池中获取视频
  174. K = 3
  175. # 从流量池获取视频的概率设置
  176. P = 0.3
  177. P_18_19 = 1
  178. # ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date}
  179. RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.'
  180. # 小程序小时级更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.h.{rule_key}.{date}.{h}
  181. RECALL_KEY_NAME_PREFIX_BY_H = 'com.weiqu.video.recall.item.score.h.'
  182. # 小程序相对24h数据更新结果与 小程序小时级更新结果 去重后 存放 redis key前缀,
  183. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.24h.h.{rule_key}.{date}.{h}
  184. RECALL_KEY_NAME_PREFIX_DUP_24H_H = 'com.weiqu.video.recall.hot.item.score.dup.24h.h.'
  185. # 小程序离线ROV模型结果与小程序小时级更新结果去重后 存放 redis key前缀,
  186. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.h.{rule_key}{date}.{h}
  187. RECALL_KEY_NAME_PREFIX_DUP_H = 'com.weiqu.video.recall.hot.item.score.dup.h.'
  188. # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.mid.{appType}.{mid}
  189. H_WITH_MID_RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.h.mid.'
  190. # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.record.mid.{appType}.{mid}
  191. H_WITH_MID_RECORD_KEY_NAME_PREFIX = 'com.weiqu.video.h.record.mid.'
  192. # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.24h.mid.{appType}.{mid}
  193. H_WITH_MID_RECALL_KEY_NAME_PREFIX_24H = 'com.weiqu.video.recall.hot.item.score.h.24h.mid.'
  194. # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.24h.record.mid.{appType}.{mid}
  195. H_WITH_MID_RECORD_KEY_NAME_PREFIX_24H = 'com.weiqu.video.h.24h.record.mid.'
  196. # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.region.24h.mid.{appType}.{mid}
  197. H_WITH_MID_RECALL_KEY_NAME_PREFIX_REGION_24H = 'com.weiqu.video.recall.hot.item.score.h.region.24h.mid.'
  198. # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.region.24h.record.mid.{appType}.{mid}
  199. H_WITH_MID_RECORD_KEY_NAME_PREFIX_REGION_24H = 'com.weiqu.video.h.region.24h.record.mid.'
  200. # 用户上一次在dup3 24h更新列表中对应的位置 redis key前缀,完整key格式:com.weiqu.video.region.dup3.24h.last.item.{appType}.{mid}
  201. LAST_VIDEO_FROM_REGION_DUP3_24H_PREFIX = 'com.weiqu.video.region.dup3.24h.last.item.'
  202. # 记录 mid-上一次在dup3 24h更新列表中对应的位置key 中数据所属(date,h),完整格式:com.weiqu.video.h.region.24h.last.record.mid.{appType}.{mid}
  203. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP3_24H = 'com.weiqu.video.h.region.24h.last.record.mid.'
  204. # 小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.h.item.{rule_key}
  205. H_VIDEO_FILER = 'com.weiqu.video.filter.h.item.'
  206. # 小程序天级更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.day.{rule_key}.{date}
  207. RECALL_KEY_NAME_PREFIX_BY_DAY = 'com.weiqu.video.recall.item.score.day.'
  208. # 小程序离线ROV模型结果与小程序天级更新结果去重后 存放 redis key前缀,
  209. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.day.now.{rule_key}.{date}
  210. RECALL_KEY_NAME_PREFIX_DUP_DAY_NOW = 'com.weiqu.video.recall.hot.item.score.dup.day.now.'
  211. # 使用前一天小程序离线ROV模型结果与小程序天级更新结果去重后 存放 redis key前缀,
  212. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.day.pre.{rule_key}.{date}
  213. RECALL_KEY_NAME_PREFIX_DUP_DAY_PRE = 'com.weiqu.video.recall.hot.item.score.dup.day.pre.'
  214. # 小程序小时级24h数据更新结果存放 redis key前缀,
  215. # 完整格式:com.weiqu.video.recall.item.score.apptype.24h.{appType}.{data_key}.{rule_key}.{date}.{h}
  216. RECALL_KEY_NAME_PREFIX_BY_24H = 'com.weiqu.video.recall.item.score.apptype.24h.'
  217. # 小程序离线ROV模型结果与小程序小时级24h更新结果去重后 存放 redis key前缀,
  218. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.24h.{rule_key}.{date}.{h}
  219. RECALL_KEY_NAME_PREFIX_DUP_24H = 'com.weiqu.video.recall.hot.item.score.dup.24h.'
  220. # 小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.apptype.h.item.24h.{appType}.{data_key}.{rule_key}
  221. H_VIDEO_FILER_24H = 'com.weiqu.video.filter.apptype.h.item.24h.'
  222. # 小程序地域分组小时级更新结果存放 redis key前缀,
  223. # 完整格式:com.weiqu.video.recall.item.score.apptype.region.h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  224. RECALL_KEY_NAME_PREFIX_REGION_BY_H = 'com.weiqu.video.recall.item.score.apptype.region.h.'
  225. # 小程序地域分组天级更新结果与小程序地域分组小时级更新结果去重后 存放 redis key前缀,
  226. # 完整格式:com.weiqu.video.recall.hot.item.score.dup1.region.day.h.{region}.{rule_key}.{date}.{h}
  227. RECALL_KEY_NAME_PREFIX_DUP1_REGION_DAY_H = 'com.weiqu.video.recall.hot.item.score.dup1.region.day.h.'
  228. # 小程序地域分组小时级更新24h结果与小程序地域分组小时级更新结果去重后 存放 redis key前缀,
  229. # 完整格式:com.weiqu.video.recall.hot.item.score.dup1.apptype.region.24h.h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  230. RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H = 'com.weiqu.video.recall.hot.item.score.dup1.apptype.region.24h.h.'
  231. # 小程序天级更新结果与 小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  232. # 完整格式:com.weiqu.video.recall.hot.item.score.dup2.region.day.h.{region}.{rule_key}.{date}.{h}
  233. RECALL_KEY_NAME_PREFIX_DUP2_REGION_DAY_H = 'com.weiqu.video.recall.hot.item.score.dup2.region.day.h.'
  234. # 小程序24h更新结果与 小程序地域分组24h更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  235. # 完整格式:com.weiqu.video.recall.hot.item.score.dup2.apptype.region.24h.h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  236. RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H = 'com.weiqu.video.recall.hot.item.score.dup2.apptype.region.24h.h.'
  237. # 小程序小时级24h数据 筛选后的剩余数据 更新结果 与 小程序24h更新结果/小程序地域分组24h更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  238. # 完整格式:com.weiqu.video.recall.hot.item.score.dup3.apptype.region.24h.h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  239. RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H = 'com.weiqu.video.recall.hot.item.score.dup3.apptype.region.24h.h.'
  240. # 小程序离线ROV模型结果与 小程序天级更新结果/小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  241. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.apptype.region.h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  242. RECALL_KEY_NAME_PREFIX_DUP_REGION_H = 'com.weiqu.video.recall.hot.item.score.dup.apptype.region.h.'
  243. # 地域分组小时级视频状态不符合推荐要求的列表 redis key,
  244. # 完整格式:com.weiqu.video.filter.apptype.region.h.item.{region}.{appType}.{data_key}.{rule_key}
  245. REGION_H_VIDEO_FILER = 'com.weiqu.video.filter.apptype.region.h.item.'
  246. # 小程序地域分组小时级更新24h结果存放 redis key前缀,
  247. # 完整格式:com.weiqu.video.recall.item.score.apptype.region.24h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  248. RECALL_KEY_NAME_PREFIX_REGION_BY_24H = 'com.weiqu.video.recall.item.score.apptype.region.24h.'
  249. # 小程序天级更新结果与 小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
  250. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.day.24h.{region}.{rule_key}.{date}.{h}
  251. RECALL_KEY_NAME_PREFIX_DUP_REGION_DAY_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.day.24h.'
  252. # 小程序离线ROV模型结果与 小程序天级更新结果/小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
  253. # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.24h.{region}.{rule_key}.{date}.{h}
  254. RECALL_KEY_NAME_PREFIX_DUP_REGION_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.24h.'
  255. # 地域分组小时级更新24h视频状态不符合推荐要求的列表 redis key,
  256. # 完整格式:com.weiqu.video.filter.apptype.region.h.item.24h.{region}.{appType}.{data_key}.{rule_key}
  257. REGION_H_VIDEO_FILER_24H = 'com.weiqu.video.filter.apptype.region.h.item.24h.'
  258. # app应用 小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.app.{date}
  259. RECALL_KEY_NAME_PREFIX_APP = 'com.weiqu.video.recall.hot.item.score.app.'
  260. # app应用 小时级数据更新最终结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.app.{date}.{h}
  261. APP_FINAL_RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.app.'
  262. # appType:[18, 19]小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{appType}.{date}.{h}
  263. RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.item.score.'
  264. # 小程序老视频更新结果存放 redis key 前缀,完整格式:'com.weiqu.video.recall.old.item.{date}'
  265. RECALL_KEY_NAME_PREFIX_OLD_VIDEOS = 'com.weiqu.video.recall.old.item.'
  266. # appType = 6, ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.apptype.h.item.score.6.{h}
  267. # RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.apptype.h.item.score.6.'
  268. # 流量池redis key前缀,完整格式 com.weiqu.video.flowpool.hot.item.score.{appType}
  269. FLOW_POOL_KEY_NAME_PREFIX = 'com.weiqu.video.flowpool.hot.item.score.'
  270. # 快速曝光流量池数据存放 redis key前缀,完整格式 com.weiqu.video.quick.flowpool.hot.item.score.{appType}.{flowPool_id}
  271. QUICK_FLOWPOOL_KEY_NAME_PREFIX = 'com.weiqu.video.quick.flowpool.hot.item.score.'
  272. # 快速曝光流量池分发概率 redis key前缀,完整格式 com.weiqu.video.quick.flowpool.distribute_rate.{flowPool_id}
  273. QUICK_FLOWPOOL_DISTRIBUTE_RATE_KEY_NAME_PREFIX = 'com.weiqu.video.quick.flowpool.distribute_rate.'
  274. # 修改ROV的视频 redis key
  275. UPDATE_ROV_KEY_NAME = 'com.weiqu.video.update.rov.item.score'
  276. UPDATE_ROV_KEY_NAME_APP = 'com.weiqu.video.update.rov.item.score.app'
  277. # 首页推荐预曝光列表redis key 前缀,完整key格式:com.weiqu.video.hot.recommend.previewed.{appType}.{mid}
  278. PREVIEW_KEY_PREFIX = 'com.weiqu.video.hot.recommend.previewed.'
  279. # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.{appType}.{mid}.{date}
  280. LAST_VIDEO_FROM_ROV_POOL_PREFIX = 'com.weiqu.video.rov.pool.last.'
  281. # 用户上一次在天级规则更新列表中对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.{appType}.{mid}.{date}
  282. LAST_VIDEO_FROM_RULE_DAY_POOL_PREFIX = 'com.weiqu.video.rule.day.pool.last.'
  283. # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.pre.{appType}.{mid}.{date}
  284. LAST_VIDEO_FROM_ROV_POOL_PRE_PREFIX = 'com.weiqu.video.rov.pool.last.pre.'
  285. # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.now.{appType}.{mid}.{date}
  286. LAST_VIDEO_FROM_ROV_POOL_NOW_PREFIX = 'com.weiqu.video.rov.pool.last.now.'
  287. # 用户上一次在region dup更新列表中对应的位置 redis key前缀,完整key格式:com.weiqu.video.region.dup.last.{dup}.{appType}.{mid}.{date}
  288. LAST_VIDEO_FROM_REGION_DUP_PREFIX = 'com.weiqu.video.region.dup.last.'
  289. # 用户上一次在完整影视资源列表对应的位置 redis key前缀,完整key格式:com.weiqu.video.whole.movies.last.{appType}.{mid}.{date}
  290. LAST_VIDEO_FROM_WHOLE_MOVIES_PREFIX = 'com.weiqu.video.whole.movies.last.'
  291. # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{h}
  292. # LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.'
  293. # 本地记录视频的可分发数,控制分发,完整key格式:com.weiqu.video.flowpool.local.distribute.count.{videoId}.{flowPool}
  294. LOCAL_DISTRIBUTE_COUNT_PREFIX = 'com.weiqu.video.flowpool.local.distribute.count.'
  295. # 从ROV召回池获取视频的最大频次,限制每次请求的获取次数
  296. MAX_FREQ_FROM_ROV_POOL = 3
  297. # 从流量池获取视频的最大频次,限制每次请求的获取次数
  298. MAX_FREQ_FROM_FLOW_POOL = 1
  299. # 从流量池获取视频的最大频次,限制每次请求的获取次数 appType:[18, 19]
  300. MAX_FREQ_FROM_FLOW_POOL_18_19 = 3
  301. # 兜底视频redis存储key
  302. BOTTOM_KEY_NAME = 'com.weiqu.video.bottom'
  303. # 生效中的置顶视频列表 redis key
  304. TOP_VIDEO_LIST_KEY_NAME = 'com.weiqu.video.top.item.score.area'
  305. TOP_VIDEO_LIST_KEY_NAME_APP = 'com.weiqu.video.top.item.score.area.app'
  306. # 按位置排序redis存储key
  307. RECALL_POSITION1_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.1'
  308. RECALL_POSITION2_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.2'
  309. # rov召回池更新时间
  310. ROV_UPDATE_H = 6
  311. ROV_UPDATE_MINUTE = 30
  312. # 小时级召回池更新时间 每个小时的15分更新成功
  313. ROV_H_UPDATE_MINUTE = 25
  314. # 地域分组小时级召回池更新时间
  315. REGION_H_UPDATE_MINUTE = 30
  316. # 天级规则更新列表更新时间 00:30更新成功
  317. ROV_DAY_UPDATE_MINUTE = 0
  318. # 置顶视频区域 为 全部 的code
  319. ALL_AREA_CODE = '000000'
  320. # width : height > 1 的视频列表 redis key, zset存储,value为videoId,score为w_h_rate
  321. W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME = {
  322. 'rov_recall': 'com.weiqu.video.rov.w.h.rate.1.item', # rov召回池视频
  323. 'bottom_last': 'com.weiqu.video.bottom.last.w.h.rate.1.item' # 二次兜底视频
  324. }
  325. # 头部视频对应运营强插的相关视频 redis 存储 key 前缀, 完整key格式:com.weiqu.video.relevant.videos.item.{videoId}
  326. RELEVANT_VIDEOS_WITH_OP_KEY_NAME = 'com.weiqu.video.relevant.videos.item.'
  327. # 最惊奇电影类视频相关推荐列表存放 redis key前缀,完整格式: com.weiqu.movie.relevant.list.item.{videoId}
  328. MOVIE_RELEVANT_LIST_KEY_NAME_PREFIX = 'com.weiqu.movie.relevant.list.item.'
  329. # 完整影视资源更新结果存放 redis key 前缀,完整格式:'com.weiqu.video.recall.whole.movies.item.{date}.{h}'
  330. RECALL_KEY_NAME_PREFIX_WHOLE_MOVIES = 'com.weiqu.video.recall.whole.movies.item.'
  331. # 特殊mid更新结果存放 redis key ,完整格式:'com.weiqu.video.special.mid'
  332. KEY_NAME_SPECIAL_MID = 'com.weiqu.video.special.mid'
  333. # 特殊mid对应指定视频列表更新结果存放 redis key 前缀,完整格式:'com.weiqu.video.special.videos.item.{date}'
  334. KEY_NAME_PREFIX_SPECIAL_VIDEOS = 'com.weiqu.video.special.videos.item.'
  335. # 限流视频集合存放 redis key前缀,完整格式:'com.weiqu.video.limit.set.{date}'
  336. KEY_NAME_PREFIX_LIMIT_VIDEO_SET = 'com.weiqu.video.limit.set.'
  337. # 限流视频分发数记录 redis key前缀,完整格式:'com.weiqu.video.limit.distribute.count.{videoId}'
  338. KEY_NAME_PREFIX_LIMIT_VIDEO_DISTRIBUTE_COUNT = 'com.weiqu.video.limit.distribute.count.'
  339. # 视频数据表类型 - 管理后台算法视频列表可视化
  340. VIDEO_DATA_LIST_MAPPING = {
  341. 0: {
  342. "dataListDesc": "全部", "dataListCode": 0,
  343. "keyPrefixList": [
  344. {"dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
  345. {"dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
  346. {"dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
  347. {"dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
  348. {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
  349. ]
  350. },
  351. 1: {"dataListDesc": "地域小时级", "dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
  352. 2: {"dataListDesc": "地域相对24小时级", "dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
  353. 3: {"dataListDesc": "非地域相对24小时级", "dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
  354. 4: {"dataListDesc": "非地域相对24小时级列表2", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
  355. 5: {"dataListDesc": "大列表", "dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
  356. }
  357. VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING = {
  358. # "055": {"app_type": 0, "data_key": "data1", "rule_key": "rule2"},
  359. "068": {"app_type": 5, "data_key": "data1", "rule_key": "rule3"},
  360. "069": {"app_type": 19, "data_key": "data1", "rule_key": "rule3"},
  361. "072": {"app_type": 4, "data_key": "data1", "rule_key": "rule3"},
  362. "073": {"app_type": 6, "data_key": "data1", "rule_key": "rule3"},
  363. "074": {"app_type": 18, "data_key": "data1", "rule_key": "rule3"},
  364. "079": {"app_type": 0, "data_key": "data1", "rule_key": "rule3"},
  365. # "081": {"app_type": 5, "data_key": "data2", "rule_key": "rule3"},
  366. "082": {"app_type": 5, "data_key": "data3", "rule_key": "rule3"},
  367. "083": {"app_type": 5, "data_key": "data4", "rule_key": "rule3"},
  368. "084": {"app_type": 0, "data_key": "data2", "rule_key": "rule3"},
  369. "089": {"app_type": 19, "data_key": "data2", "rule_key": "rule3"},
  370. "090": {"app_type": 19, "data_key": "data3", "rule_key": "rule3"},
  371. "095": {"app_type": 0, "data_key": "data1", "rule_key": "rule4"},
  372. }
  373. REGION_CODE = {
  374. '北京': '110000', '天津': '120000', '河北省': '130000', '山西省': '140000', '内蒙古': '150000',
  375. '辽宁省': '210000', '吉林省': '220000', '黑龙江省': '230000',
  376. '上海': '310000', '江苏省': '320000', '浙江省': '330000', '安徽省': '340000', '福建省': '350000', '江西省': '360000',
  377. '山东省': '370000',
  378. '河南省': '410000', '湖北省': '420000', '湖南省': '430000', '广东省': '440000', '广西': '450000', '海南省': '460000',
  379. '重庆': '500000', '四川省': '510000', '贵州省': '520000', '云南省': '530000', '西藏': '540000',
  380. '陕西省': '610000', '甘肃省': '620000', '青海省': '630000', '宁夏': '640000', '新疆': '650000',
  381. '台湾省': '710000', '香港': '810000', '澳门': '820000',
  382. }
  383. # 本山祝福视频redis存储key
  384. BENSHAN_ZHUFU_KEY_NAME = 'com.weiqu.video.benshanzf'
  385. # 屏蔽视频配置 key:region_code, value:videos key list
  386. SHIELD_CONFIG = {
  387. '110000': [BENSHAN_ZHUFU_KEY_NAME, ],
  388. '500000': [BENSHAN_ZHUFU_KEY_NAME, ],
  389. '-1': [BENSHAN_ZHUFU_KEY_NAME, ],
  390. }
  391. class DevelopmentConfig(BaseConfig):
  392. """开发环境配置"""
  393. # 报警内容 环境区分
  394. ENV_TEXT = "开发环境"
  395. # 测试环境redis地址
  396. REDIS_INFO = {
  397. 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
  398. 'port': 6379,
  399. 'password': 'Wqsd@2019',
  400. }
  401. # Hologres连接参数,本地使用
  402. HOLOGRES_INFO = {
  403. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou.hologres.aliyuncs.com',
  404. 'port': 80,
  405. 'dbname': 'dssm',
  406. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  407. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  408. }
  409. # 测试环境mysql地址
  410. MYSQL_INFO = {
  411. 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
  412. 'port': 3306,
  413. 'user': 'wx2016_longvideo',
  414. 'password': 'wx2016_longvideoP@assword1234',
  415. 'db': 'longvideo',
  416. 'charset': 'utf8'
  417. }
  418. # Hologres视频状态存储表名
  419. VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
  420. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  421. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  422. VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'
  423. # 获取视频在流量池中的剩余可分发数接口地址
  424. GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  425. # 日志服务配置
  426. ALIYUN_LOG = {
  427. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  428. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  429. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  430. 'PROJECT': 'rov-server-test',
  431. }
  432. # 快速曝光流量池ID
  433. QUICK_FLOW_POOL_ID = 3
  434. class TestConfig(BaseConfig):
  435. """测试环境配置"""
  436. # 报警内容 环境区分
  437. ENV_TEXT = "测试环境"
  438. # 测试环境redis地址
  439. REDIS_INFO = {
  440. 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
  441. 'port': 6379,
  442. 'password': 'Wqsd@2019',
  443. }
  444. # Hologres连接参数,服务器使用
  445. HOLOGRES_INFO = {
  446. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  447. 'port': 80,
  448. 'dbname': 'dssm',
  449. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  450. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  451. }
  452. # 测试环境mysql地址
  453. MYSQL_INFO = {
  454. 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
  455. 'port': 3306,
  456. 'user': 'wx2016_longvideo',
  457. 'password': 'wx2016_longvideoP@assword1234',
  458. 'db': 'longvideo',
  459. 'charset': 'utf8'
  460. }
  461. # Hologres视频状态存储表名
  462. VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
  463. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  464. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  465. VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'
  466. # 获取视频在流量池中的剩余可分发数接口地址
  467. GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  468. # 日志服务配置
  469. ALIYUN_LOG = {
  470. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  471. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  472. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  473. 'PROJECT': 'rov-server-test',
  474. }
  475. # 快速曝光流量池ID
  476. QUICK_FLOW_POOL_ID = 3
  477. class PreProductionConfig(BaseConfig):
  478. """预发布环境配置"""
  479. # 报警内容 环境区分
  480. ENV_TEXT = "预发布环境"
  481. # 线上环境redis地址
  482. REDIS_INFO = {
  483. 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
  484. 'port': 6379,
  485. 'password': 'Wqsd@2019',
  486. }
  487. # Hologres连接参数,服务器使用
  488. HOLOGRES_INFO = {
  489. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  490. 'port': 80,
  491. 'dbname': 'dssm',
  492. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  493. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  494. }
  495. # 生产环境mysql地址
  496. MYSQL_INFO = {
  497. 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
  498. 'port': 3306,
  499. 'user': 'wx2016_longvideo',
  500. 'password': 'wx2016_longvideoP@assword1234',
  501. 'db': 'longvideo',
  502. 'charset': 'utf8'
  503. }
  504. # Hologres视频状态存储表名
  505. VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
  506. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  507. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  508. VIDEO_FILTER_URL = 'http://prespeed-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos'
  509. # 获取视频在流量池中的剩余可分发数接口地址
  510. GET_REMAIN_VIEW_COUNT_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  511. # 日志服务配置
  512. ALIYUN_LOG = {
  513. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  514. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  515. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  516. 'PROJECT': 'rov-server',
  517. }
  518. # 快速曝光流量池ID
  519. QUICK_FLOW_POOL_ID = 3
  520. class ProductionConfig(BaseConfig):
  521. """生产环境配置"""
  522. # 报警内容 环境区分
  523. ENV_TEXT = "生产环境"
  524. # 线上环境redis地址
  525. REDIS_INFO = {
  526. 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
  527. 'port': 6379,
  528. 'password': 'Wqsd@2019',
  529. }
  530. # Hologres连接参数,服务器使用
  531. HOLOGRES_INFO = {
  532. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  533. 'port': 80,
  534. 'dbname': 'dssm',
  535. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  536. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  537. }
  538. # 生产环境mysql地址
  539. MYSQL_INFO = {
  540. 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
  541. 'port': 3306,
  542. 'user': 'wx2016_longvideo',
  543. 'password': 'wx2016_longvideoP@assword1234',
  544. 'db': 'longvideo',
  545. 'charset': 'utf8'
  546. }
  547. # Hologres视频状态存储表名
  548. VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
  549. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  550. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  551. VIDEO_FILTER_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos'
  552. # 获取视频在流量池中的剩余可分发数接口地址
  553. GET_REMAIN_VIEW_COUNT_URL = 'http://api-internal.piaoquantv.com/flowpool/video/remainViewCount'
  554. # 日志服务配置
  555. ALIYUN_LOG = {
  556. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  557. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  558. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  559. 'PROJECT': 'rov-server',
  560. }
  561. # 快速曝光流量池ID
  562. QUICK_FLOW_POOL_ID = 3
  563. def set_config():
  564. # 获取环境变量 ROV_SERVER_ENV
  565. env = os.environ.get('ROV_SERVER_ENV')
  566. # env = 'dev'
  567. if env is None:
  568. # log_.error('ENV ERROR: is None!')
  569. return
  570. if env == 'dev':
  571. return DevelopmentConfig()
  572. elif env == 'test':
  573. return TestConfig()
  574. elif env == 'pre':
  575. return PreProductionConfig()
  576. elif env == 'pro':
  577. return ProductionConfig()
  578. else:
  579. # log_.error('ENV ERROR: is {}'.format(env))
  580. return