Эх сурвалжийг харах

fix: 广告风控规则描述性调整

hidewnd 2 сар өмнө
parent
commit
b5d7a0962a

+ 5 - 5
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/ApkServiceImpl.java

@@ -69,7 +69,7 @@ public class ApkServiceImpl implements ApkService {
     @Value("${risk.config.initMonthCount:1}")
     private String initMonthCount;
 
-    @Value("${risk.config.initMonthTaskLimit:20}")
+    @Value("${risk.config.initMonthTaskLimit:80}")
     private String initMonthTaskLimit;
 
     @Value("${risk.config.initHourCount:24}")
@@ -81,10 +81,10 @@ public class ApkServiceImpl implements ApkService {
     @Value("${risk.config.visitor.initEcpmLimit:20}")
     private String initVisitorEcpmLimit;
 
-    @Value("${risk.config.visitor.initRevenueLimit:0.5}")
+    @Value("${risk.config.visitor.initRevenueLimit:0.04}")
     private String initVisitorRevenueLimit;
 
-    @Value(("${risk.config.visitor.initHours:1}"))
+    @Value(("${risk.config.visitor.initHours:3}"))
     private String initVisitorHours;
     @Value(("${risk.config.visitor.initRidCount:10}"))
     private String initVisitorRidCount;
@@ -408,13 +408,13 @@ public class ApkServiceImpl implements ApkService {
                 StrUtil.format("当日用户获得{}个获得奖励的激励视频,"),initAdCompletedCount, 2);
         configIds.add(riskConfig.getConfigId());
         riskConfig = createRiskConfig(agentId, "firstCount",
-                StrUtil.format("{}个获得奖励的激励视频", initFirstCount),  initFirstCount, 2);
+                StrUtil.format("最后{}个获得奖励的激励视频", initFirstCount),  initFirstCount, 2);
         configIds.add(riskConfig.getConfigId());
         riskConfig = createRiskConfig(agentId, "averageRevenue",
                 StrUtil.format("平均收益<{}", initAverageRevenue),  initAverageRevenue, 4);
         configIds.add(riskConfig.getConfigId());
         String templateId = IdUtil.getSnowflakeNextIdStr();
-        String templateContent = StrUtil.format("当日用户获得{}个获得奖励的激励视频,{}个获得奖励的激励视频平均收益<{}",
+        String templateContent = StrUtil.format("当日用户获得{}个获得奖励的激励视频,最后{}个获得奖励的激励视频平均收益<{}",
                 initAdCompletedCount, initFirstCount, initAverageRevenue);
         YtRiskTemplate template = new YtRiskTemplate(templateId,"成本收益限制", templateContent,
                 appId + "-766", agentId, 2, appId,

+ 7 - 3
yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -661,7 +661,7 @@ public class RiskServiceImpl implements RiskService {
         if (riskTempView == null || riskTempView.getEnabled() != 1) return;
         Map<String, String> rsihConfigMap = getRsihConfigMap(riskTempView);
         int adCompletedCount = Integer.parseInt(rsihConfigMap.getOrDefault("adCompletedCount", "-1"));
-        int firstCount = Integer.parseInt(rsihConfigMap.getOrDefault("firstCount", "-1"));
+        int firstCount = Integer.parseInt(rsihConfigMap.getOrDefault("firstCount", "0"));
         BigDecimal averageRevenueLimit = new BigDecimal(rsihConfigMap.getOrDefault("averageRevenue", "-1"));
         if(adCompletedCount < 0 || firstCount < 0|| averageRevenueLimit.compareTo(BigDecimal.ZERO) < 0){
             return;
@@ -669,11 +669,15 @@ public class RiskServiceImpl implements RiskService {
         // 查询前firstCount条记录 收益总值,并计算平均值
         BigDecimal averageRevenue = BigDecimal.ZERO;
         if (adRecords.size() >= adCompletedCount) {
-            long count = adRecords.stream().map(YtDyzAdRecord::getRevenue)
+            long count = adRecords.stream()
+                    .sorted(Comparator.comparing(YtDyzAdRecord::getFinishTime, Comparator.reverseOrder()))
+                    .map(YtDyzAdRecord::getRevenue)
                     .filter(revenue -> revenue != null && revenue.compareTo(BigDecimal.ZERO) > 0)
                     .limit(firstCount).count();
             if(count > 0){
-                averageRevenue = adRecords.stream().map(YtDyzAdRecord::getRevenue)
+                averageRevenue = adRecords.stream()
+                        .sorted(Comparator.comparing(YtDyzAdRecord::getFinishTime, Comparator.reverseOrder()))
+                        .map(YtDyzAdRecord::getRevenue)
                         .filter(revenue -> revenue != null && revenue.compareTo(BigDecimal.ZERO) > 0)
                         .limit(firstCount).reduce(BigDecimal.ZERO, BigDecimal::add)
                         .divide(new BigDecimal(count), RoundingMode.HALF_UP);