|
@@ -61,6 +61,7 @@ import java.util.stream.Stream;
|
|
|
@Slf4j
|
|
|
public class ArticlePromotionService {
|
|
|
|
|
|
+ private final List<String> contentPoolType = Arrays.asList("autoArticlePoolLevel1", "autoArticlePoolLevel3", "autoArticlePoolLevel4");
|
|
|
@Autowired
|
|
|
LongArticleBaseMapper longArticleBaseMapper;
|
|
|
@Autowired
|
|
@@ -91,13 +92,12 @@ public class ArticlePromotionService {
|
|
|
AigcBaseMapper aigcBaseMapper;
|
|
|
@Autowired
|
|
|
VideoTitleReWriteRepository videoTitleReWriteRepository;
|
|
|
-
|
|
|
@ApolloJsonValue("${articlePromotionProduceConfig:{}}")
|
|
|
private Map<String, Map<String, Map<String, String>>> produceConfig;
|
|
|
@Value("${topProducePlanId:}")
|
|
|
private String topProducePlanId;
|
|
|
|
|
|
- public static boolean abZTestCorrected(double readAvg, int fansA , double viewCount, int fansB, double confidence) {
|
|
|
+ public static boolean abZTestCorrected(double readAvg, int fansA, double viewCount, int fansB, double confidence) {
|
|
|
// 检查基础参数合法性
|
|
|
if (fansA <= 0 || fansB <= 0) {
|
|
|
throw new IllegalArgumentException("样本量必须大于零");
|
|
@@ -131,8 +131,6 @@ public class ArticlePromotionService {
|
|
|
// 判断是否拒绝原假设
|
|
|
return ciLow > 0;
|
|
|
}
|
|
|
-
|
|
|
- private final List<String> contentPoolType = Arrays.asList("autoArticlePoolLevel1", "autoArticlePoolLevel3", "autoArticlePoolLevel4");
|
|
|
|
|
|
public void articlePromotion(String pos, String way, String accountNickName, String tag,
|
|
|
Integer viewCountFilter, Double viewCountRateFilter, List<Integer> positionFilter) {
|
|
@@ -150,14 +148,29 @@ public class ArticlePromotionService {
|
|
|
|
|
|
// 使用显著性检验晋级
|
|
|
List<DatastatSortStrategy> listStrategy2 = list.stream()
|
|
|
- .filter(o -> abZTestCorrected(
|
|
|
- o.getAvgViewCount() * 1.1 * 30, o.getFans() * 30, o.getViewCount(), o.getFans(), 0.95))
|
|
|
+ .filter(o -> {
|
|
|
+ try {
|
|
|
+ return abZTestCorrected(
|
|
|
+ o.getAvgViewCount() * 1.1 * 30,
|
|
|
+ o.getFans() * 30,
|
|
|
+ o.getViewCount(),
|
|
|
+ o.getFans(),
|
|
|
+ 0.95
|
|
|
+ );
|
|
|
+ } catch (IllegalArgumentException e) {
|
|
|
+ // 记录异常日志(包含对象标识)
|
|
|
+ log.error("显著性检验,传入数值错误: {}", e.getMessage());
|
|
|
+ return false; // 异常时过滤掉该对象
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 捕获其他未预期异常
|
|
|
+ log.error("显著性检验, 其他异常: {}", e.getMessage());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ })
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// merge 两个 list, 通过wx_sn去重
|
|
|
// 临时用 Map 存储去重(保留第一个出现的元素)
|
|
|
- // 冲突时保留已有元素
|
|
|
- // 从 Map 的 values 中提取结果
|
|
|
list = Stream.concat(listStrategy1.stream(), listStrategy2.stream())
|
|
|
// 使用标题作为去重标识
|
|
|
.collect(Collectors.collectingAndThen(
|