|
|
@@ -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 {
|