config.py 112 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094
  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. 'JOURNEY': 22, # 票圈足迹
  17. 'BLESSING_YEAR': 3, # 票圈福年
  18. 'H5': 12, # H5
  19. }
  20. # 白名单(影视,宗教)过滤Redis
  21. REDIS_INFO_FILTER = {
  22. 'host': 'r-bp1258kbkv8dj81dwj.redis.rds.aliyuncs.com',
  23. 'port': 6379,
  24. 'password': 'Wqsd@2019',
  25. }
  26. REGION_CODE = {
  27. '北京': '110000', '天津': '120000', '河北省': '130000', '山西省': '140000', '内蒙古': '150000',
  28. '辽宁省': '210000', '吉林省': '220000', '黑龙江省': '230000',
  29. '上海': '310000', '江苏省': '320000', '浙江省': '330000', '安徽省': '340000', '福建省': '350000', '江西省': '360000',
  30. '山东省': '370000',
  31. '河南省': '410000', '湖北省': '420000', '湖南省': '430000', '广东省': '440000', '广西': '450000', '海南省': '460000',
  32. '重庆': '500000', '四川省': '510000', '贵州省': '520000', '云南省': '530000', '西藏': '540000',
  33. '陕西省': '610000', '甘肃省': '620000', '青海省': '630000', '宁夏': '640000', '新疆': '650000',
  34. '台湾省': '710000', '香港': '810000', '澳门': '820000',
  35. }
  36. CITY_CODE = {
  37. '广州': '440100', '深圳': '440300', '成都': '510100', '长沙': '430100',
  38. }
  39. # 本山祝福视频redis存储key
  40. BENSHAN_ZHUFU_KEY_NAME = 'benshanzf:videos'
  41. # 特殊地区屏蔽危险视频redis存储key
  42. SPECIAL_AREA_LIMIT_KEY_NAME = 'special:area:limit:videos'
  43. # 屏蔽视频配置 key:region_code, value:videos key list
  44. SHIELD_CONFIG = {}
  45. SHIELD_CONFIG2 = {
  46. '-1': [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  47. CITY_CODE['广州']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  48. CITY_CODE['深圳']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  49. CITY_CODE['成都']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  50. CITY_CODE['长沙']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  51. REGION_CODE['北京']: [SPECIAL_AREA_LIMIT_KEY_NAME, ],
  52. }
  53. # 涉政视频可分发的端
  54. POLITICAL_RECOMMEND_APP_TYPE_LIST = [
  55. APP_TYPE['VLOG'], # vlog
  56. APP_TYPE['LOVE_LIVE'], # 票圈视频
  57. APP_TYPE['APP'], # 票圈视频APP
  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_rank4_appType_4_data2': 60011,
  101. 'region_rule_rank4_appType_4_data3': 60012,
  102. 'region_rule_rank4_appType_6_data2': 60013,
  103. 'region_rule_rank4_appType_6_data3': 60014,
  104. 'region_rule_rank4_appType_18_data2': 60015,
  105. 'region_rule_rank6_appType_0_data1': 60016,
  106. 'region_rule_rank6_appType_13_data2': 60017,
  107. 'abtest_095': 60010,
  108. 'abtest_095-1': 60000,
  109. 'abtest_112': 60018,
  110. 'abtest_082': 60019,
  111. 'abtest_117': 60020,
  112. 'abtest_120': 60021,
  113. 'abtest_121': 60022,
  114. 'abtest_122': 60023,
  115. 'abtest_130': 60024,
  116. 'abtest_139': 60025,
  117. 'app_abtest_110156': 60026,
  118. 'abtest_136': 60027,
  119. 'abtest_137': 60028,
  120. 'abtest_142': 60029,
  121. 'abtest_143': 60030,
  122. 'abtest_144': 60031,
  123. 'abtest_145': 60032,
  124. 'abtest_146': 60033,
  125. 'abtest_147': 60034,
  126. 'abtest_153': 60035,
  127. 'abtest_159': 60036,
  128. 'abtest_161': 60037,
  129. 'abtest_162': 60038,
  130. 'abtest_167': 60039,
  131. 'abtest_200': 60040,
  132. 'abtest_214': 60041,
  133. 'abtest_215': 60042,
  134. 'abtest_224': 60043,
  135. 'abtest_228': 60044,
  136. 'abtest_229': 60045,
  137. 'abtest_262': 60046,
  138. 'abtest_316': 60047,
  139. 'abtest_319': 60048,
  140. 'abtest_320': 60049,
  141. 'abtest_322': 60050,
  142. 'abtest_323': 60051,
  143. 'abtest_326': 60052,
  144. 'abtest_327': 60053,
  145. 'abtest_328': 60054,
  146. 'abtest_332': 60055,
  147. 'abtest_333': 60056,
  148. 'abtest_334': 60057,
  149. 'abtest_335': 60058,
  150. 'abtest_336': 60059,
  151. 'abtest_337': 60060,
  152. 'abtest_338': 60061,
  153. 'abtest_367': 60062,
  154. 'abtest_368': 60063,
  155. 'abtest_373': 60064,
  156. 'abtest_393': 60065,
  157. 'abtest_394': 60066,
  158. 'abtest_395': 60067,
  159. 'abtest_396': 60068,
  160. 'abtest_407': 60069,
  161. 'abtest_408': 60070,
  162. 'abtest_409': 60071,
  163. 'abtest_420': 60072,
  164. 'abtest_421': 60073,
  165. 'abtest_430': 60074,
  166. 'abtest_461': 60075,
  167. 'abtest_462': 60076,
  168. 'abtest_463': 60077,
  169. 'abtest_465': 60078,
  170. 'abtest_466': 60079,
  171. 'abtest_469': 60080,
  172. 'abtest_470': 60081,
  173. 'abtest_471': 60082,
  174. 'abtest_475': 60083,
  175. 'abtest_476': 60084,
  176. 'abtest_480': 60085,
  177. 'abtest_481': 60086,
  178. 'abtest_500': 60087,
  179. 'abtest_501': 60088,
  180. 'abtest_502': 60089,
  181. 'abtest_503': 60090,
  182. 'abtest_505': 60091,
  183. 'abtest_506': 60092,
  184. 'abtest_508': 60093,
  185. 'abtest_510': 60094,
  186. }, # 地域分组小时级规则实验
  187. 'rank_by_24h': {
  188. '24h_rule_rank1': 70001,
  189. '24h_rule_rank2': 70002,
  190. }, # 小时级规则更新过去24h数据实验
  191. 'top_video_relevant_appType_19': 80001, # 最惊奇电影类视频分享页相关推荐相似视频实验
  192. 'whole_movies': 90001, # 最惊奇首页/相关推荐 完整影视资源实验
  193. }
  194. # AB实验配置
  195. AB_EXP_CODE = {
  196. # '068': {
  197. # 'data_key': 'data1', 'rule_key': 'rule4',
  198. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1')
  199. # }, # 票圈内容精选:data-vlog, rule-rule4
  200. '069': {
  201. 'data_key': 'data1', 'rule_key': 'rule4-1',
  202. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_095-1')
  203. }, # 最惊奇:data-vlog, rule-rule4
  204. # '072': {
  205. # 'data_key': 'data1', 'rule_key': 'rule4',
  206. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1')
  207. # }, # 票圈视频:data-vlog, rule-rule4
  208. # '073': {
  209. # 'data_key': 'data1', 'rule_key': 'rule4',
  210. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1')
  211. # }, # 票圈短视频:data-vlog, rule-rule4
  212. '074': {
  213. 'data_key': 'data1', 'rule_key': 'rule4-1',
  214. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_095-1')
  215. }, # 老好看视频:data-vlog, rule-rule4
  216. # '082': {
  217. # 'data_key': 'data2', 'rule_key': 'rule4',
  218. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_082')
  219. # }, # 票圈内容精选:data-[内容精选,vlog], rule-rule4
  220. # '083': {
  221. # 'data_key': 'data6', 'rule_key': 'rule3',
  222. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_5_data4')
  223. # }, # 票圈内容精选:data-[内容精选,vlog, 票圈视频,票圈短视频], rule-rule3
  224. '095': {
  225. 'data_key': 'data1', 'rule_key': 'rule4',
  226. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_095')
  227. }, # vlog:data-vlog, rule-rule4
  228. '095-1': {
  229. 'data_key': 'data1', 'rule_key': 'rule4-1',
  230. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_095-1')
  231. },
  232. # '096': {
  233. # 'data_key': 'data3', 'rule_key': 'rule3',
  234. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_4_data2')
  235. # }, # 票圈视频:data-[票圈视频,vlog], rule-rule3
  236. # '097': {
  237. # 'data_key': 'data6', 'rule_key': 'rule3',
  238. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_4_data3')
  239. # }, # 票圈视频:data-[内容精选,vlog, 票圈视频,票圈短视频], rule-rule3
  240. # '098': {
  241. # 'data_key': 'data4', 'rule_key': 'rule3',
  242. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_6_data2')
  243. # }, # 票圈短视频:data-[票圈短视频,vlog], rule-rule3
  244. # '099': {
  245. # 'data_key': 'data6', 'rule_key': 'rule3',
  246. # 'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_6_data3')
  247. # }, # 票圈短视频:data-[内容精选,vlog, 票圈视频,票圈短视频], rule-rule3
  248. # '112': {
  249. # 'data_key': 'data1', 'rule_key': 'rule4',
  250. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_112')
  251. # }, # 召回定位优化实验
  252. # '117': {
  253. # 'data_key': 'data6', 'rule_key': 'rule7',
  254. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_117')
  255. # }, # vlog 全数据实验 data-[vlog: 0.25, 内容精选: 0.25, 票圈视频: 0.25, 票圈短视频: 0.25], rule-rule7
  256. # '120': {
  257. # 'data_key': 'data3', 'rule_key': 'rule7',
  258. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_120')
  259. # }, # 票圈视频 分数据实验 data-[vlog: 0.5, 票圈视频: 0.5], rule-rule7
  260. '121': {
  261. 'data_key': 'data2', 'rule_key': 'rule7-1',
  262. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_121')
  263. }, # 内容精选 分数据实验 data-[vlog: 0.5, 内容精选: 0.5], rule-rule7
  264. # '122': {
  265. # 'data_key': 'data4', 'rule_key': 'rule7',
  266. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_122')
  267. # }, # 票圈短视频 分数据实验 data-[vlog: 0.5, 票圈短视频: 0.5], rule-rule7
  268. # '130': {
  269. # 'data_key': 'data1', 'rule_key': 'rule4',
  270. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_130')
  271. # }, # 095实验基础上去除大列表,进行兜底策略优化
  272. # '139': {
  273. # 'data_key': 'data1', 'rule_key': 'rule9', '30day_rule_key': 'rule1',
  274. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_139')
  275. # },
  276. # '136': {
  277. # 'data_key': 'data1', 'rule_key': 'rule10',
  278. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_136')
  279. # },
  280. # '137': {
  281. # 'data_key': 'data1', 'rule_key': 'rule11',
  282. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_137')
  283. # },
  284. # '142': {
  285. # 'data_key': 'data8', 'rule_key': 'rule7',
  286. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_142')
  287. # },
  288. # '143': {
  289. # 'data_key': 'data9', 'rule_key': 'rule7',
  290. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_143')
  291. # },
  292. '144': {
  293. 'data_key': 'data10', 'rule_key': 'rule7',
  294. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_144')
  295. },
  296. # '145': {
  297. # 'data_key': 'data11', 'rule_key': 'rule7',
  298. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_145')
  299. # },
  300. # '146': {
  301. # 'data_key': 'data12', 'rule_key': 'rule7',
  302. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_146')
  303. # },
  304. # '147': {
  305. # 'data_key': 'data13', 'rule_key': 'rule7',
  306. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_147')
  307. # },
  308. # '153': {
  309. # 'data_key': 'data1', 'rule_key': 'rule12',
  310. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_153')
  311. # },
  312. # '159': {
  313. # 'data_key': 'data14', 'rule_key': 'rule7',
  314. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_159')
  315. # }, # vlog 全数据实验 data-[vlog: 0.78, 票圈视频: 0.11, 票圈短视频: 0.08, 内容精选: 0.03], rule-rule7
  316. # '161': {
  317. # 'data_key': 'data1', 'rule_key': 'rule13',
  318. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_161')
  319. # },
  320. # '162': {
  321. # 'data_key': 'data1', 'rule_key': 'rule14',
  322. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_162')
  323. # },
  324. # '167': {
  325. # 'data_key': 'lhk_data', 'rule_key': 'lhk_rule',
  326. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_167')
  327. # },
  328. # '200': {
  329. # 'data_key': 'data1', 'rule_key': 'rule15',
  330. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_200')
  331. # },
  332. # '214': {
  333. # 'data_key': 'data1', 'rule_key': 'rule16',
  334. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_214')
  335. # },
  336. # '215': {
  337. # 'data_key': 'data1', 'rule_key': 'rule17',
  338. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_215')
  339. # },
  340. # '224': {
  341. # 'data_key': 'data1', 'rule_key': 'rule18',
  342. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_224')
  343. # },
  344. # '228': {
  345. # 'data_key': 'lhk_data', 'rule_key': 'lhk_rule1',
  346. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_228'),
  347. # 'religion_class_name': 'catholicism',
  348. # }, # 老好看 天主教 - 2插1
  349. # '229': {
  350. # 'data_key': 'lhk_data', 'rule_key': 'lhk_rule2',
  351. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_229'),
  352. # 'religion_class_name': 'christianity'
  353. # }, # 老好看 基督教 - 2插1
  354. # '262': {
  355. # 'data_key': 'data1', 'rule_key': 'rule4-2',
  356. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_262'),
  357. # 'shield_config': SHIELD_CONFIG2,
  358. # }, # vlog:data-vlog, rule-rule4-2
  359. # '316': {
  360. # 'data_key': 'data10', 'rule_key': 'rule19',
  361. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_316')
  362. # },
  363. # '319': {
  364. # 'data_key': 'data10', 'rule_key': 'rule19',
  365. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_319')
  366. # },
  367. # '322': {
  368. # 'data_key': 'data10', 'rule_key': 'rule7',
  369. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_322')
  370. # },
  371. # '323': {
  372. # 'data_key': 'data10', 'rule_key': 'rule7',
  373. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_323')
  374. # },
  375. # '326': {
  376. # 'data_key': 'data10', 'rule_key': 'rule7',
  377. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_326')
  378. # },
  379. # '327': {
  380. # 'data_key': 'data10', 'rule_key': 'rule7',
  381. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_327')
  382. # },
  383. '328': {
  384. 'data_key': 'data10', 'rule_key': 'rule7',
  385. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_328')
  386. },
  387. # '332': {
  388. # 'data_key': 'data10', 'rule_key': 'rule7',
  389. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_332')
  390. # },
  391. # '333': {
  392. # 'data_key': 'data10', 'rule_key': 'rule7',
  393. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_333')
  394. # },
  395. # '334': {
  396. # 'data_key': 'data10', 'rule_key': 'rule7',
  397. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_334')
  398. # },
  399. # '335': {
  400. # 'data_key': 'data10', 'rule_key': 'rule7',
  401. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_335')
  402. # },
  403. # '336': {
  404. # 'data_key': 'data10', 'rule_key': 'rule7',
  405. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_336')
  406. # },
  407. # '337': {
  408. # 'data_key': 'data10', 'rule_key': 'rule7',
  409. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_337')
  410. # },
  411. # '338': {
  412. # 'data_key': 'data10', 'rule_key': 'rule7',
  413. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_338')
  414. # },
  415. # '367': {
  416. # 'data_key': 'data10', 'rule_key': 'rule7',
  417. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_367')
  418. # },
  419. # '368': {
  420. # 'data_key': 'data10', 'rule_key': 'rule7',
  421. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_368')
  422. # },
  423. # '373': {
  424. # 'data_key': 'data10', 'rule_key': 'rule7',
  425. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_373')
  426. # },
  427. # '393': {
  428. # 'data_key': 'data10', 'rule_key': 'rule7',
  429. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_393')
  430. # },
  431. # '394': {
  432. # 'data_key': 'data10', 'rule_key': 'rule7',
  433. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_394')
  434. # },
  435. '395': {
  436. 'data_key': 'data10', 'rule_key': 'rule7',
  437. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_395')
  438. },
  439. '396': {
  440. 'data_key': 'data10', 'rule_key': 'rule7',
  441. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_396')
  442. },
  443. # '407': {
  444. # 'data_key': 'data10', 'rule_key': 'rule7',
  445. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_407')
  446. # },
  447. # '408': {
  448. # 'data_key': 'data10', 'rule_key': 'rule7',
  449. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_408')
  450. # },
  451. # '409': {
  452. # 'data_key': 'data10', 'rule_key': 'rule7',
  453. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_409')
  454. # },
  455. '420': {
  456. 'data_key': 'data1', 'rule_key': 'rule4',
  457. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_420')
  458. }, # simrecall+融合+地域召回使用vlog数据
  459. # '421': {
  460. # 'data_key': 'data2', 'rule_key': 'rule7-1',
  461. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_421')
  462. # }, # simrecall+融合+地域召回使用vlog数据&内容精选数据 data-[vlog: 0.5, 内容精选: 0.5]
  463. # '430': {
  464. # 'data_key': 'videos5', 'rule_key': 'rule7-1',
  465. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_430')
  466. # }, # simrecall+融合+地域召回使用内容精选数据 data-[内容精选: 1]
  467. # '461': {
  468. # 'data_key': 'data1', 'rule_key': 'rule20',
  469. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_461')
  470. # }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score1(加权前两小时回流表现数据)
  471. # '462': {
  472. # 'data_key': 'data1', 'rule_key': 'rule21',
  473. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_462')
  474. # }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score2(增加前两小时回流留存特征)
  475. '463': {
  476. 'data_key': 'data1', 'rule_key': 'rule22',
  477. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_463')
  478. }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score3(增加前两小时回流率特征)
  479. # '465': {
  480. # 'data_key': 'data1', 'rule_key': 'rule23',
  481. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_465')
  482. # }, # simrecall+融合+地域召回使用vlog数据+回流数据使用 分享限制地域,回流不限制地域 统计数据
  483. # '466': {
  484. # 'data_key': 'data1', 'rule_key': 'rule24',
  485. # 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_466')
  486. # }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score2(增加前两小时回流留存特征)+ 回流数据使用 分享限制地域,回流不限制地域 统计数据
  487. '469': {
  488. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score2:',
  489. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_469')
  490. }, # simrecall + return_video2 + 融合 + rank_score2
  491. '470': {
  492. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score4:',
  493. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_470')
  494. }, # simrecall + return_video2 + 融合 + rank_score4
  495. '471': {
  496. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score5:',
  497. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_471')
  498. }, # simrecall + return_video2 + 融合 + rank_score5
  499. '475': {
  500. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score6:',
  501. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_475')
  502. }, # simrecall + return_video2 + 融合 + rank_score6
  503. '476': {
  504. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score7:',
  505. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_476')
  506. }, # simrecall + return_video2 + 融合 + rank_score7
  507. '480': {
  508. 'data_key': 'data1', 'rule_key': 'rule22', 'rank_key_prefix': 'rank:score4:',
  509. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_480')
  510. }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score3(增加前两小时回流率特征) + 融合 + rank_score4
  511. '481': {
  512. 'data_key': 'data1', 'rule_key': 'rule22', 'rank_key_prefix': 'rank:score6:',
  513. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_481')
  514. }, # simrecall+融合+地域召回使用vlog数据+地域小时级召回score3(增加前两小时回流率特征) + 融合 + rank_score6
  515. '500': {
  516. 'data_key': 'data10', 'rule_key': 'rule25',
  517. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_500')
  518. }, # simrecall+融合 + back_view0
  519. '501': {
  520. 'data_key': 'data10', 'rule_key': 'rule26',
  521. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_501')
  522. }, # simrecall+融合 + back_view1
  523. '502': {
  524. 'data_key': 'data10', 'rule_key': 'rule27',
  525. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_502')
  526. }, # simrecall+融合+backrate指数加权_2
  527. '503': {
  528. 'data_key': 'data10', 'rule_key': 'rule28',
  529. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_503')
  530. }, # simrecall+融合+backrate指数加权_2&其他降权_0.5
  531. '505': {
  532. 'data_key': 'data10', 'rule_key': 'rule7', 'rank_key_prefix': 'rank:score8:',
  533. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_505')
  534. }, # simrecall + 融合 + rank_score8
  535. '506': {
  536. 'data_key': 'data10', 'rule_key': 'rule28', 'rank_key_prefix': 'rank:score8:',
  537. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_506')
  538. }, # simrecall+融合+backrate指数加权_2&其他降权_0.5 + rank_score8
  539. '508': {
  540. 'data_key': 'data10', 'rule_key': 'rule29',
  541. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_508')
  542. }, # simrecall+融合+region小时级采用基于序的加法公式算分 + 基线的rank公式
  543. '510': {
  544. 'data_key': 'data10', 'rule_key': 'rule30',
  545. 'ab_code': AB_CODE['region_rank_by_h'].get('abtest_510')
  546. }, # simrecall+融合+增加不区分地域小时级列表
  547. }
  548. # APP ab实验配置
  549. APP_AB_CODE = {
  550. # 首页推荐
  551. '10003': {
  552. '110156': {
  553. 'data_key': 'data7', 'rule_key': 'rule8',
  554. 'ab_code': AB_CODE['region_rank_by_h'].get('app_abtest_110156')
  555. }, # 票圈视频APP 分数据实验 data-[vlog: 0.5, 票圈视频APP: 0.5], rule-rule8
  556. },
  557. # 相关推荐
  558. '10037': {},
  559. }
  560. # 默认全量配置
  561. INITIAL_CONFIG = {
  562. APP_TYPE['VLOG']: '095', # vlog
  563. APP_TYPE['LOVE_LIVE']: '144', # 票圈视频
  564. APP_TYPE['LONG_VIDEO']: '121', # 内容精选
  565. APP_TYPE['LAO_HAO_KAN_VIDEO']: '074', # 老好看视频
  566. APP_TYPE['ZUI_JING_QI']: '069', # 最惊奇
  567. 'other': '095-1', # 其他端默认配置
  568. }
  569. # 小程序小时级列表key不同实验标识
  570. RULE_KEY = {
  571. 'initial': '',
  572. 'rule_rank1': 'rule1',
  573. 'rule_rank2': 'rule2',
  574. 'rule_rank3': 'rule3',
  575. 'rule_rank4': 'rule4',
  576. 'rule_rank5': 'rule5',
  577. 'rule_rank6': 'rule6',
  578. }
  579. # 小程序地域分组小时级列表key不同实验标识
  580. DATA_KEY_REGION = {
  581. 'initial': '',
  582. 'region_rule_rank3': 'data1'
  583. }
  584. # 小时级规则更新过去24h数据列表key不同实验标识
  585. RULE_KEY_24H = {
  586. 'initial': '',
  587. '24h_rule_rank1': 'rule1',
  588. '24h_rule_rank2': 'rule2',
  589. }
  590. # pushFrom
  591. PUSH_FROM = {
  592. 'rov_recall': 'recall_pool', # rov召回池
  593. 'flow_recall': 'flow_pool', # 流量池
  594. 'top': 'op_manual', # 置顶
  595. 'bottom': 'bottom_strategy', # 一层兜底
  596. 'bottom_last': 'bottom_strategy_last', # 二层兜底
  597. 'bottom2': 'bottom_strategy2', # 兜底策略2
  598. 'position_insert': 'position_insert', # 按位置插入
  599. 'relevant_video_op': 'relevant_video_op', # 相关推荐强插
  600. 'rov_recall_h': 'recall_pool_h', # 小时级更新列表
  601. 'rov_recall_24h': 'recall_pool_24h', # 小时级更新相对24h列表
  602. 'rov_recall_day': 'recall_pool_day', # 天级规则更新列表
  603. 'old_video': 'old_video_recall', # 老视频
  604. 'rov_recall_region_h': 'recall_pool_region_h', # 地域分组小时级更新列表
  605. 'rov_recall_region_day': 'recall_pool_region_day', # 地域分组天级更新列表
  606. 'rov_recall_h_h': 'rov_recall_h_h', # 不区分地域小时级更新列表
  607. 'rov_recall_region_24h': 'recall_pool_region_24h', # 地域分组小时级更新24h列表
  608. 'rov_recall_24h_dup': 'rov_recall_24h_dup', # 小时级更新24h筛选后剩余数据列表
  609. 'rov_recall_48h': 'recall_pool_48h', # 小时级更新相对48h列表
  610. 'rov_recall_48h_dup': 'rov_recall_48h_dup', # 小时级更新48h筛选后剩余数据列表
  611. 'top_video_relevant_appType_19': 'relevant_video', # 相似视频
  612. 'whole_movies': 'whole_movies', # 完整影视
  613. 'talk_videos': 'talk_videos', # 影视解说
  614. 'special_mid': 'special_mid_videos', # 特殊mid指定视频
  615. 'rov_recall_30day': 'recall_pool_30day', # 天级更新相对30天列表
  616. 'sim_hot_vid_recall': 'sim_hot_vid_recall', # 相似视频召回
  617. 'fast_flow_recall': 'fast_flow_recall', #快速流量池召回
  618. 'normal_flow_recall': 'normal_flow_recall', # 普通流量池召回
  619. 'hot_3_day_recall': 'hot_3_day_recall', # 3天召回
  620. 'hot_recall': 'hot_recall', # hot召回
  621. 'w2v_recall': 'w2v_recall', #word2vec
  622. 'u2i_tag_recall':'u2i_tag_recall', #u2i_tag_recall
  623. 'u2u2i_recall':'u2u2i_recall', #u2u2i_recall,
  624. 'return_video_recall': 'return_video_recall', # return_video_recall
  625. 'u2i_tag_play_recall': 'u2i_tag_play_recall', # u2i_tag_recall
  626. }
  627. # category id mapping
  628. CATEGORY = {
  629. 'recommend': [55], # 推荐
  630. 'other': [] # 其他类别
  631. }
  632. # 前k个从ROV召回池中获取视频
  633. K = 3
  634. # 从流量池获取视频的概率设置
  635. P = 0.3
  636. P_18_19 = 1
  637. # 小程序离线ROV模型结果存放 redis key前缀,完整格式:recall:item:score:rov:applet:{date}
  638. RECALL_KEY_NAME_PREFIX = 'recall:item:score:rov:applet:'
  639. # # 小程序小时级更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.h.{rule_key}.{date}.{h}
  640. # RECALL_KEY_NAME_PREFIX_BY_H = 'com.weiqu.video.recall.item.score.h.'
  641. # # 小程序相对24h数据更新结果与 小程序小时级更新结果 去重后 存放 redis key前缀,
  642. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.24h.h.{rule_key}.{date}.{h}
  643. # RECALL_KEY_NAME_PREFIX_DUP_24H_H = 'com.weiqu.video.recall.hot.item.score.dup.24h.h.'
  644. # # 小程序离线ROV模型结果与小程序小时级更新结果去重后 存放 redis key前缀,
  645. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.h.{rule_key}{date}.{h}
  646. # RECALL_KEY_NAME_PREFIX_DUP_H = 'com.weiqu.video.recall.hot.item.score.dup.h.'
  647. # # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.mid.{appType}.{mid}
  648. # H_WITH_MID_RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.h.mid.'
  649. # # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.record.mid.{appType}.{mid}
  650. # H_WITH_MID_RECORD_KEY_NAME_PREFIX = 'com.weiqu.video.h.record.mid.'
  651. #
  652. # # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.24h.mid.{appType}.{mid}
  653. # H_WITH_MID_RECALL_KEY_NAME_PREFIX_24H = 'com.weiqu.video.recall.hot.item.score.h.24h.mid.'
  654. # # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.24h.record.mid.{appType}.{mid}
  655. # H_WITH_MID_RECORD_KEY_NAME_PREFIX_24H = 'com.weiqu.video.h.24h.record.mid.'
  656. #
  657. # # 每个mid存储对应小时级更新结果 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.h.region.24h.mid.{appType}.{mid}
  658. # H_WITH_MID_RECALL_KEY_NAME_PREFIX_REGION_24H = 'com.weiqu.video.recall.hot.item.score.h.region.24h.mid.'
  659. # # 记录 mid-小时级key 中数据所属(date,h),完整格式:com.weiqu.video.h.region.24h.record.mid.{appType}.{mid}
  660. # H_WITH_MID_RECORD_KEY_NAME_PREFIX_REGION_24H = 'com.weiqu.video.h.region.24h.record.mid.'
  661. # 用户上一次在 相对30天 天级更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:30day:{appType}:{mid}
  662. LAST_VIDEO_FROM_30DAY_PREFIX = 'recall:last:item:30day:'
  663. # 记录 mid-上一次在 地域分组小时级 更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:30day:{appType}:{mid}
  664. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_30DAY = 'recall:last:record:30day:'
  665. # 用户上一次在 地域分组小时级 更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:h:{appType}:{mid}
  666. LAST_VIDEO_FROM_REGION_H_PREFIX = 'recall:last:item:region:h:'
  667. # 记录 mid-上一次在 地域分组小时级 更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:h:{appType}:{mid}
  668. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_H = 'recall:last:record:region:h:'
  669. # 用户上一次在 不分地域小时级 更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup:h:{appType}:{mid}
  670. LAST_VIDEO_FROM_REGION_DUP_H_PREFIX = 'recall:last:item:region:dup:h:'
  671. # 记录 mid-上一次在 不分地域小时级 更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup:h:{appType}:{mid}
  672. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP_H = 'recall:last:record:region:dup:h:'
  673. # 用户上一次在dup1 分地域24h更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup1:24h:{appType}:{mid}
  674. LAST_VIDEO_FROM_REGION_DUP1_24H_PREFIX = 'recall:last:item:region:dup1:24h:'
  675. # 记录 mid-上一次在dup1 分地域24h更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup1:24h:{appType}:{mid}
  676. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP1_24H = 'recall:last:record:region:dup1:24h:'
  677. # 用户上一次在dup2 24h更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup2:24h:{appType}:{mid}
  678. LAST_VIDEO_FROM_REGION_DUP2_24H_PREFIX = 'recall:last:item:region:dup2:24h:'
  679. # 记录 mid-上一次在dup2 24h更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup2:24h:{appType}:{mid}
  680. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP2_24H = 'recall:last:record:region:dup2:24h:'
  681. # 用户上一次在dup3 24h更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup3:24h:{appType}:{mid}
  682. LAST_VIDEO_FROM_REGION_DUP3_24H_PREFIX = 'recall:last:item:region:dup3:24h:'
  683. # 记录 mid-上一次在dup3 24h更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup2:24h:{appType}:{mid}
  684. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP3_24H = 'recall:last:record:region:dup3:24h:'
  685. # 用户上一次在dup2 48h更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup2:48h:{appType}:{mid}
  686. LAST_VIDEO_FROM_REGION_DUP2_48H_PREFIX = 'recall:last:item:region:dup2:48h:'
  687. # 记录 mid-上一次在dup2 48h更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup2:48h:{appType}:{mid}
  688. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP2_48H = 'recall:last:record:region:dup2:48h:'
  689. # 用户上一次在dup3 48h更新列表中对应的位置 redis key前缀,完整key格式:recall:last:item:region:dup3:48h:{appType}:{mid}
  690. LAST_VIDEO_FROM_REGION_DUP3_48H_PREFIX = 'recall:last:item:region:dup3:48h:'
  691. # 记录 mid-上一次在dup3 48h更新列表中对应的位置key 中数据所属(date,h),完整格式:recall:last:record:region:dup2:48h:{appType}:{mid}
  692. RECORD_KEY_NAME_PREFIX_LAST_VIDEO_REGION_DUP3_48H = 'recall:last:record:region:dup3:48h:'
  693. # # 小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.h.item.{rule_key}
  694. # H_VIDEO_FILER = 'com.weiqu.video.filter.h.item.'
  695. # # 小程序天级更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.day.{rule_key}.{date}
  696. # RECALL_KEY_NAME_PREFIX_BY_DAY = 'com.weiqu.video.recall.item.score.day.'
  697. # # 小程序离线ROV模型结果与小程序天级更新结果去重后 存放 redis key前缀,
  698. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.day.now.{rule_key}.{date}
  699. # RECALL_KEY_NAME_PREFIX_DUP_DAY_NOW = 'com.weiqu.video.recall.hot.item.score.dup.day.now.'
  700. # # 使用前一天小程序离线ROV模型结果与小程序天级更新结果去重后 存放 redis key前缀,
  701. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.day.pre.{rule_key}.{date}
  702. # RECALL_KEY_NAME_PREFIX_DUP_DAY_PRE = 'com.weiqu.video.recall.hot.item.score.dup.day.pre.'
  703. # # 小程序小时级24h数据更新结果存放 redis key前缀,
  704. # # 完整格式:com.weiqu.video.recall.item.score.apptype.24h.{appType}.{data_key}.{rule_key}.{date}.{h}
  705. # RECALL_KEY_NAME_PREFIX_BY_24H = 'com.weiqu.video.recall.item.score.apptype.24h.'
  706. # # 小程序离线ROV模型结果与小程序小时级24h更新结果去重后 存放 redis key前缀,
  707. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.24h.{rule_key}.{date}.{h}
  708. # RECALL_KEY_NAME_PREFIX_DUP_24H = 'com.weiqu.video.recall.hot.item.score.dup.24h.'
  709. # # 小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.apptype.h.item.24h.{appType}.{data_key}.{rule_key}
  710. # H_VIDEO_FILER_24H = 'com.weiqu.video.filter.apptype.h.item.24h.'
  711. # 小程序相对30天数据天级更新结果存放 redis key前缀,
  712. # 完整格式:recall:item:score:30day:{data_key}:{rule_key}:{date}
  713. RECALL_KEY_NAME_PREFIX_30DAY = 'recall:item:score:30day:'
  714. # 小程序地域分组小时级更新结果存放 redis key前缀,
  715. # 完整格式:recall:item:score:region:h:{region}:{data_key}:{rule_key}:{date}:{h}
  716. RECALL_KEY_NAME_PREFIX_REGION_BY_H = 'recall:item:score:region:h:'
  717. # 小程序不分地域小时级更新结果与小程序地域分组小时级更新结果去重后 存放 redis key前缀,
  718. # 完整格式:recall:item:score:region:dup:h:{region}:{data_key}:{rule_key}:{date}:{h}
  719. RECALL_KEY_NAME_PREFIX_DUP_H_H = 'recall:item:score:region:dup:h:'
  720. # 小程序地域分组天级更新结果与小程序地域分组小时级更新结果去重后 存放 redis key前缀,
  721. # 完整格式:com.weiqu.video.recall.hot.item.score.dup1.region.day.h.{region}.{rule_key}.{date}.{h}
  722. # RECALL_KEY_NAME_PREFIX_DUP1_REGION_DAY_H = 'com.weiqu.video.recall.hot.item.score.dup1.region.day.h.'
  723. # 小程序地域分组小时级更新24h结果与 小程序地域分组小时级更新结果/小程序不分地域小时级更新结果 去重后 存放 redis key前缀,
  724. # 完整格式:recall:item:score:region:dup1:region24h:{region}:{data_key}:{rule_key}:{date}:{h}
  725. RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H = 'recall:item:score:region:dup1:region24h:'
  726. # 小程序天级更新结果与 小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  727. # 完整格式:com.weiqu.video.recall.hot.item.score.dup2.region.day.h.{region}.{rule_key}.{date}.{h}
  728. # RECALL_KEY_NAME_PREFIX_DUP2_REGION_DAY_H = 'com.weiqu.video.recall.hot.item.score.dup2.region.day.h.'
  729. # 小程序24h更新结果与 小程序地域分组24h更新结果/小程序地域分组小时级更新结果/小程序不分地域小时级更新结果 去重后 存放 redis key前缀,
  730. # 完整格式:recall:item:score:region:dup2:24h:{region}:{data_key}:{rule_key}:{date}:{h}
  731. RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H = 'recall:item:score:region:dup2:24h:'
  732. # 小程序小时级24h数据 筛选后的剩余数据 更新结果 与 小程序24h更新结果/小程序地域分组24h更新结果/小程序地域分组小时级更新结果/小程序不分地域小时级更新结果 去重后 存放 redis key前缀,
  733. # 完整格式:recall:item:score:region:dup3:24h:{region}:{data_key}:{rule_key}:{date}:{h}
  734. RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H = 'recall:item:score:region:dup3:24h:'
  735. # 小程序48h更新结果与 小程序地域分组24h更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  736. # 完整格式:recall:item:score:region:dup2:48h:{region}:{data_key}:{rule_key}:{date}:{h}
  737. RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H = 'recall:item:score:region:dup2:48h:'
  738. # 小程序小时级48h数据 筛选后的剩余数据 更新结果 与 小程序48h更新结果/小程序地域分组24h更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  739. # 完整格式:recall:item:score:region:dup3:48h:{region}:{data_key}:{rule_key}:{date}:{h}
  740. RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H = 'recall:item:score:region:dup3:48h:'
  741. # 小程序离线ROV模型结果与 小程序天级更新结果/小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重后 存放 redis key前缀,
  742. # 完整格式:recall:item:score:region:dup4:rov:{region}:{data_key}:{rule_key}:{date}:{h}
  743. RECALL_KEY_NAME_PREFIX_DUP_REGION_H = 'recall:item:score:region:dup4:rov:'
  744. # 地域分组小时级视频状态不符合推荐要求的列表 redis key,
  745. # 完整格式:com.weiqu.video.filter.apptype.region.h.item.{region}.{appType}.{data_key}.{rule_key}
  746. # REGION_H_VIDEO_FILER = 'com.weiqu.video.filter.apptype.region.h.item.'
  747. # # 小程序地域分组小时级更新24h结果存放 redis key前缀,
  748. # # 完整格式:com.weiqu.video.recall.item.score.apptype.region.24h.{region}.{appType}.{data_key}.{rule_key}.{date}.{h}
  749. # RECALL_KEY_NAME_PREFIX_REGION_BY_24H = 'com.weiqu.video.recall.item.score.apptype.region.24h.'
  750. # # 小程序天级更新结果与 小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
  751. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.day.24h.{region}.{rule_key}.{date}.{h}
  752. # RECALL_KEY_NAME_PREFIX_DUP_REGION_DAY_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.day.24h.'
  753. # # 小程序离线ROV模型结果与 小程序天级更新结果/小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
  754. # # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.24h.{region}.{rule_key}.{date}.{h}
  755. # RECALL_KEY_NAME_PREFIX_DUP_REGION_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.24h.'
  756. # # 地域分组小时级更新24h视频状态不符合推荐要求的列表 redis key,
  757. # # 完整格式:com.weiqu.video.filter.apptype.region.h.item.24h.{region}.{appType}.{data_key}.{rule_key}
  758. # REGION_H_VIDEO_FILER_24H = 'com.weiqu.video.filter.apptype.region.h.item.24h.'
  759. # app应用 小程序离线ROV模型结果存放 redis key前缀,完整格式:recall:item:score:rov:app:{date}
  760. RECALL_KEY_NAME_PREFIX_APP = 'recall:item:score:rov:app:'
  761. # # app应用 小时级数据更新最终结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.app.{date}.{h}
  762. # APP_FINAL_RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.app.'
  763. # appType:[18, 19]小程序离线ROV模型结果存放 redis key前缀,完整格式:recall:item:score:{appType}:{date}:{h}
  764. RECALL_KEY_NAME_PREFIX_APP_TYPE = 'recall:item:score:'
  765. # # 小程序老视频更新结果存放 redis key 前缀,完整格式:'com.weiqu.video.recall.old.item.{date}'
  766. # RECALL_KEY_NAME_PREFIX_OLD_VIDEOS = 'com.weiqu.video.recall.old.item.'
  767. # appType = 6, ROV召回池redis key前缀,完整格式:com.weiqu.video.recall.hot.apptype.h.item.score.6.{h}
  768. # RECALL_KEY_NAME_PREFIX_APP_TYPE = 'com.weiqu.video.recall.hot.apptype.h.item.score.6.'
  769. # 流量池ID列表: 尾号0-9对应流量池ID:7-16
  770. FLOWPOOL_ID_LIST = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
  771. # 流量池分发实验配置(对照组与实验组划分)存放 redis key
  772. FLOWPOOL_ABTEST_KEY_NAME = 'flow:pool:abtest:config'
  773. # 流量池离线模型结果存放 redis key前缀,完整格式 flow:pool:item:score:{appType}
  774. FLOWPOOL_KEY_NAME_PREFIX = 'flow:pool:item:score:'
  775. # 快速曝光流量池数据存放 redis key前缀,完整格式 flow:pool:quick:item:score:{appType}:{flowPool_id}
  776. QUICK_FLOWPOOL_KEY_NAME_PREFIX = 'flow:pool:quick:item:score:'
  777. # 流量池离线模型结果存放 redis key前缀,完整格式 flow:pool:item:{appType}
  778. FLOWPOOL_KEY_NAME_PREFIX_SET = 'flow:pool:item:'
  779. # 流量池视频分层存放 redis key前缀,完整格式 flow:pool:level:item:{appType}:{level}
  780. FLOWPOOL_KEY_NAME_PREFIX_SET_LEVEL = 'flow:pool:level:item:'
  781. # 流量池各层分发概率权重存放 redis key,完整格式 flow:pool:level:
  782. FLOWPOOL_LEVEL_WEIGHT_KEY_NAME = 'flow:pool:level:recommend:weight'
  783. # 流量池视频分层存放(按分数排序) redis key前缀,完整格式 flow:pool:level:item:score:{appType}:{level}
  784. FLOWPOOL_KEY_NAME_PREFIX_SET_LEVEL_SCORE = 'flow:pool:level:item:score:'
  785. # 快速曝光流量池数据存放 redis key前缀,完整格式 flow:pool:quick:item:{appType}:{flowPool_id}
  786. QUICK_FLOWPOOL_KEY_NAME_PREFIX_SET = 'flow:pool:quick:item:'
  787. # 快速曝光流量池分发概率 redis key前缀,完整格式 flow:pool:quick:distribute:rate:{flowPool_id}
  788. QUICK_FLOWPOOL_DISTRIBUTE_RATE_KEY_NAME_PREFIX = 'flow:pool:quick:distribute:rate:'
  789. # 修改ROV的视频 redis key
  790. UPDATE_ROV_KEY_NAME = 'update:rov:item:score:applet'
  791. UPDATE_ROV_KEY_NAME_APP = 'update:rov:item:score:app'
  792. # 首页推荐预曝光列表redis key 前缀,完整key格式:previewed:videos:{appType}:{mid}
  793. PREVIEW_KEY_PREFIX = 'previewed:videos:'
  794. # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:recall:pool:last:rov:{appType}:{mid}:{date}
  795. LAST_VIDEO_FROM_ROV_POOL_PREFIX = 'recall:last:rov:'
  796. # # 用户上一次在天级规则更新列表中对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.{appType}.{mid}.{date}
  797. # LAST_VIDEO_FROM_RULE_DAY_POOL_PREFIX = 'com.weiqu.video.rule.day.pool.last.'
  798. # # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.pre.{appType}.{mid}.{date}
  799. # LAST_VIDEO_FROM_ROV_POOL_PRE_PREFIX = 'com.weiqu.video.rov.pool.last.pre.'
  800. # # 用户上一次在rov召回池对应的位置 redis key前缀,完整key格式:com.weiqu.video.rov.pool.last.now.{appType}.{mid}.{date}
  801. # LAST_VIDEO_FROM_ROV_POOL_NOW_PREFIX = 'com.weiqu.video.rov.pool.last.now.'
  802. # # 用户上一次在region dup更新列表中对应的位置 redis key前缀,完整key格式:com.weiqu.video.region.dup.last.{dup}.{appType}.{mid}.{date}
  803. # LAST_VIDEO_FROM_REGION_DUP_PREFIX = 'com.weiqu.video.region.dup.last.'
  804. # # 用户上一次在完整影视资源列表对应的位置 redis key前缀,完整key格式:com.weiqu.video.whole.movies.last.{appType}.{mid}.{date}
  805. # LAST_VIDEO_FROM_WHOLE_MOVIES_PREFIX = 'com.weiqu.video.whole.movies.last.'
  806. # 用户上一次在特殊视频列表对应的位置 redis key前缀,完整key格式:recall:pool:last:special:{appType}:{mid}:{date}
  807. LAST_VIDEO_FROM_SPECIAL_POOL_PREFIX = 'recall:last:special:'
  808. # 本地记录视频的可分发数,控制分发,完整key格式:flow:pool:local:distribute:count:{videoId}:{flowPool}
  809. LOCAL_DISTRIBUTE_COUNT_PREFIX = 'flow:pool:local:distribute:count:'
  810. # 从ROV召回池获取视频的最大频次,限制每次请求的获取次数
  811. MAX_FREQ_FROM_ROV_POOL = 2
  812. # 从流量池获取视频的最大频次,限制每次请求的获取次数
  813. MAX_FREQ_FROM_FLOW_POOL = 1
  814. # 从流量池获取视频的最大频次,限制每次请求的获取次数 appType:[18, 19]
  815. MAX_FREQ_FROM_FLOW_POOL_18_19 = 3
  816. # 兜底视频redis存储key
  817. BOTTOM_KEY_NAME = 'bottom:videos'
  818. # 兜底视频redis存储key-方案2:采用流量池视频作为兜底视频
  819. BOTTOM2_KEY_NAME = 'bottom2:videos'
  820. # 生效中的置顶视频列表 redis key
  821. TOP_VIDEO_LIST_KEY_NAME = 'top:item:score:area:applet'
  822. TOP_VIDEO_LIST_KEY_NAME_APP = 'top:item:score:area:app'
  823. # # 按位置排序redis存储key
  824. # RECALL_POSITION1_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.1'
  825. # RECALL_POSITION2_KEY_NAME = 'com.weiqu.video.recall.hot.apptype.h.item.score.position.2'
  826. # # rov召回池更新时间
  827. # ROV_UPDATE_H = 6
  828. # ROV_UPDATE_MINUTE = 30
  829. #
  830. # # 小时级召回池更新时间 每个小时的15分更新成功
  831. # ROV_H_UPDATE_MINUTE = 25
  832. #
  833. # # 地域分组小时级召回池更新时间
  834. # REGION_H_UPDATE_MINUTE = 30
  835. #
  836. # # 天级规则更新列表更新时间 00:30更新成功
  837. # ROV_DAY_UPDATE_MINUTE = 0
  838. # 置顶视频区域 为 全部 的code
  839. ALL_AREA_CODE = '000000'
  840. # # width : height > 1 的视频列表 redis key, zset存储,value为videoId,score为w_h_rate
  841. # W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME = {
  842. # 'rov_recall': 'com.weiqu.video.rov.w.h.rate.1.item', # rov召回池视频
  843. # 'bottom_last': 'com.weiqu.video.bottom.last.w.h.rate.1.item' # 二次兜底视频
  844. # }
  845. # 头部视频对应运营强插的相关视频 redis 存储 key 前缀, 完整key格式:com.weiqu.video.relevant.videos.item.{videoId}
  846. RELEVANT_VIDEOS_WITH_OP_KEY_NAME = 'com.weiqu.video.relevant.videos.item.'
  847. # 最惊奇电影类视频相关推荐列表存放 redis key前缀,完整格式: com.weiqu.movie.relevant.list.item.{videoId}
  848. MOVIE_RELEVANT_LIST_KEY_NAME_PREFIX = 'com.weiqu.movie.relevant.list.item.'
  849. # 完整影视资源更新结果存放 redis key 前缀,完整格式:'com.weiqu.video.recall.whole.movies.item.{date}.{h}'
  850. RECALL_KEY_NAME_PREFIX_WHOLE_MOVIES = 'com.weiqu.video.recall.whole.movies.item.'
  851. # 特殊mid更新结果存放 redis key ,完整格式:'special:mid'
  852. KEY_NAME_SPECIAL_MID = 'special:mid'
  853. # 特殊mid对应指定视频列表更新结果存放 redis key 前缀,完整格式:'special:videos:item:{date}'
  854. KEY_NAME_PREFIX_SPECIAL_VIDEOS = 'special:videos:item:'
  855. # 限流视频集合存放 redis key前缀,完整格式:'limit:videos:{date}'
  856. KEY_NAME_PREFIX_LIMIT_VIDEO_SET = 'limit:videos:'
  857. # 限流视频分发数记录 redis key前缀,完整格式:'limit:video:distribute:count:{videoId}'
  858. KEY_NAME_PREFIX_LIMIT_VIDEO_DISTRIBUTE_COUNT = 'limit:video:distribute:count:'
  859. # 用户近30天是否有回流状态 存放 redis key 前缀,完整格式:'user:has30day:return:{mid}'
  860. KEY_NAME_PREFIX_USER_HAS30DAY_RETURN = 'user:has30day:return:'
  861. # 宗教用户列表更新结果存放 redis key 前缀
  862. KEY_NAME_PREFIX_RELIGION_USER = {
  863. # 天主教,完整格式:'religion:catholicism:users:item:{hash_tag}:{date}'
  864. 'catholicism': 'religion:catholicism:users:item:',
  865. # 基督教,完整格式:'religion:christianity:users:item:{hash_tag}:{date}'
  866. 'christianity': 'religion:christianity:users:item:',
  867. }
  868. # 视频数据表类型 - 管理后台算法视频列表可视化
  869. VIDEO_DATA_LIST_MAPPING = {
  870. 0: {
  871. "dataListDesc": "全部", "dataListCode": 0,
  872. "keyPrefixList": [
  873. {"dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_30DAY},
  874. {"dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
  875. {"dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
  876. {"dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
  877. {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
  878. # {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
  879. # {"dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
  880. # {"dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
  881. ]
  882. },
  883. 1: {"dataListDesc": "相对30天数据列表", "dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_30DAY},
  884. 2: {"dataListDesc": "地域小时级", "dataListCode": 2, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
  885. 3: {"dataListDesc": "地域相对24小时级", "dataListCode": 3, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H},
  886. 4: {"dataListDesc": "非地域相对24小时级", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H},
  887. 5: {"dataListDesc": "非地域相对24小时级列表2", "dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
  888. # 5: {"dataListDesc": "非地域相对48小时级", "dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
  889. # 6: {"dataListDesc": "非地域相对48小时级列表2", "dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
  890. # 7: {"dataListDesc": "大列表", "dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
  891. }
  892. # 调用后端接口过滤参数配置 1-已观看 2-视频状态 3-是否进入老年人社区 4-话题状态 5-推荐状态 6-白名单过滤 7-涉政视频过滤
  893. FILTER_VIEWED_TYPES_CONFIG = {
  894. APP_TYPE['VLOG']: (1, 6,), # vlog
  895. APP_TYPE['LOVE_LIVE']: (1, 6,), # 票圈视频
  896. APP_TYPE['APP']: (1,), # 票圈视频APP
  897. 'other': (1, 6, 7,), # 其他
  898. }
  899. # 召回池分发视频在流量池中存在,该视频是否进行本地分发数-1 开关,1-开/0-关
  900. IN_FLOW_POOL_COUNT_SWITCH_KEY_NAME = 'recall:videos:in:flow:pool:count:switch'
  901. # 流量池videoId redis key前缀,完整格式 flow:pool:video:ids:{appType}
  902. FLOWPOOL_VIDEO_ID_KEY_NAME_PREFIX = 'flow:pool:video:ids:'
  903. # 快速曝光流量池videoId redis key前缀,完整格式 flow:pool:quick:video:ids:{appType}:{flowPool_id}
  904. QUICK_FLOWPOOL_VIDEO_ID_KEY_NAME_PREFIX = 'flow:pool:quick:video:ids:'
  905. # 流量池视频标记flowPool redis key前缀,完整格式 flow:pool:video:{appType}:{videoId}
  906. FLOWPOOL_VIDEO_INFO_KEY_NAME_PREFIX = 'flow:pool:video:'
  907. # 快速曝光流量池视频标记flowPool redis key前缀,完整格式 flow:pool:quick:video:{appType}:{flowPool_id}:{videoId}
  908. QUICK_FLOWPOOL_VIDEO_INFO_KEY_NAME_PREFIX = 'flow:pool:quick:video:'
  909. # 免广告用户组列表
  910. NO_AD_MID_GROUP_LIST = {
  911. 'class1': ['return25_nmids'],
  912. 'class2': ['return30_nmids'],
  913. 'class3': ['return25_nmids', 'return9_24mids'],
  914. }
  915. # 广告模型abtest配置
  916. AD_ABTEST_CONFIG = {
  917. # 票圈vlog
  918. # '173-a': {
  919. # 'video': {'data': 'data1'},
  920. # 'user': {'data': 'user0', 'rule': 'rule1'},
  921. # 'group_class_key': 'class1',
  922. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  923. # },
  924. # '173-b': {
  925. # 'video': {'data': 'data1'},
  926. # 'user': {'data': 'user0', 'rule': 'rule2'},
  927. # 'group_class_key': 'class1',
  928. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  929. # }, # 调整未分组用户的阈值(去除不出广告的用户组)
  930. # '173-c': {
  931. # 'video': {'data': 'data1'},
  932. # 'user': {'data': 'user0', 'rule': 'rule3'},
  933. # 'group_class_key': 'class2',
  934. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class2']
  935. # }, # 细化分组 return25_29, return30+, 且return30+ 不出广告
  936. # '173-d': {
  937. # 'video': {'data': 'data1:7days'},
  938. # 'user': {'data': 'user0', 'rule': 'rule1'},
  939. # 'group_class_key': 'class1',
  940. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  941. # }, # 视频使用7天内有曝光的
  942. # '173-e': {
  943. # 'video': {'data': 'data1'},
  944. # 'user': {'data': 'user0', 'rule': 'rule2'},
  945. # 'group_class_key': 'class1',
  946. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  947. # 'care_model_status_param': 2,
  948. # 'care_model_ab_mid_group': ['mean_group'],
  949. # }, # 开启关怀模式人群多出广告
  950. # '173-f': {
  951. # 'video': {'data': 'data1'},
  952. # 'user': {'data': 'user0', 'rule': 'rule2'},
  953. # 'group_class_key': 'class1',
  954. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  955. # 'care_model_status_param': 1,
  956. # 'care_model_ab_mid_group': ['mean_group'],
  957. # }, # 未开启关怀模式人群多出广告
  958. # '173-g': {
  959. # 'video': {'data': 'data1:7days'},
  960. # 'user': {'data': 'user0', 'rule': 'rule2'},
  961. # 'group_class_key': 'class1',
  962. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  963. # }, # 调整未分组用户的阈值(去除不出广告的用户组) + 视频使用7天内有曝光的
  964. # '173-h': {
  965. # 'video': {'data': 'data1'},
  966. # 'user': {'data': 'user0', 'rule': 'rule2'},
  967. # 'group_class_key': 'class1',
  968. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  969. # }, # else人群多出广告,阈值比例参数:0.8
  970. # '173-i': {
  971. # 'video': {'data': 'data1'},
  972. # 'user': {'data': 'user0', 'rule': 'rule2'},
  973. # 'group_class_key': 'class1',
  974. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  975. # }, # else人群多出广告,阈值比例参数:0.9
  976. '173-j': {
  977. 'video': {'data': 'videos0'},
  978. 'user': {'data': 'user0', 'rule': 'rule2'},
  979. 'group_class_key': 'class1',
  980. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  981. 'care_model_status_param': 1,
  982. 'care_model_ab_mid_group': ['mean_group'],
  983. }, # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告
  984. # '173-k': {
  985. # 'video': {'data': 'videos0:adtype1'},
  986. # 'user': {'data': 'user0', 'rule': 'rule2'},
  987. # 'group_class_key': 'class1',
  988. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  989. # 'care_model_status_param': 1,
  990. # 'care_model_ab_mid_group': ['mean_group'],
  991. # }, # else未开启关怀模式人群多出广告 + 模板插屏类型广告视频数据
  992. '173-l': {
  993. 'video': {'data': 'videos0'},
  994. 'user': {'data': 'user0', 'rule': 'rule2'},
  995. 'group_class_key': 'class1',
  996. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  997. 'care_model_status_param': 1,
  998. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  999. }, # 所有广告类型数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告
  1000. # '173-m': {
  1001. # 'video': {'data': 'videos0new'},
  1002. # 'user': {'data': 'user0new', 'rule': 'rule2'},
  1003. # 'group_class_key': 'class1',
  1004. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1005. # 'care_model_status_param': 1,
  1006. # 'care_model_ab_mid_group': ['mean_group'],
  1007. # }, # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告 + 调整计算公式(标准贝叶斯公式)
  1008. '173-n': {
  1009. 'video': {'data': 'videos0out'},
  1010. 'user': {'data': 'user0out', 'rule': 'rule2'},
  1011. 'group_class_key': 'class1',
  1012. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1013. 'care_model_status_param': 1,
  1014. 'care_model_ab_mid_group': ['mean_group'],
  1015. }, # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1016. '173-o': {
  1017. 'video': {'data': 'videos0out'},
  1018. 'user': {'data': 'user0out', 'rule': 'rule2'},
  1019. 'group_class_key': 'class1',
  1020. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1021. 'care_model_status_param': 1,
  1022. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1023. }, # 所有广告类型数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1024. '173-p': {
  1025. 'share': {'video': {'data': 'videos0'}, 'user': {'data': 'user0', 'rule': 'rule2'}},
  1026. 'out': {'video': {'data': 'videos0out'}, 'user': {'data': 'user0out', 'rule': 'rule2'}},
  1027. 'group_class_key': 'class1',
  1028. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1029. 'care_model_status_param': 1,
  1030. 'care_model_ab_mid_group': ['mean_group'],
  1031. 'threshold_mix_func': 'add',
  1032. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1033. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1034. '173-q': {
  1035. 'share': {'video': {'data': 'videos0'}, 'user': {'data': 'user0', 'rule': 'rule2'}},
  1036. 'out': {'video': {'data': 'videos0out'}, 'user': {'data': 'user0out', 'rule': 'rule2'}},
  1037. 'group_class_key': 'class1',
  1038. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1039. 'care_model_status_param': 1,
  1040. 'care_model_ab_mid_group': ['mean_group'],
  1041. 'threshold_mix_func': 'multiply',
  1042. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1043. '173-r': {
  1044. 'share': {'video': {'data': 'videos0new'}, 'user': {'data': 'user0new', 'rule': 'rule2'}},
  1045. 'out': {'video': {'data': 'videos0out'}, 'user': {'data': 'user0out', 'rule': 'rule2'}},
  1046. 'group_class_key': 'class1',
  1047. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1048. 'care_model_status_param': 1,
  1049. 'care_model_ab_mid_group': ['mean_group'],
  1050. 'threshold_mix_func': 'multiply',
  1051. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案三(乘积融合: p(不直接跳出|出广告) * p(分享|出广告), 标准贝叶斯公式)
  1052. '173-s': {
  1053. 'video': {'data': 'videos0out'},
  1054. 'user': {'data': 'user0out', 'rule': 'rule3'},
  1055. 'group_class_key': 'class1',
  1056. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class3'],
  1057. 'care_model_status_param': 1,
  1058. 'care_model_ab_mid_group': ['mean_group'],
  1059. }, # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据 + ['return25_nmids', 'return9_24mids']用户不出广告
  1060. # 票圈视频+
  1061. # '190-a': {
  1062. # 'video': {'data': 'data1'},
  1063. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1064. # 'group_class_key': 'class1',
  1065. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1066. # },
  1067. # '190-b': {
  1068. # 'video': {'data': 'data1'},
  1069. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1070. # 'group_class_key': 'class1',
  1071. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1072. # },
  1073. # '190-c': {
  1074. # 'video': {'data': 'data21'},
  1075. # 'user': {'data': 'user21', 'rule': 'rule1'},
  1076. # 'group_class_key': 'class1',
  1077. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1078. # },
  1079. # '190-d': {
  1080. # 'video': {'data': 'data21'},
  1081. # 'user': {'data': 'user21', 'rule': 'rule2'},
  1082. # 'group_class_key': 'class1',
  1083. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1084. # },
  1085. # '190-e': {
  1086. # 'video': {'data': 'videos21'},
  1087. # 'user': {'data': 'user21', 'rule': 'rule2'},
  1088. # 'group_class_key': 'class1',
  1089. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1090. # }, # 所有广告类型本端视频数据 + 优化1
  1091. '190-f': {
  1092. 'video': {'data': 'videos21'},
  1093. 'user': {'data': 'user21', 'rule': 'rule2'},
  1094. 'group_class_key': 'class1',
  1095. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1096. 'care_model_status_param': 1,
  1097. 'care_model_ab_mid_group': ['mean_group'],
  1098. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + 未开启关怀模式人群多出广告
  1099. '190-g': {
  1100. 'video': {'data': 'videos21out'},
  1101. 'user': {'data': 'user21out', 'rule': 'rule2'},
  1102. 'group_class_key': 'class1',
  1103. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1104. 'care_model_status_param': 1,
  1105. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1106. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1107. '190-h': {
  1108. 'video': {'data': 'videos21out'},
  1109. 'user': {'data': 'user21out', 'rule': 'rule2'},
  1110. 'group_class_key': 'class1',
  1111. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1112. 'care_model_status_param': 1,
  1113. 'care_model_ab_mid_group': ['mean_group'],
  1114. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1115. '190-i': {
  1116. 'share': {'video': {'data': 'videos21'}, 'user': {'data': 'user21', 'rule': 'rule2'}},
  1117. 'out': {'video': {'data': 'videos21out'}, 'user': {'data': 'user21out', 'rule': 'rule2'}},
  1118. 'group_class_key': 'class1',
  1119. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1120. 'care_model_status_param': 1,
  1121. 'care_model_ab_mid_group': ['mean_group'],
  1122. 'threshold_mix_func': 'add',
  1123. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1124. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1125. '190-j': {
  1126. 'share': {'video': {'data': 'videos21'}, 'user': {'data': 'user21', 'rule': 'rule2'}},
  1127. 'out': {'video': {'data': 'videos21out'}, 'user': {'data': 'user21out', 'rule': 'rule2'}},
  1128. 'group_class_key': 'class1',
  1129. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1130. 'care_model_status_param': 1,
  1131. 'care_model_ab_mid_group': ['mean_group'],
  1132. 'threshold_mix_func': 'multiply',
  1133. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1134. # 票圈视频
  1135. # '194-a': {
  1136. # 'video': {'data': 'data1'},
  1137. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1138. # 'group_class_key': 'class1',
  1139. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1140. # },
  1141. # '194-b': {
  1142. # 'video': {'data': 'data1'},
  1143. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1144. # 'group_class_key': 'class1',
  1145. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1146. # }, # 调整未分组用户的阈值(去除不出广告的用户组)
  1147. # '194-c': {
  1148. # 'video': {'data': 'data2'},
  1149. # 'user': {'data': 'user4', 'rule': 'rule1'},
  1150. # 'group_class_key': 'class1',
  1151. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1152. # }, # 本端数据
  1153. # '194-d': {
  1154. # 'video': {'data': 'data2'},
  1155. # 'user': {'data': 'user4', 'rule': 'rule2'},
  1156. # 'group_class_key': 'class1',
  1157. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1158. # }, # 本端数据 + 优化阈值计算方式
  1159. # '194-e': {
  1160. # 'video': {'data': 'videos4'},
  1161. # 'user': {'data': 'user4', 'rule': 'rule2'},
  1162. # 'group_class_key': 'class1',
  1163. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1164. # }, # 所有广告类型本端数据 + 优化阈值计算方式
  1165. # '194-f': {
  1166. # 'video': {'data': 'videos4:adtype1'},
  1167. # 'user': {'data': 'user4', 'rule': 'rule2'},
  1168. # 'group_class_key': 'class1',
  1169. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1170. # }, # 模板插屏广告视频本端数据 + 优化阈值计算方式
  1171. '194-g': {
  1172. 'video': {'data': 'videos4'},
  1173. 'user': {'data': 'user4', 'rule': 'rule2'},
  1174. 'group_class_key': 'class1',
  1175. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1176. 'care_model_status_param': 1,
  1177. 'care_model_ab_mid_group': ['mean_group'],
  1178. }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1179. # '194-h': {
  1180. # 'video': {'data': 'videos4new'},
  1181. # 'user': {'data': 'user4new', 'rule': 'rule2'},
  1182. # 'group_class_key': 'class1',
  1183. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1184. # 'care_model_status_param': 1,
  1185. # 'care_model_ab_mid_group': ['mean_group'],
  1186. # }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 调整计算公式
  1187. '194-i': {
  1188. 'video': {'data': 'videos4out'},
  1189. 'user': {'data': 'user4out', 'rule': 'rule2'},
  1190. 'group_class_key': 'class1',
  1191. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1192. 'care_model_status_param': 1,
  1193. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1194. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1195. '194-j': {
  1196. 'video': {'data': 'videos4out'},
  1197. 'user': {'data': 'user4out', 'rule': 'rule2'},
  1198. 'group_class_key': 'class1',
  1199. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1200. 'care_model_status_param': 1,
  1201. 'care_model_ab_mid_group': ['mean_group'],
  1202. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1203. '194-k': {
  1204. 'share': {'video': {'data': 'videos4'}, 'user': {'data': 'user4', 'rule': 'rule2'}},
  1205. 'out': {'video': {'data': 'videos4out'}, 'user': {'data': 'user4out', 'rule': 'rule2'}},
  1206. 'group_class_key': 'class1',
  1207. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1208. 'care_model_status_param': 1,
  1209. 'care_model_ab_mid_group': ['mean_group'],
  1210. 'threshold_mix_func': 'add',
  1211. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1212. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1213. '194-l': {
  1214. 'share': {'video': {'data': 'videos4'}, 'user': {'data': 'user4', 'rule': 'rule2'}},
  1215. 'out': {'video': {'data': 'videos4out'}, 'user': {'data': 'user4out', 'rule': 'rule2'}},
  1216. 'group_class_key': 'class1',
  1217. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1218. 'care_model_status_param': 1,
  1219. 'care_model_ab_mid_group': ['mean_group'],
  1220. 'threshold_mix_func': 'multiply',
  1221. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1222. '194-m': {
  1223. 'share': {'video': {'data': 'videos4new'}, 'user': {'data': 'user4new', 'rule': 'rule2'}},
  1224. 'out': {'video': {'data': 'videos4out'}, 'user': {'data': 'user4out', 'rule': 'rule2'}},
  1225. 'group_class_key': 'class1',
  1226. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1227. 'care_model_status_param': 1,
  1228. 'care_model_ab_mid_group': ['mean_group'],
  1229. 'threshold_mix_func': 'multiply',
  1230. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案三(乘积融合: p(不直接跳出|出广告) * p(分享|出广告), 标准贝叶斯公式)
  1231. # 内容精选
  1232. # '195-a': {
  1233. # 'video': {'data': 'data1'},
  1234. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1235. # 'group_class_key': 'class1',
  1236. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1237. # },
  1238. # '195-b': {
  1239. # 'video': {'data': 'data1'},
  1240. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1241. # 'group_class_key': 'class1',
  1242. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1243. # }, # 调整未分组用户的阈值(去除不出广告的用户组)
  1244. # '195-c': {
  1245. # 'video': {'data': 'data3'},
  1246. # 'user': {'data': 'user5', 'rule': 'rule1'},
  1247. # 'group_class_key': 'class1',
  1248. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1249. # }, # 本端数据
  1250. # '195-d': {
  1251. # 'video': {'data': 'data3'},
  1252. # 'user': {'data': 'user5', 'rule': 'rule2'},
  1253. # 'group_class_key': 'class1',
  1254. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1255. # }, # 本端数据 + 优化阈值计算方式
  1256. # '195-e': {
  1257. # 'video': {'data': 'videos5'},
  1258. # 'user': {'data': 'user5', 'rule': 'rule2'},
  1259. # 'group_class_key': 'class1',
  1260. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1261. # }, # 所有广告类型本端数据 + 优化阈值计算方式
  1262. '195-f': {
  1263. 'video': {'data': 'videos5'},
  1264. 'user': {'data': 'user5', 'rule': 'rule2'},
  1265. 'group_class_key': 'class1',
  1266. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1267. 'care_model_status_param': 1,
  1268. 'care_model_ab_mid_group': ['mean_group'],
  1269. }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1270. # '195-g': {
  1271. # 'video': {'data': 'videos5new'},
  1272. # 'user': {'data': 'user5new', 'rule': 'rule2'},
  1273. # 'group_class_key': 'class1',
  1274. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1275. # 'care_model_status_param': 1,
  1276. # 'care_model_ab_mid_group': ['mean_group'],
  1277. # }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 调整计算公式
  1278. '195-h': {
  1279. 'video': {'data': 'videos5out'},
  1280. 'user': {'data': 'user5out', 'rule': 'rule2'},
  1281. 'group_class_key': 'class1',
  1282. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1283. 'care_model_status_param': 1,
  1284. 'care_model_ab_mid_group': ['mean_group'],
  1285. }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1286. '195-i': {
  1287. 'video': {'data': 'videos5out'},
  1288. 'user': {'data': 'user5out', 'rule': 'rule2'},
  1289. 'group_class_key': 'class1',
  1290. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1291. 'care_model_status_param': 1,
  1292. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1293. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1294. '195-j': {
  1295. 'share': {'video': {'data': 'videos5'}, 'user': {'data': 'user5', 'rule': 'rule2'}},
  1296. 'out': {'video': {'data': 'videos5out'}, 'user': {'data': 'user5out', 'rule': 'rule2'}},
  1297. 'group_class_key': 'class1',
  1298. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1299. 'care_model_status_param': 1,
  1300. 'care_model_ab_mid_group': ['mean_group'],
  1301. 'threshold_mix_func': 'add',
  1302. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1303. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1304. '195-k': {
  1305. 'share': {'video': {'data': 'videos5'}, 'user': {'data': 'user5', 'rule': 'rule2'}},
  1306. 'out': {'video': {'data': 'videos5out'}, 'user': {'data': 'user5out', 'rule': 'rule2'}},
  1307. 'group_class_key': 'class1',
  1308. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1309. 'care_model_status_param': 1,
  1310. 'care_model_ab_mid_group': ['mean_group'],
  1311. 'threshold_mix_func': 'multiply',
  1312. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1313. '195-l': {
  1314. 'share': {'video': {'data': 'videos5new'}, 'user': {'data': 'user5new', 'rule': 'rule2'}},
  1315. 'out': {'video': {'data': 'videos5out'}, 'user': {'data': 'user5out', 'rule': 'rule2'}},
  1316. 'group_class_key': 'class1',
  1317. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1318. 'care_model_status_param': 1,
  1319. 'care_model_ab_mid_group': ['mean_group'],
  1320. 'threshold_mix_func': 'multiply',
  1321. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案三(乘积融合: p(不直接跳出|出广告) * p(分享|出广告), 标准贝叶斯公式)
  1322. # 票圈短视频
  1323. # '196-a': {
  1324. # 'video': {'data': 'data1'},
  1325. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1326. # 'group_class_key': 'class1',
  1327. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1328. # },
  1329. # '196-b': {
  1330. # 'video': {'data': 'data4'},
  1331. # 'user': {'data': 'user6', 'rule': 'rule1'},
  1332. # 'group_class_key': 'class1',
  1333. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1334. # },
  1335. # '196-c': {
  1336. # 'video': {'data': 'data4'},
  1337. # 'user': {'data': 'user6', 'rule': 'rule3'},
  1338. # 'group_class_key': 'class2',
  1339. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class2']
  1340. # }, # 本端数据 + 优化阈值计算方式 + 优化2
  1341. # '196-d': {
  1342. # 'video': {'data': 'data4:7days'},
  1343. # 'user': {'data': 'user6', 'rule': 'rule3'},
  1344. # 'group_class_key': 'class2',
  1345. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class2']
  1346. # }, # 本端数据 + 优化阈值计算方式 + 优化2 + 优化4
  1347. # '196-e': {
  1348. # 'video': {'data': 'videos6'},
  1349. # 'user': {'data': 'user6', 'rule': 'rule1'},
  1350. # 'group_class_key': 'class1',
  1351. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1352. # }, # 所有广告类型本端数据
  1353. '196-f': {
  1354. 'video': {'data': 'videos6'},
  1355. 'user': {'data': 'user6', 'rule': 'rule1'},
  1356. 'group_class_key': 'class1',
  1357. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1358. 'care_model_status_param': 1,
  1359. 'care_model_ab_mid_group': ['mean_group'],
  1360. }, # 所有广告类型本端数据 + else非关怀模式人群多出广告
  1361. '196-g': {
  1362. 'video': {'data': 'videos6out'},
  1363. 'user': {'data': 'user6out', 'rule': 'rule2'},
  1364. 'group_class_key': 'class1',
  1365. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1366. 'care_model_status_param': 1,
  1367. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1368. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1369. '196-h': {
  1370. 'video': {'data': 'videos6out'},
  1371. 'user': {'data': 'user6out', 'rule': 'rule2'},
  1372. 'group_class_key': 'class1',
  1373. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1374. 'care_model_status_param': 1,
  1375. 'care_model_ab_mid_group': ['mean_group'],
  1376. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1377. '196-i': {
  1378. 'share': {'video': {'data': 'videos6'}, 'user': {'data': 'user6', 'rule': 'rule2'}},
  1379. 'out': {'video': {'data': 'videos6out'}, 'user': {'data': 'user6out', 'rule': 'rule2'}},
  1380. 'group_class_key': 'class1',
  1381. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1382. 'care_model_status_param': 1,
  1383. 'care_model_ab_mid_group': ['mean_group'],
  1384. 'threshold_mix_func': 'add',
  1385. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1386. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1387. '196-j': {
  1388. 'share': {'video': {'data': 'videos6'}, 'user': {'data': 'user6', 'rule': 'rule2'}},
  1389. 'out': {'video': {'data': 'videos6out'}, 'user': {'data': 'user6out', 'rule': 'rule2'}},
  1390. 'group_class_key': 'class1',
  1391. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1392. 'care_model_status_param': 1,
  1393. 'care_model_ab_mid_group': ['mean_group'],
  1394. 'threshold_mix_func': 'multiply',
  1395. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1396. # 老好看视频
  1397. # '197-a': {
  1398. # 'video': {'data': 'data1'},
  1399. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1400. # 'group_class_key': 'class1',
  1401. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1402. # },
  1403. # '197-b': {
  1404. # 'video': {'data': 'data1'},
  1405. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1406. # 'group_class_key': 'class1',
  1407. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1408. # }, # 优化阈值计算方式 调整未分组用户的阈值(去除不出广告的用户组)
  1409. # '197-c': {
  1410. # 'video': {'data': 'data5'},
  1411. # 'user': {'data': 'user18', 'rule': 'rule2'},
  1412. # 'group_class_key': 'class1',
  1413. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1414. # }, # 本端数据 + 优化阈值计算方式
  1415. # '197-d': {
  1416. # 'video': {'data': 'data5:7days'},
  1417. # 'user': {'data': 'user18', 'rule': 'rule2'},
  1418. # 'group_class_key': 'class1',
  1419. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1420. # }, # 本端数据 + 优化阈值计算方式 + 优化4
  1421. # '197-e': {
  1422. # 'video': {'data': 'videos18'},
  1423. # 'user': {'data': 'user18', 'rule': 'rule2'},
  1424. # 'group_class_key': 'class1',
  1425. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1426. # }, # 所有广告类型本端数据 + 优化阈值计算方式
  1427. '197-f': {
  1428. 'video': {'data': 'data5'},
  1429. 'user': {'data': 'user18', 'rule': 'rule2'},
  1430. 'group_class_key': 'class1',
  1431. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1432. 'care_model_status_param': 1,
  1433. 'care_model_ab_mid_group': ['mean_group'],
  1434. }, # 本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1435. '197-g': {
  1436. 'video': {'data': 'videos18out'},
  1437. 'user': {'data': 'user18out', 'rule': 'rule2'},
  1438. 'group_class_key': 'class1',
  1439. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1440. 'care_model_status_param': 1,
  1441. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1442. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1443. '197-h': {
  1444. 'video': {'data': 'videos18out'},
  1445. 'user': {'data': 'user18out', 'rule': 'rule2'},
  1446. 'group_class_key': 'class1',
  1447. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1448. 'care_model_status_param': 1,
  1449. 'care_model_ab_mid_group': ['mean_group'],
  1450. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1451. '197-i': {
  1452. 'share': {'video': {'data': 'videos18'}, 'user': {'data': 'user18', 'rule': 'rule2'}},
  1453. 'out': {'video': {'data': 'videos18out'}, 'user': {'data': 'user18out', 'rule': 'rule2'}},
  1454. 'group_class_key': 'class1',
  1455. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1456. 'care_model_status_param': 1,
  1457. 'care_model_ab_mid_group': ['mean_group'],
  1458. 'threshold_mix_func': 'add',
  1459. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1460. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1461. '197-j': {
  1462. 'share': {'video': {'data': 'videos18'}, 'user': {'data': 'user18', 'rule': 'rule2'}},
  1463. 'out': {'video': {'data': 'videos18out'}, 'user': {'data': 'user18out', 'rule': 'rule2'}},
  1464. 'group_class_key': 'class1',
  1465. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1466. 'care_model_status_param': 1,
  1467. 'care_model_ab_mid_group': ['mean_group'],
  1468. 'threshold_mix_func': 'multiply',
  1469. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1470. # 票圈最惊奇
  1471. # '198-a': {
  1472. # 'video': {'data': 'data1'},
  1473. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1474. # 'group_class_key': 'class1',
  1475. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1476. # },
  1477. # '198-b': {
  1478. # 'video': {'data': 'data6'},
  1479. # 'user': {'data': 'user19', 'rule': 'rule1'},
  1480. # 'group_class_key': 'class1',
  1481. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1482. # }, # 本端数据
  1483. # '198-c': {
  1484. # 'video': {'data': 'data1'},
  1485. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1486. # 'group_class_key': 'class1',
  1487. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1488. # }, # 优化阈值计算方式
  1489. # '198-d': {
  1490. # 'video': {'data': 'data6'},
  1491. # 'user': {'data': 'user19', 'rule': 'rule2'},
  1492. # 'group_class_key': 'class1',
  1493. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1494. # }, # 本端数据 + 优化阈值计算方式
  1495. # '198-e': {
  1496. # 'video': {'data': 'videos19'},
  1497. # 'user': {'data': 'user19', 'rule': 'rule2'},
  1498. # 'group_class_key': 'class1',
  1499. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1500. # }, # 所有广告类型本端数据 + 优化阈值计算方式
  1501. '198-f': {
  1502. 'video': {'data': 'videos19'},
  1503. 'user': {'data': 'user19', 'rule': 'rule2'},
  1504. 'group_class_key': 'class1',
  1505. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1506. 'care_model_status_param': 1,
  1507. 'care_model_ab_mid_group': ['mean_group'],
  1508. }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1509. '198-g': {
  1510. 'video': {'data': 'videos19out'},
  1511. 'user': {'data': 'user19out', 'rule': 'rule2'},
  1512. 'group_class_key': 'class1',
  1513. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1514. 'care_model_status_param': 1,
  1515. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1516. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1517. '198-h': {
  1518. 'video': {'data': 'videos19out'},
  1519. 'user': {'data': 'user19out', 'rule': 'rule2'},
  1520. 'group_class_key': 'class1',
  1521. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1522. 'care_model_status_param': 1,
  1523. 'care_model_ab_mid_group': ['mean_group'],
  1524. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1525. '198-i': {
  1526. 'share': {'video': {'data': 'videos19'}, 'user': {'data': 'user19', 'rule': 'rule2'}},
  1527. 'out': {'video': {'data': 'videos19out'}, 'user': {'data': 'user19out', 'rule': 'rule2'}},
  1528. 'group_class_key': 'class1',
  1529. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1530. 'care_model_status_param': 1,
  1531. 'care_model_ab_mid_group': ['mean_group'],
  1532. 'threshold_mix_func': 'add',
  1533. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1534. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1535. '198-j': {
  1536. 'share': {'video': {'data': 'videos19'}, 'user': {'data': 'user19', 'rule': 'rule2'}},
  1537. 'out': {'video': {'data': 'videos19out'}, 'user': {'data': 'user19out', 'rule': 'rule2'}},
  1538. 'group_class_key': 'class1',
  1539. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1540. 'care_model_status_param': 1,
  1541. 'care_model_ab_mid_group': ['mean_group'],
  1542. 'threshold_mix_func': 'multiply',
  1543. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1544. # 票圈足迹
  1545. # '242-a': {
  1546. # 'video': {'data': 'data1'},
  1547. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1548. # 'group_class_key': 'class1',
  1549. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1550. # }, # vlog数据
  1551. # '242-b': {
  1552. # 'video': {'data': 'data1'},
  1553. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1554. # 'group_class_key': 'class1',
  1555. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1556. # }, # vlog数据 + 优化阈值计算方式
  1557. # '242-c': {
  1558. # 'video': {'data': 'videos22'},
  1559. # 'user': {'data': 'user22', 'rule': 'rule2'},
  1560. # 'group_class_key': 'class1',
  1561. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1562. # }, # 所有广告类型本端数据 + 优化阈值计算方式
  1563. '242-d': {
  1564. 'video': {'data': 'videos22'},
  1565. 'user': {'data': 'user22', 'rule': 'rule2'},
  1566. 'group_class_key': 'class1',
  1567. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1568. 'care_model_status_param': 1,
  1569. 'care_model_ab_mid_group': ['mean_group'],
  1570. }, # 所有广告类型本端数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1571. '242-e': {
  1572. 'video': {'data': 'videos22out'},
  1573. 'user': {'data': 'user22out', 'rule': 'rule2'},
  1574. 'group_class_key': 'class1',
  1575. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1576. 'care_model_status_param': 1,
  1577. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1578. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1579. '242-f': {
  1580. 'video': {'data': 'videos22out'},
  1581. 'user': {'data': 'user22out', 'rule': 'rule2'},
  1582. 'group_class_key': 'class1',
  1583. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1584. 'care_model_status_param': 1,
  1585. 'care_model_ab_mid_group': ['mean_group'],
  1586. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1587. '242-g': {
  1588. 'share': {'video': {'data': 'videos22'}, 'user': {'data': 'user22', 'rule': 'rule2'}},
  1589. 'out': {'video': {'data': 'videos22out'}, 'user': {'data': 'user22out', 'rule': 'rule2'}},
  1590. 'group_class_key': 'class1',
  1591. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1592. 'care_model_status_param': 1,
  1593. 'care_model_ab_mid_group': ['mean_group'],
  1594. 'threshold_mix_func': 'add',
  1595. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1596. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1597. '242-h': {
  1598. 'share': {'video': {'data': 'videos22'}, 'user': {'data': 'user22', 'rule': 'rule2'}},
  1599. 'out': {'video': {'data': 'videos22out'}, 'user': {'data': 'user22out', 'rule': 'rule2'}},
  1600. 'group_class_key': 'class1',
  1601. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1602. 'care_model_status_param': 1,
  1603. 'care_model_ab_mid_group': ['mean_group'],
  1604. 'threshold_mix_func': 'multiply',
  1605. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1606. # 票圈福年
  1607. # '243-a': {
  1608. # 'video': {'data': 'data1'},
  1609. # 'user': {'data': 'user0', 'rule': 'rule1'},
  1610. # 'group_class_key': 'class1',
  1611. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1612. # }, # vlog数据
  1613. # '243-b': {
  1614. # 'video': {'data': 'data1'},
  1615. # 'user': {'data': 'user0', 'rule': 'rule2'},
  1616. # 'group_class_key': 'class1',
  1617. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1618. # }, # vlog数据 + 优化阈值计算方式
  1619. # '243-c': {
  1620. # 'video': {'data': 'videos3'},
  1621. # 'user': {'data': 'user3', 'rule': 'rule1'},
  1622. # 'group_class_key': 'class1',
  1623. # 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1']
  1624. # }, # 所有广告类型本端数据
  1625. '243-d': {
  1626. 'video': {'data': 'videos3'},
  1627. 'user': {'data': 'user3', 'rule': 'rule1'},
  1628. 'group_class_key': 'class1',
  1629. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1630. 'care_model_status_param': 1,
  1631. 'care_model_ab_mid_group': ['mean_group'],
  1632. }, # 所有广告类型本端数据 + else非关怀模式人群多出广告
  1633. '243-e': {
  1634. 'video': {'data': 'videos3out'},
  1635. 'user': {'data': 'user3out', 'rule': 'rule2'},
  1636. 'group_class_key': 'class1',
  1637. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1638. 'care_model_status_param': 1,
  1639. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1640. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1641. '243-f': {
  1642. 'video': {'data': 'videos3out'},
  1643. 'user': {'data': 'user3out', 'rule': 'rule2'},
  1644. 'group_class_key': 'class1',
  1645. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1646. 'care_model_status_param': 1,
  1647. 'care_model_ab_mid_group': ['mean_group'],
  1648. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1649. '243-g': {
  1650. 'share': {'video': {'data': 'videos3'}, 'user': {'data': 'user3', 'rule': 'rule2'}},
  1651. 'out': {'video': {'data': 'videos3out'}, 'user': {'data': 'user3out', 'rule': 'rule2'}},
  1652. 'group_class_key': 'class1',
  1653. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1654. 'care_model_status_param': 1,
  1655. 'care_model_ab_mid_group': ['mean_group'],
  1656. 'threshold_mix_func': 'add',
  1657. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1658. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1659. '243-h': {
  1660. 'share': {'video': {'data': 'videos3'}, 'user': {'data': 'user3', 'rule': 'rule2'}},
  1661. 'out': {'video': {'data': 'videos3out'}, 'user': {'data': 'user3out', 'rule': 'rule2'}},
  1662. 'group_class_key': 'class1',
  1663. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1664. 'care_model_status_param': 1,
  1665. 'care_model_ab_mid_group': ['mean_group'],
  1666. 'threshold_mix_func': 'multiply',
  1667. }, # 所有广告类型本端视频数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1668. # 票圈|信仰之路
  1669. '324-a': {
  1670. 'video': {'data': 'videos0'},
  1671. 'user': {'data': 'user0', 'rule': 'rule2'},
  1672. 'group_class_key': 'class1',
  1673. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1674. 'care_model_status_param': 1,
  1675. 'care_model_ab_mid_group': ['mean_group'],
  1676. }, # vlog端所有广告类型数据 + 优化阈值计算方式 + else非关怀模式人群多出广告
  1677. '324-b': {
  1678. 'video': {'data': 'videos0out'},
  1679. 'user': {'data': 'user0out', 'rule': 'rule2'},
  1680. 'group_class_key': 'class1',
  1681. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1682. 'care_model_status_param': 1,
  1683. 'care_model_ab_mid_group': ['mean_group', 'return0share1mids'],
  1684. }, # vlog端所有广告类型数据 + 优化阈值计算方式 + [else, return0share1mids]非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1685. '324-c': {
  1686. 'video': {'data': 'videos0out'},
  1687. 'user': {'data': 'user0out', 'rule': 'rule2'},
  1688. 'group_class_key': 'class1',
  1689. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1690. 'care_model_status_param': 1,
  1691. 'care_model_ab_mid_group': ['mean_group'],
  1692. }, # vlog端所有广告类型数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 使用以是否直接跳出为目标的数据
  1693. '324-d': {
  1694. 'share': {'video': {'data': 'videos0'}, 'user': {'data': 'user0', 'rule': 'rule2'}},
  1695. 'out': {'video': {'data': 'videos0out'}, 'user': {'data': 'user0out', 'rule': 'rule2'}},
  1696. 'group_class_key': 'class1',
  1697. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1698. 'care_model_status_param': 1,
  1699. 'care_model_ab_mid_group': ['mean_group'],
  1700. 'threshold_mix_func': 'add',
  1701. 'mix_param': {'share_weight': 0.2, 'out_weight': 0.8}
  1702. }, # vlog端所有广告类型数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案一(加权融合: k1*p(不直接跳出|出广告) + k2*p(分享|出广告))
  1703. '324-e': {
  1704. 'share': {'video': {'data': 'videos0'}, 'user': {'data': 'user0', 'rule': 'rule2'}},
  1705. 'out': {'video': {'data': 'videos0out'}, 'user': {'data': 'user0out', 'rule': 'rule2'}},
  1706. 'group_class_key': 'class1',
  1707. 'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
  1708. 'care_model_status_param': 1,
  1709. 'care_model_ab_mid_group': ['mean_group'],
  1710. 'threshold_mix_func': 'multiply',
  1711. }, # vlog端所有广告类型数据 + 优化阈值计算方式 + else非关怀模式人群多出广告 + 分享与不直接跳出融合方案二(乘积融合: p(不直接跳出|出广告) * p(分享|出广告))
  1712. }
  1713. # 用户组有广告时的分享率预测结果存放 redis key 前缀,完整格式:ad:users:group:predict:share:rate:{user_data_key}:{date}
  1714. KEY_NAME_PREFIX_AD_GROUP = 'ad:users:group:predict:share:rate:'
  1715. # 视频有广告时的分享率预测结果存放 redis key 前缀,完整格式:ad:video:predict:share:rate:{video_data_key}:{date}
  1716. KEY_NAME_PREFIX_AD_VIDEO = 'ad:video:predict:share:rate:'
  1717. # 用户分组结果存放 redis key 前缀,完整格式:mid:group:{class_key}:{mid}
  1718. KEY_NAME_PREFIX_MID_GROUP = 'mid:group:'
  1719. # 广告推荐阈值结果存放 redis key 前缀,完整格式:ad:threshold:{abtestId}:{abtestConfigTag}:{abtestGroup}:{group}
  1720. KEY_NAME_PREFIX_AD_THRESHOLD = 'ad:threshold:'
  1721. # 广告推荐关怀模式实验阈值结果存放 redis key 前缀,完整格式:ad:threshold:care:{abtestId}:{abtestConfigTag}:{abtestGroup}:{group}
  1722. KEY_NAME_PREFIX_AD_THRESHOLD_CARE_MODEL = 'ad:threshold:care:'
  1723. # 新策略使用
  1724. # 视频有广告时的分享率预测结果存放 redis key 前缀,完整格式:video:predict:share:rate:with:ad:{video_data_key}:{date}
  1725. KEY_NAME_PREFIX_VIDEO_WITH_AD = 'video:predict:share:rate:with:ad:'
  1726. # 视频无广告时的分享率预测结果存放 redis key 前缀,完整格式:video:predict:share:rate:no:ad:{video_data_key}:{date}
  1727. KEY_NAME_PREFIX_VIDEO_NO_AD = 'video:predict:share:rate:no:ad:'
  1728. # 用户组有广告时的分享率预测结果存放 redis key 前缀,完整格式:users:group:predict:share:rate:with:ad:{user_data_key}:{user_rule_key}:{date}
  1729. KEY_NAME_PREFIX_GROUP_WITH_AD = 'users:group:predict:share:rate:with:ad:'
  1730. # 用户组无广告时的分享率预测结果存放 redis key 前缀,完整格式:users:group:predict:share:rate:no:ad:{user_data_key}:{user_rule_key}:{date}
  1731. KEY_NAME_PREFIX_GROUP_NO_AD = 'users:group:predict:share:rate:no:ad:'
  1732. # 上一周期arpu值
  1733. KEY_NAME_AD_ARPU = 'ad:arpu'
  1734. # 计算roi使用参数
  1735. KEY_NAME_AD_ROI_PARAM = 'ad:roi:param'
  1736. # 各端对应数据参数
  1737. PARAMS_NEW_STRATEGY = {
  1738. APP_TYPE['VLOG']: {
  1739. 'video': {'data': 'videos0'},
  1740. 'user': {'data': 'user0', 'rule': 'rule1'},
  1741. 'group_class_key': 'class1'
  1742. }, # vlog
  1743. APP_TYPE['LOVE_LIVE']: {
  1744. 'video': {'data': 'videos4'},
  1745. 'user': {'data': 'user4', 'rule': 'rule1'},
  1746. 'group_class_key': 'class1'
  1747. }, # 票圈视频
  1748. APP_TYPE['LONG_VIDEO']: {
  1749. 'video': {'data': 'videos5'},
  1750. 'user': {'data': 'user5', 'rule': 'rule1'},
  1751. 'group_class_key': 'class1'
  1752. }, # 内容精选
  1753. }
  1754. class DevelopmentConfig(BaseConfig):
  1755. """开发环境配置"""
  1756. # 报警内容 环境区分
  1757. ENV_TEXT = "开发环境"
  1758. # 测试环境redis地址
  1759. REDIS_INFO = {
  1760. 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
  1761. 'port': 6379,
  1762. 'password': 'Wqsd@2019',
  1763. }
  1764. # Hologres连接参数,本地使用
  1765. HOLOGRES_INFO = {
  1766. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou.hologres.aliyuncs.com',
  1767. 'port': 80,
  1768. 'dbname': 'dssm',
  1769. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  1770. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  1771. }
  1772. # 测试环境mysql地址
  1773. MYSQL_INFO = {
  1774. 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
  1775. 'port': 3306,
  1776. 'user': 'wx2016_longvideo',
  1777. 'password': 'wx2016_longvideoP@assword1234',
  1778. 'db': 'longvideo',
  1779. 'charset': 'utf8'
  1780. }
  1781. # Hologres视频状态存储表名
  1782. VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
  1783. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  1784. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  1785. VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'
  1786. # 获取视频在流量池中的剩余可分发数接口地址
  1787. GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  1788. # 获取用户近30天是否有回流接口地址
  1789. GET_USER_30DayReturnCnt_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
  1790. #tf serving url
  1791. TF_SERVING_URL = 'http://reco-rank-internal.piaoquantv.com/v1/models/deepfm:predict'
  1792. # 日志服务配置
  1793. ALIYUN_LOG = {
  1794. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  1795. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  1796. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  1797. 'PROJECT': 'rov-server-test',
  1798. }
  1799. # 快速曝光流量池ID
  1800. QUICK_FLOW_POOL_ID = 3
  1801. class TestConfig(BaseConfig):
  1802. """测试环境配置"""
  1803. # 报警内容 环境区分
  1804. ENV_TEXT = "测试环境"
  1805. # 测试环境redis地址
  1806. REDIS_INFO = {
  1807. 'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
  1808. 'port': 6379,
  1809. 'password': 'Wqsd@2019',
  1810. }
  1811. # Hologres连接参数,服务器使用
  1812. HOLOGRES_INFO = {
  1813. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  1814. 'port': 80,
  1815. 'dbname': 'dssm',
  1816. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  1817. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  1818. }
  1819. # 测试环境mysql地址
  1820. MYSQL_INFO = {
  1821. 'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
  1822. 'port': 3306,
  1823. 'user': 'wx2016_longvideo',
  1824. 'password': 'wx2016_longvideoP@assword1234',
  1825. 'db': 'longvideo',
  1826. 'charset': 'utf8'
  1827. }
  1828. # Hologres视频状态存储表名
  1829. VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
  1830. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  1831. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  1832. VIDEO_FILTER_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/recommend/filterVideos'
  1833. # 获取视频在流量池中的剩余可分发数接口地址
  1834. GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  1835. # 获取用户近30天是否有回流接口地址
  1836. GET_USER_30DayReturnCnt_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
  1837. # tf serving url
  1838. TF_SERVING_URL = 'http://reco-rank-internal.piaoquantv.com/v1/models/deepfm:predict'
  1839. # 日志服务配置
  1840. ALIYUN_LOG = {
  1841. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  1842. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  1843. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  1844. 'PROJECT': 'rov-server-test',
  1845. }
  1846. # 快速曝光流量池ID
  1847. QUICK_FLOW_POOL_ID = 3
  1848. class PreProductionConfig(BaseConfig):
  1849. """预发布环境配置"""
  1850. # 报警内容 环境区分
  1851. ENV_TEXT = "预发布环境"
  1852. # 线上环境redis地址
  1853. REDIS_INFO = {
  1854. 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
  1855. 'port': 6379,
  1856. 'password': 'Wqsd@2019',
  1857. }
  1858. # Hologres连接参数,服务器使用
  1859. HOLOGRES_INFO = {
  1860. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  1861. 'port': 80,
  1862. 'dbname': 'dssm',
  1863. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  1864. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  1865. }
  1866. # 生产环境mysql地址
  1867. MYSQL_INFO = {
  1868. 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
  1869. 'port': 3306,
  1870. 'user': 'wx2016_longvideo',
  1871. 'password': 'wx2016_longvideoP@assword1234',
  1872. 'db': 'longvideo',
  1873. 'charset': 'utf8'
  1874. }
  1875. # Hologres视频状态存储表名
  1876. VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
  1877. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  1878. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  1879. VIDEO_FILTER_URL = 'http://prespeed-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos'
  1880. # 获取视频在流量池中的剩余可分发数接口地址
  1881. GET_REMAIN_VIEW_COUNT_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
  1882. # 获取用户近30天是否有回流接口地址
  1883. GET_USER_30DayReturnCnt_URL = 'http://videopre-internal.piaoquantv.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
  1884. # tf serving url
  1885. TF_SERVING_URL = 'http://192.168.203.102:8501/v1/models/deepfm:predict'
  1886. # 日志服务配置
  1887. ALIYUN_LOG = {
  1888. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  1889. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  1890. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  1891. 'PROJECT': 'rov-server',
  1892. }
  1893. # 快速曝光流量池ID
  1894. QUICK_FLOW_POOL_ID = 3
  1895. class ProductionConfig(BaseConfig):
  1896. """生产环境配置"""
  1897. # 报警内容 环境区分
  1898. ENV_TEXT = "生产环境"
  1899. # 线上环境redis地址
  1900. REDIS_INFO = {
  1901. 'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
  1902. 'port': 6379,
  1903. 'password': 'Wqsd@2019',
  1904. }
  1905. # Hologres连接参数,服务器使用
  1906. HOLOGRES_INFO = {
  1907. 'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou-vpc.hologres.aliyuncs.com',
  1908. 'port': 80,
  1909. 'dbname': 'dssm',
  1910. 'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
  1911. 'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
  1912. }
  1913. # 生产环境mysql地址
  1914. MYSQL_INFO = {
  1915. 'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
  1916. 'port': 3306,
  1917. 'user': 'wx2016_longvideo',
  1918. 'password': 'wx2016_longvideoP@assword1234',
  1919. 'db': 'longvideo',
  1920. 'charset': 'utf8'
  1921. }
  1922. # Hologres视频状态存储表名
  1923. VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
  1924. # 用户已观看视频过滤 & 视频审核条件过滤 & 是否进入老年人社区过滤 & 话题状态过滤 接口地址
  1925. # 参数types: 1-已观看 2-视频状态 3-是否进入老年人社区过滤 4-话题状态
  1926. VIDEO_FILTER_URL = 'http://recommend-common-internal.piaoquantv.com/longvideoapi/openapi/recommend/filterVideos'
  1927. # 获取视频在流量池中的剩余可分发数接口地址
  1928. GET_REMAIN_VIEW_COUNT_URL = 'http://api-internal.piaoquantv.com/flowpool/video/remainViewCount'
  1929. # 获取用户近30天是否有回流接口地址
  1930. GET_USER_30DayReturnCnt_URL = 'http://longvideoapi-internal.piaoquantv.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
  1931. # tf serving url
  1932. TF_SERVING_URL = 'http://reco-rank-internal.piaoquantv.com/v1/models/deepfm:predict'
  1933. # 日志服务配置
  1934. ALIYUN_LOG = {
  1935. 'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
  1936. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  1937. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  1938. 'PROJECT': 'rov-server',
  1939. }
  1940. # 快速曝光流量池ID
  1941. QUICK_FLOW_POOL_ID = 3
  1942. def set_config():
  1943. # 获取环境变量 ROV_SERVER_ENV
  1944. env = os.environ.get('ROV_SERVER_ENV')
  1945. # env = 'dev'
  1946. if env is None:
  1947. # log_.error('ENV ERROR: is None!')
  1948. return
  1949. if env == 'dev':
  1950. return DevelopmentConfig()
  1951. elif env == 'test':
  1952. return TestConfig()
  1953. elif env == 'pre':
  1954. return PreProductionConfig()
  1955. elif env == 'pro':
  1956. return ProductionConfig()
  1957. else:
  1958. # log_.error('ENV ERROR: is {}'.format(env))
  1959. return