diff --git a/virtual-patient-model/src/main/java/com/supervision/model/RasaModelInfo.java b/virtual-patient-model/src/main/java/com/supervision/model/RasaModelInfo.java index fd3b4dd2..f11967e7 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/RasaModelInfo.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/RasaModelInfo.java @@ -58,10 +58,22 @@ public class RasaModelInfo implements Serializable { @ApiModelProperty("启动状态") private Integer serverStatus; - @ApiModelProperty("执行shell命令") + + @ApiModelProperty("执行train shell命令") + @TableField(typeHandler = StringListTypeHandler.class) + private List trainCmd; + + + @ApiModelProperty("执行run shell命令") @TableField(typeHandler = StringListTypeHandler.class) - private List cmd; + private List runCmd; + + + @ApiModelProperty("训练日志") + private String trainLog; + @ApiModelProperty("运行日志") + private String runLog; /** diff --git a/virtual-patient-model/src/main/resources/mapper/RasaModelInfoMapper.xml b/virtual-patient-model/src/main/resources/mapper/RasaModelInfoMapper.xml index e40299ad..ce7bd74e 100644 --- a/virtual-patient-model/src/main/resources/mapper/RasaModelInfoMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/RasaModelInfoMapper.xml @@ -12,15 +12,19 @@ - + + + + - id,model_id,description, - port,tran_status,server_status,cmd,create_user_id,create_time, + id,model_id,description,port,tran_status,server_status, + train_cmd,run_cmd,train_log,run_log, + create_user_id,create_time, update_user_id,update_time diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaModelManager.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaModelManager.java index a9e6ca28..34d7f645 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaModelManager.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/RasaModelManager.java @@ -31,7 +31,7 @@ public class RasaModelManager { // 1. 查找出记录表中存活的服务 List rasaModelInfos = rasaModeService.listActive(); - List activeRasaList = rasaModelInfos.stream().filter(info -> CollectionUtil.isNotEmpty(info.getCmd()) && null != info.getPort()).collect(Collectors.toList()); + List activeRasaList = rasaModelInfos.stream().filter(info -> CollectionUtil.isNotEmpty(info.getRunCmd()) && null != info.getPort()).collect(Collectors.toList()); if (CollectionUtil.isEmpty(activeRasaList)){ log.info("wakeUpInterruptService: no rasa service need wake up ..."); @@ -42,10 +42,12 @@ public class RasaModelManager { for (RasaModelInfo rasaModelInfo : activeRasaList) { if (!PortUtil.portIsActive(rasaModelInfo.getPort())){ try { - rasaModelInfo.getCmd().add(String.valueOf(rasaModelInfo.getPort())); - List outMessageList = rasaCmdService.execCmd(rasaModelInfo.getCmd(), + rasaModelInfo.getRunCmd().add(String.valueOf(rasaModelInfo.getPort())); + List outMessageList = rasaCmdService.execCmd(rasaModelInfo.getRunCmd(), s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.RUN_SUCCESS_MESSAGE), 300); + rasaModelInfo.setTrainLog(String.join("\r\n",outMessageList)); + rasaModeService.updateById(rasaModelInfo); if (!runIsSuccess(outMessageList)){ log.info("wakeUpInterruptServer: restart server port for {} failed,details info : {}",rasaModelInfo.getPort(),String.join("\r\n",outMessageList)); } @@ -53,7 +55,7 @@ public class RasaModelManager { log.info("wakeUpInterruptServer: restart server port for {} failed",rasaModelInfo.getPort()); throw new RuntimeException(e); } - log.info("wakeUpInterruptServer: restart server port for {} success!",rasaModelInfo.getPort()); + log.info("wakeUpInterruptServer: restart server port for {} success !",rasaModelInfo.getPort()); }else { log.info("wakeUpInterruptServer: port:{} is run..",rasaModelInfo.getPort()); } diff --git a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaCmdServiceImpl.java b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaCmdServiceImpl.java index e286f509..d6700692 100644 --- a/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaCmdServiceImpl.java +++ b/virtual-patient-rasa/src/main/java/com/supervision/rasa/service/impl/RasaCmdServiceImpl.java @@ -61,12 +61,14 @@ public class RasaCmdServiceImpl implements RasaCmdService { public String trainExec(RasaCmdArgumentVo argument) throws ExecutionException, InterruptedException, TimeoutException { // /rasa/v3_jiazhuangxian/domain.yml domain的路径,应该是从zip文件中加压出来的文件的路径后面拼上/domain.yml - String domain = replaceDuplicateSeparator(String.join(File.separator,dataPath,argument.getModelId(),"domain.yml")); + // /rasa/v3_jiazhuangxian/ yml文件的路径,应该是从zip文件中加压出来的文件的路径,在配置文件中配置 String localDataPath = replaceDuplicateSeparator(String.join(File.separator,dataPath,argument.getModelId())); + // /rasa/models 生成出来的模型的存放路径,也写在配置文件里面 String localModelsPath = replaceDuplicateSeparator(String.join(File.separator,modelsPath,argument.getModelId())); + List cmds = ListUtil.toList(shellEnv, trainShell,config,localDataPath,domain,localModelsPath); cmds.add(argument.getFixedModelName()); @@ -75,14 +77,17 @@ public class RasaCmdServiceImpl implements RasaCmdService { List outMessage = execCmd(cmds, s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.TRAN_SUCCESS_MESSAGE), 300); + String outMessageString = String.join("\r\n", outMessage); //保存 模型信息 RasaModelInfo rasaModelInfo = new RasaModelInfo(); rasaModelInfo.setModelId(argument.getModelId()); rasaModelInfo.setTranStatus(trainIsSuccess(outMessage)?1:0); rasaModelInfo.setServerStatus(-1); + rasaModelInfo.setTrainCmd(cmds); + rasaModelInfo.setTrainLog(outMessageString); rasaModeService.saveOrUpdateByModelId(rasaModelInfo); - return String.join("\r\n",outMessage); + return outMessageString; } @@ -99,21 +104,24 @@ public class RasaCmdServiceImpl implements RasaCmdService { // 2.1 -m 参数对应的值 /rasa/models/aaa1111.tar.gz 指run的模型的路径,/rasa/models应该来自于配置文件,和训练时的--out是同一配置项; // aaa1111.tar.gz这个,前面的文件名应该是--fixed-model-name指定的,.tar.gz是文件后缀,代码拼接 String localPath = replaceDuplicateSeparator(String.join(File.separator,modelsPath,argument.getModelId(),argument.getFixedModelName()+".tar.gz")); + List cmds = ListUtil.toList(shellEnv, runShell,localPath,endpoints,String.valueOf(port)); log.info("runExec cmd : {}",StrUtil.join(" ",cmds)); List outMessageList = execCmd(cmds, s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.RUN_SUCCESS_MESSAGE), 300); + String outMessageString = String.join("\r\n", outMessageList); // 3. 更新模型信息 RasaModelInfo rasaModelInfo = new RasaModelInfo(); rasaModelInfo.setModelId(argument.getModelId()); rasaModelInfo.setPort(port); rasaModelInfo.setServerStatus(runIsSuccess(outMessageList)?1:0); - rasaModelInfo.setCmd(ListUtil.toList(shellEnv, runShell,localPath,endpoints)); + rasaModelInfo.setRunCmd(ListUtil.toList(shellEnv, runShell,localPath,endpoints)); + rasaModelInfo.setRunLog(outMessageString); rasaModeService.saveOrUpdateByModelId(rasaModelInfo); - return String.join("\r\n",outMessageList); + return outMessageString; }