Browse Source

Update reply BuckStrategyV1: change strategy bucket config form

StrayWarrior 9 months ago
parent
commit
dbbffbced9

+ 28 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/strategy/reply/impl/BuckStrategyV1.java

@@ -37,6 +37,8 @@ public class BuckStrategyV1 implements ReplyStrategyService {
      */
     private static final String bucketStrategyConfig = "{\"stg0909-base\":[5,6],\"stg0909-explore1\":[7],\"stg0909-explore2\":[8,9]}";
 
+    private static final String bucketStrategyConfigV2 = "{\"default\":{\"base\":[0,1,2,3,4],\"stg0909-base\":[5,6],\"stg0909-explore1\":[7],\"stg0909-explore2\":[8,9]},\"gh_ac43e43b253b\":{\"base\":[0,1],\"stg0909-base\":[2,3,4,5,6],\"stg0909-explore1\":[7],\"stg0909-explore2\":[8,9]}}";
+
     /**
      * 自动回复使用小程序Id
      */
@@ -56,7 +58,7 @@ public class BuckStrategyV1 implements ReplyStrategyService {
     @Override
     public ReplyBucketData getResult(BucketDataParam bucketDataParam) {
         // 0 获取策略key
-        JSONObject bucketStrategyConfigJsonObject = JSON.parseObject(bucketStrategyConfig);
+        JSONObject bucketStrategyConfigJsonObject = getStrategyConfig(bucketDataParam.getGhId());
         Set<String> keyedSet = bucketStrategyConfigJsonObject.keySet();
         // 1 处理文章--算法引擎--排序文章数据
 //        getWenzhangData();
@@ -71,11 +73,32 @@ public class BuckStrategyV1 implements ReplyStrategyService {
         return getReplyBucketData(bucketStrategyConfigJsonObject, keyedSet, bucketDataParam.getGhId());
     }
 
+    private JSONObject getStrategyConfig(String ghId) {
+        JSONObject allStrategyConfigs = JSON.parseObject(bucketStrategyConfigV2);
+        JSONObject currentGhIdStrategyConfig = null;
+        if (allStrategyConfigs.containsKey(ghId)) {
+            currentGhIdStrategyConfig = allStrategyConfigs.getJSONObject(ghId);
+        } else if (allStrategyConfigs.containsKey("default")) {
+            currentGhIdStrategyConfig = allStrategyConfigs.getJSONObject("default");
+        } else {
+            log.error("invalid strategy config: default key does not exist");
+            throw new RuntimeException("Default strategy config does not exist");
+        }
+        // check param
+        if (!currentGhIdStrategyConfig.containsKey("base")) {
+            throw new RuntimeException("Strategy config does not have manual base");
+        }
+        return currentGhIdStrategyConfig;
+    }
+
     private ReplyBucketData getReplyBucketData(JSONObject bucketStrategyConfigJsonObject, Set<String> keyedSet, String ghId) {
         // 策略小程序数据
         ReplyBucketData replyBucketData = new ReplyBucketData();
         List<GroupData> groupDataList = new ArrayList<>();
         for (String key : keyedSet) {
+            if ("base".equals(key)) {
+                continue;
+            }
             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
             cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key).andGhIdEqualTo(ghId);
             cgiReplyBucketDataExample.setOrderByClause("sort");
@@ -110,6 +133,10 @@ public class BuckStrategyV1 implements ReplyStrategyService {
         }
         // 获取人工实验数据
         List<GroupData> groupDataBaseList = httpClientService.sendPenGongBaseRequest(ghId);
+        int baseBucketNum = bucketStrategyConfigJsonObject.getJSONArray("base").size();
+        if (groupDataBaseList.size() > baseBucketNum) {
+            groupDataBaseList = groupDataBaseList.subList(0, baseBucketNum);
+        }
         if (!CollectionUtils.isEmpty(groupDataBaseList)) {
             GroupData groupData = groupDataBaseList.get(0);
             List<MsgData> msgDataList = groupData.getMsgDataList();