config.py 106 KB

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