Переглянути джерело

fix: RecallService 补 V536/V569 dk_elements 召回 gate

V536 复用 V562 的 YearShareDkElements (gate 改成 isHit562 || isHit536),
V569 新增 isHit569 gate 挂载 YearReturnDkElements (本分支前面新建的
click 触发版召回)。

修复前症状: V536/V569 命中时, rank 类白名单留了 dk_elements 名额, 但
RecallService fail-closed 没挂载对应 strategy, 候选池里永远是空。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
yangxiaohui 2 тижнів тому
батько
коміт
225581fa88

+ 11 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -179,17 +179,24 @@ public class RecallService implements ApplicationContextAware {
         // 召回侧不再做"追加 all_rov + removeIf 老 region/city"的对调 —— 与 V564/V566 一致行为, 让公共池
         // 22 路召回都跑, rank 类 extractAllAndTruncateByCoarseRank 按白名单 + 粗排分挑选.
         //
-        // V562/V565 各承载一个 dk_elements 实验, 互相隔离便于独立归因:
-        //   V562 → YearShareDkElements:   用户近期 share 行为 join dk_elements -> elements_rovn_recall 倒排
-        //   V565 → UserProfileDkElements: 用户元素画像 (s_z_y_s/zt_gyf)     -> elements_rovn_recall 倒排
+        // V536/V562/V565/V569 各承载一个 dk_elements 实验, 互相隔离便于独立归因:
+        //   V562 → YearShareDkElements:    用户近期 share 行为 join dk_elements -> elements_rovn_recall 倒排
+        //   V536 → YearShareDkElements:    同 V562, 但在 V536 rank 类中归非个性化白名单 (配额归属差异)
+        //   V565 → UserProfileDkElements:  用户元素画像 (s_z_y_s/zt_gyf)         -> elements_rovn_recall 倒排
+        //   V569 → YearReturnDkElements:   用户近期 click 回流行为 join dk_elements -> elements_rovn_recall 倒排
         boolean isHit562Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "562");
-        if (isHit562Exp) {
+        boolean isHit536Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "536");
+        if (isHit562Exp || isHit536Exp) {
             strategies.add(strategyMap.get(YearShareDkElementsRecallStrategy.class.getSimpleName()));
         }
         boolean isHit565Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "565");
         if (isHit565Exp) {
             strategies.add(strategyMap.get(UserProfileDkElementsRecallStrategy.class.getSimpleName()));
         }
+        boolean isHit569Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "569");
+        if (isHit569Exp) {
+            strategies.add(strategyMap.get(YearReturnDkElementsRecallStrategy.class.getSimpleName()));
+        }
 
         // V564 实验:召回侧不做任何剔除/新增——让所有公共池召回都跑,
         // 由 V564 rank 类 (mergeAndRankRovRecall) 在 extractAllAndTruncateByCoarseRank