|
@@ -2,6 +2,7 @@ package com.tzld.piaoquan.ad.engine.service.predict.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.alibaba.fastjson.TypeReference;
|
|
import com.google.common.reflect.TypeToken;
|
|
import com.google.common.reflect.TypeToken;
|
|
import com.tzld.piaoquan.ad.engine.commons.enums.AppTypeEnum;
|
|
import com.tzld.piaoquan.ad.engine.commons.enums.AppTypeEnum;
|
|
import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
|
|
import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
|
|
@@ -28,6 +29,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class PredictModelServiceImpl implements PredictModelService {
|
|
public class PredictModelServiceImpl implements PredictModelService {
|
|
@@ -55,6 +57,9 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
@Value("${ad.predict.break.exp.code:0}")
|
|
@Value("${ad.predict.break.exp.code:0}")
|
|
private String adPredictBreakExpCode;
|
|
private String adPredictBreakExpCode;
|
|
|
|
|
|
|
|
+ @Value("${ad.predict.param.testIds:0}")
|
|
|
|
+ private String testIds;
|
|
|
|
+
|
|
public Map<String, Object> adPredict(ThresholdPredictModelRequestParam requestParam) {
|
|
public Map<String, Object> adPredict(ThresholdPredictModelRequestParam requestParam) {
|
|
|
|
|
|
boolean isHit = false;
|
|
boolean isHit = false;
|
|
@@ -196,6 +201,8 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
modelParam.setAbtestParam(abtestParam);
|
|
modelParam.setAbtestParam(abtestParam);
|
|
modelParam.setMidGroup(midGroup);
|
|
modelParam.setMidGroup(midGroup);
|
|
|
|
+ modelParam.setExtraParam(new HashMap<>());
|
|
|
|
+ setExtraParam(modelParam);
|
|
result = ThresholdModelContainer.
|
|
result = ThresholdModelContainer.
|
|
getThresholdPredictModel("modelV2")
|
|
getThresholdPredictModel("modelV2")
|
|
.predict(modelParam);
|
|
.predict(modelParam);
|
|
@@ -314,6 +321,8 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
modelParam.setAbtestParam(abtestParam);
|
|
modelParam.setAbtestParam(abtestParam);
|
|
modelParam.setMidGroup(midGroup);
|
|
modelParam.setMidGroup(midGroup);
|
|
|
|
+ modelParam.setExtraParam(new HashMap<>());
|
|
|
|
+ setExtraParam(modelParam);
|
|
Object thresholdMixFunc = abtestParam.getOrDefault("threshold_mix_func", "basic");
|
|
Object thresholdMixFunc = abtestParam.getOrDefault("threshold_mix_func", "basic");
|
|
result = ThresholdModelContainer.
|
|
result = ThresholdModelContainer.
|
|
getThresholdPredictModel(thresholdMixFunc.toString())
|
|
getThresholdPredictModel(thresholdMixFunc.toString())
|
|
@@ -350,4 +359,19 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
.predict(modelParam);
|
|
.predict(modelParam);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public void setExtraParam(ThresholdPredictModelParam modelParam){
|
|
|
|
+ String[] ids=testIds.split(",");
|
|
|
|
+ List<String> idList=Arrays.asList(ids);
|
|
|
|
+ List<Map<String,Object>> mapList=(List)modelParam.getAbExpInfo().get("ab_test002");
|
|
|
|
+ Map<String,Object> configMap;
|
|
|
|
+ for(Map<String,Object> map:mapList){
|
|
|
|
+ if(idList.contains(map.getOrDefault("abExpCode",""))){
|
|
|
|
+ configMap=JSONObject.parseObject(map.get("configValue").toString(),new TypeReference<Map<String,Object>>(){});
|
|
|
|
+ for(Map.Entry<String,Object> entry:configMap.entrySet()){
|
|
|
|
+ modelParam.getExtraParam().put(entry.getKey(),entry.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|