线上问题一:麦哲伦2.0 人群配置不生效
发现背景:产品发现三层模型部分计划个别测试计划圈选人群特征与数仓统计数据的人群不一致,向值班人员反馈
根因定位:
(1)用户配置三层模型计划时,配置单个人群时,麦哲伦未写入人群计算关系
(2)在ade执行时,计算与或逻辑时,针对单个人群计算关系=0的情况,会按照或逻辑计算,目前计算存在逻辑问题,导致人群限制失效。
根因分析:
当我们在配置多人群的时候一定会填入“与”关系(逻辑值1)或者“或关系”(逻辑值2),但是在配单人群的时候填入逻辑值0,它默认会走“或”的逻辑。
在人群判断的时候会初始化默认值 passFlag= true ,
当计算“与”逻辑的时候,先遍历第一个人群-如果该用户不在人群里将默认值置为false,break跳出循环 - 不命中计划,如果用户包含在第一个人群里则再遍历第二个人群,同样如果该用户不在人群里将默认值置为false,break跳出循环 - 不命中计划,如果该用户都在两个人群中存在,默认值继续为true 会命中计划;当只配了一个人群的时候,默认另一个人群是全部人 - “与”的逻辑是取交集才展示资源位 - 相当于遍历这个人群 ,遍历这一个人群 - 如果存在人群中则默认值还为true - 会展示该资源位,如果不存在人群中则默认值为false - 不会展示该资源位
当计算“或”逻辑的时候,出现错误的原因:还是会初始化默认值 passFlag= true,如果配两个人群。遍历第一个人群 - 存在该人群内则默认值为true - 直接就会展示资源位,如果第一个人群不存在则默认值置为false,继续遍历第二个人群 - 如果不存在,还是false,如果存在也不会置为true - 一直都不会展示资源位;如果配一个人群,另一个默认人群是全部人群 - 那么遍历它是一定会存在的,不会去判断第二个人群 - 它会一直展示该资源位
计算“或”正确的逻辑应该是:
让默认值 passFlag= false,如果配两个人群 - 先遍历第一个人群,如果存在则将默认值置为true - 直接展示资源位 - 如果第一个人群不存在,则默认值还是false 去遍历第二个人群,如果存在,则把默认值置为true - 展示资源位,如果也不存在则不展示资源位,默认值一直为false;
如果配一个人群,另一个人群默认为是空人群,先遍历这个空人群 - 不存在则还是false,再去遍历这个人群,如果存在则把默认值置为true,展示该资源位 - 如果不存在则默认值还是false,不展示资源位
改正的关键点:
1.处理“或”逻辑的时候 默认值 passFlag= false 不能和“与”逻辑一样为true
2.处理“或”逻辑的时候,配单人群的时候默认另一个人群为空人群 不能和“与”逻辑一样为全人群
线上问题二:新人营活动物料优先级下降
发现背景:pm发现新人营活动的曝光率近期下降很多,在端上发现新人营活动的排序有问题,dgd活动的优先级最高影响了新人营的曝光率
原因分析和定位:
新人营物料在接入组件化,新人营物料排序是在资源位dsp的物料中排序第一位,由于dgd物料获取不走资源位dsp,是直接从cherry这个dsp获取,而cherry的dsp优先级高于资源位dsp,因此dgd优先级排在了最高,导致新人营物料排在了第二位。为了紧急修复这个问题,对物料排序发生变更,将dgd物料的dsp优先级排在资源位dsp之后。
线上问题三:天降红包活动无法命中
发现背景:自动化检测到无法命中天降红包活动
原因分析和定位:
天降红包的物料存在阿波罗实验,阿波罗实验过期导致应该命中实验内物料的用户无法命中物料
解决:
让所有用户不走阿波罗实验直接走物料库