Przeglądaj źródła

增加 搜索热榜 默认记录

wangyunpeng 13 godzin temu
rodzic
commit
53a70c5aca

+ 46 - 0
api-module/src/main/java/com/tzld/piaoquan/api/job/contentplatform/ContentPlatformDemandVideoJob.java

@@ -46,6 +46,9 @@ public class ContentPlatformDemandVideoJob {
     @ApolloJsonValue("${sync.channel.names:[\"公众号合作-即转-稳定\",\"群/企微合作-稳定\",\"公众号合作-Daily-自选\"]}")
     private List<String> syncChannelNames;
 
+    /** 默认记录所属 channel_name 标记,用于与正常渠道数据隔离,便于幂等清理 */
+    private static final String DEFAULT_RECORD_CHANNEL = "default";
+
     @XxlJob("syncContentPlatformDemandVideoJob")
     public ReturnT<String> syncContentPlatformDemandVideoJob(String param) {
         String dt = DateUtil.getBeforeDayDateString("yyyyMMdd");
@@ -63,10 +66,53 @@ public class ContentPlatformDemandVideoJob {
             }
         }
 
+        try {
+            insertDefaultRecords(dt);
+        } catch (Exception e) {
+            log.error("syncContentPlatformDemandVideoJob insertDefaultRecords error, dt={}", dt, e);
+            return ReturnT.FAIL;
+        }
+
         log.info("syncContentPlatformDemandVideoJob finish, dt={}", dt);
         return ReturnT.SUCCESS;
     }
 
+    /**
+     * 写入三条默认记录:仅含匹配实验id及三个匹配相关字段,其它字段为空。
+     * 用 channel_name=DEFAULT_RECORD_CHANNEL 与正常渠道数据隔离,先按 (dt, channel_name) 删除后批量插入,保证幂等。
+     */
+    private void insertDefaultRecords(String dt) {
+        Long now = System.currentTimeMillis();
+        List<ContentPlatformDemandVideo> defaults = new ArrayList<>();
+        defaults.add(buildDefaultRecord(dt, now,
+                "vector_search", "向量搜索", "相似度>=0.8", "视频综合得分(相似性|rov)倒序"));
+        defaults.add(buildDefaultRecord(dt, now,
+                "manager_search", "后台搜索", "关键词匹配", "--"));
+        defaults.add(buildDefaultRecord(dt, now,
+                "hot", "票圈热门", "--", "视频综合加权得分(rov*时间)倒序"));
+
+        demandVideoMapperExt.deleteByDtAndChannelName(dt, DEFAULT_RECORD_CHANNEL);
+        demandVideoMapperExt.batchInsert(defaults);
+        log.info("insertDefaultRecords success, dt={}, count={}", dt, defaults.size());
+    }
+
+    private ContentPlatformDemandVideo buildDefaultRecord(String dt, Long now,
+                                                          String matchExperimentId,
+                                                          String matchMethod,
+                                                          String matchVideoFilter,
+                                                          String matchSort) {
+        ContentPlatformDemandVideo record = new ContentPlatformDemandVideo();
+        record.setDt(dt);
+        record.setChannelName(DEFAULT_RECORD_CHANNEL);
+        record.setMatchExperimentId(matchExperimentId);
+        record.setMatchMethod(matchMethod);
+        record.setMatchVideoFilter(matchVideoFilter);
+        record.setMatchSort(matchSort);
+        record.setStatus(1);
+        record.setCreateTimestamp(now);
+        return record;
+    }
+
     private static final int PAGE_SIZE = 10000;
 
     private void syncByChannel(String dt, String syncChannelName) throws Exception {