模型字段取值bugfix

This commit is contained in:
2025-02-12 15:07:47 +08:00
parent 49644c99a9
commit 217b499c26
4 changed files with 75 additions and 7 deletions

View File

@@ -38,10 +38,15 @@ public class ModelDTO {
this.errorMsg = errorMsg; this.errorMsg = errorMsg;
} }
public Evaluator getEvaluator() { public Evaluator fetchEvaluator() {
return evaluator; return evaluator;
} }
public String getEvaluatorInfo() {
return evaluator+"";
}
public String getText() { public String getText() {
return text; return text;
} }

View File

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -45,6 +46,8 @@ public class LocalCacheService {
private final Map<String, String> infoMap = new ConcurrentHashMap<>(); private final Map<String, String> infoMap = new ConcurrentHashMap<>();
private volatile boolean stop = false;
// //
@Resource @Resource
@@ -66,8 +69,8 @@ public class LocalCacheService {
logger.info("LocalCacheService_init_start"); logger.info("LocalCacheService_init_start");
// 这里先不抛异常,后面会定时刷新缓存 // 这里先不抛异常,后面会定时刷新缓存
updateAllCache(false); updateAllCache(false);
//
CommUtil.doSleep(UPDATE_SLEEP_TIME_MS); // CommUtil.doSleep(UPDATE_SLEEP_TIME_MS);
Thread t = new Thread(); Thread t = new Thread();
t.start(); t.start();
@@ -76,6 +79,11 @@ public class LocalCacheService {
} }
@PreDestroy
public void preDestroy(){
stop = true;
}
public Map<String,Object> getInfo(){ public Map<String,Object> getInfo(){
Map<String,Object> info = new HashMap<>(); Map<String,Object> info = new HashMap<>();
info.put("runCount",runCount.longValue()); info.put("runCount",runCount.longValue());
@@ -173,10 +181,17 @@ public class LocalCacheService {
private class LocalCacheUpdateThread extends Thread{ private class LocalCacheUpdateThread extends Thread{
public void run(){ public void run(){
while(true) {
if(stop){
logger.info("LocalCacheUpdateThread_exit_for_stop");
break;
}
CommUtil.doSleep(UPDATE_SLEEP_TIME_MS);
runCount.getAndIncrement(); runCount.getAndIncrement();
updateAllCache(false); updateAllCache(false);
} }
} }
}

View File

@@ -1,5 +1,6 @@
package com.fibo.ddp.enginex.riskengine.runner.api; package com.fibo.ddp.enginex.riskengine.runner.api;
import com.fibo.ddp.common.service.cache.LocalCacheService;
import com.fibo.ddp.common.service.common.runner.RunnerSessionManager; import com.fibo.ddp.common.service.common.runner.RunnerSessionManager;
import com.fibo.ddp.common.service.common.runner.SessionData; import com.fibo.ddp.common.service.common.runner.SessionData;
import com.fibo.ddp.enginex.riskengine.runner.business.DecisionApiBizData; import com.fibo.ddp.enginex.riskengine.runner.business.DecisionApiBizData;
@@ -27,6 +28,9 @@ public class RiskEngineApi {
@Autowired @Autowired
public RiskEngineBusiness riskEngineBusiness; public RiskEngineBusiness riskEngineBusiness;
@Autowired
LocalCacheService localCacheService;
@RequestMapping(value = "/decision", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") @RequestMapping(value = "/decision", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public String decision(@RequestBody DecisionApiRequest apiRequest) { public String decision(@RequestBody DecisionApiRequest apiRequest) {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
@@ -65,4 +69,21 @@ public class RiskEngineApi {
} }
return list; return list;
} }
@RequestMapping(value = "/getLocalCacheInfo")
public Object getLocalCacheInfo(){
return localCacheService.getInfo();
}
@RequestMapping(value = "/getFieldCache")
public Object getFieldCache(){
return localCacheService.getFieldsMap();
}
@RequestMapping(value = "/getModelCache")
public Object getModelCache(){
return localCacheService.getModelMap();
}
} }

View File

@@ -2,9 +2,11 @@ package com.fibo.ddp.enginex.runner.node.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.datax.datamanage.Field;
import com.fibo.ddp.common.model.enginex.risk.EngineNode; import com.fibo.ddp.common.model.enginex.risk.EngineNode;
import com.fibo.ddp.common.model.strategyx.aimodel.MachineLearningModels; import com.fibo.ddp.common.model.strategyx.aimodel.MachineLearningModels;
import com.fibo.ddp.common.model.strategyx.strategyout.StrategyOutput; import com.fibo.ddp.common.model.strategyx.strategyout.StrategyOutput;
import com.fibo.ddp.common.service.cache.LocalCacheService;
import com.fibo.ddp.common.service.datax.runner.CommonService; import com.fibo.ddp.common.service.datax.runner.CommonService;
import com.fibo.ddp.common.service.datax.runner.ExecuteUtils; import com.fibo.ddp.common.service.datax.runner.ExecuteUtils;
import com.fibo.ddp.common.service.strategyx.aimodel.ModelsService; import com.fibo.ddp.common.service.strategyx.aimodel.ModelsService;
@@ -37,6 +39,9 @@ public class ModelNode implements EngineRunnerNode {
@Resource @Resource
private StrategyOutputService outputService; private StrategyOutputService outputService;
@Autowired
LocalCacheService localCacheService;
private List<Long> getExecuteVersionIdList(EngineNode engineNode) { private List<Long> getExecuteVersionIdList(EngineNode engineNode) {
return ExecuteUtils.getExecuteIdList(engineNode, "modelId"); return ExecuteUtils.getExecuteIdList(engineNode, "modelId");
} }
@@ -82,10 +87,19 @@ public class ModelNode implements EngineRunnerNode {
Map<String, Object> input = new HashMap<>(); Map<String, Object> input = new HashMap<>();
String[] modelFieldArr = models.getModelField().split(","); String[] modelFieldArr = models.getModelField().split(",");
// TODO mappingFieldArr 是 字段id t_field.id ,需要根据 id 取出 field_en // mappingFieldArr 是 字段id t_field.id ,需要根据 id 取出 field_en
String[] mappingFieldArr = models.getMappingField().split(","); String[] mappingFieldArr = models.getMappingField().split(",");
// 获取字段缓存信息
Map<String, Field> fieldMap = localCacheService.getFieldsMap();
for (int i = 0; i < modelFieldArr.length; i++) { for (int i = 0; i < modelFieldArr.length; i++) {
input.put(modelFieldArr[i], inputParam.get(mappingFieldArr[i])); String fieldId = mappingFieldArr[i];
// 根据字段id 获取字段英文名
String fieldEn = getFieldEnById(fieldMap,fieldId);
if(fieldEn!=null) {
input.put(modelFieldArr[i], inputParam.get(fieldEn));
}
} }
// 调用模型 // 调用模型
double modelResult = 0d; double modelResult = 0d;
@@ -126,4 +140,17 @@ public class ModelNode implements EngineRunnerNode {
map.put(resultKey, executeResult); map.put(resultKey, executeResult);
ExecuteUtils.terminalCondition(engineNode, inputParam, outMap, map); ExecuteUtils.terminalCondition(engineNode, inputParam, outMap, map);
} }
// 根据字段id 获取字段英文名
private static String getFieldEnById(Map<String, Field> fieldMap,String id){
if(fieldMap==null || id==null){
return null;
}
Field f = fieldMap.get(id);
if(f==null){
return null;
}
return f.getFieldEn();
}
} }