diff --git a/app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/AppVersion.java b/app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/AppVersion.java index c7fd31933..d4960fc76 100644 --- a/app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/AppVersion.java +++ b/app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/AppVersion.java @@ -28,6 +28,8 @@ import static modelengine.fit.jober.aipp.util.UsefulUtils.doIfNull; import static modelengine.fitframework.util.ObjectUtils.cast; +import com.alibaba.fastjson.JSON; + import lombok.Getter; import modelengine.fel.tool.service.ToolService; import modelengine.fit.jade.aipp.model.dto.ModelAccessInfo; @@ -80,6 +82,7 @@ import modelengine.fit.jober.aipp.dto.export.AppExportFlowGraph; import modelengine.fit.jober.aipp.dto.template.TemplateAppCreateDto; import modelengine.fit.jober.aipp.dto.template.TemplateInfoDto; +import modelengine.fit.jober.aipp.entity.AippInstLog; import modelengine.fit.jober.aipp.entity.ChatSession; import modelengine.fit.jober.aipp.enums.AippMetaStatusEnum; import modelengine.fit.jober.aipp.enums.AippTypeEnum; @@ -578,6 +581,10 @@ public void restart(AppTaskInstance instance, Map restartParams, OperationContext context, Consumer onFinished) { List instanceLogs = instance.getLogs(); List chatList = instance.getChats(); + if (CollectionUtils.isEmpty(chatList)) { + LOGGER.error("ChatList is empty. [InstanceId={}]", instance.getId()); + throw new AippParamException(AippErrCode.RE_CHAT_FAILED); + } // 合并参数. AppLog appLog = instanceLogs.iterator().next(); @@ -586,21 +593,37 @@ public void restart(AppTaskInstance instance, Map restartParams, RunContext runContext = new RunContext(new HashMap<>(), context); runContext.setRestartMode(cast(mergedRestartParams.getOrDefault(RESTART_MODE, OVERWRITE.getMode()))); - runContext.setAppId(chatList.get(0).getAppId()); - runContext.setChatId(chatList.get(0).getChatId()); + + QueryChatRsp mostRecentRsp = chatList.get(0); + runContext.setAppId(mostRecentRsp.getAppId()); + runContext.setChatId(mostRecentRsp.getChatId()); runContext.setUserContext(mergedRestartParams); runContext.putAllToBusiness(mergedRestartParams); - runContext.setQuestion(appLog.getLogData().getQuestion()); + runContext.setQuestion(this.getQuestion(appLog.getLogData())); if (chatList.size() == 2) { runContext.setAtChatId(chatList.get(1).getChatId()); } if (runContext.isOverWriteMode()) { instance.overWrite(); } - this.run(runContext, session); + boolean isDebug = + StringUtils.equals(AppState.INACTIVE.getName(), this.getState(mostRecentRsp.getAttributes())); + if (isDebug) { + this.debug(runContext, session); + } else { + this.run(runContext, session); + } onFinished.accept(runContext); } + private String getState(String attributes) { + return ObjectUtils.cast(JsonUtils.parseObject(attributes).get(AippConst.ATTR_CHAT_STATE_KEY)); + } + + private String getQuestion(AippInstLog instLog) { + return JSON.parseObject(instLog.getLogData()).getString("msg"); + } + /** * 获取 icon. * diff --git a/app-builder/jane/plugins/aipp-plugin/src/test/java/modelengine/fit/jober/aipp/domains/appversion/AppVersionTest.java b/app-builder/jane/plugins/aipp-plugin/src/test/java/modelengine/fit/jober/aipp/domains/appversion/AppVersionTest.java index 3930073b5..3e8526b57 100644 --- a/app-builder/jane/plugins/aipp-plugin/src/test/java/modelengine/fit/jober/aipp/domains/appversion/AppVersionTest.java +++ b/app-builder/jane/plugins/aipp-plugin/src/test/java/modelengine/fit/jober/aipp/domains/appversion/AppVersionTest.java @@ -666,8 +666,12 @@ public void testRestartNormally() { AppTaskInstance instance = mock(AppTaskInstance.class); when(AppVersionTest.this.appTaskInstanceService.getInstanceById(anyString(), any())).thenReturn( Optional.of(instance)); - when(instance.getChats()).thenReturn( - List.of(QueryChatRsp.builder().appId("app_version_1").chatId("chat_1").build())); + String attributes = "{\"state\":\"active\"}"; + when(instance.getChats()).thenReturn(List.of(QueryChatRsp.builder() + .appId("app_version_1") + .attributes(attributes) + .chatId("chat_1") + .build())); AppLog appLog = mock(AppLog.class); when(instance.getLogs()).thenReturn(List.of(appLog)); @@ -716,8 +720,12 @@ public void testRestartWithAtChatId() { AppTaskInstance instance = mock(AppTaskInstance.class); when(AppVersionTest.this.appTaskInstanceService.getInstanceById(anyString(), any())).thenReturn( Optional.of(instance)); - when(instance.getChats()).thenReturn( - List.of(QueryChatRsp.builder().appId("app_version_1").chatId("chat_1").build(), atChat)); + String attributes = "{\"state\":\"active\"}"; + when(instance.getChats()).thenReturn(List.of(QueryChatRsp.builder() + .appId("app_version_1") + .chatId("chat_1") + .attributes(attributes) + .build(), atChat)); AppLog appLog = mock(AppLog.class); when(instance.getLogs()).thenReturn(List.of(appLog)); diff --git a/app-builder/jane/services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity/AippInstLog.java b/app-builder/jane/services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity/AippInstLog.java index 8ee061c32..147fbdc6c 100644 --- a/app-builder/jane/services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity/AippInstLog.java +++ b/app-builder/jane/services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity/AippInstLog.java @@ -6,8 +6,6 @@ package modelengine.fit.jober.aipp.entity; -import com.alibaba.fastjson.JSON; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -62,13 +60,4 @@ public class AippInstLog { @Property(description = "历史数据类型 {@link AippInstLogType}") private String logType; - - /** - * 获取 question 数据. - * - * @return {@link String} 问题. - */ - public String getQuestion() { - return JSON.parseObject(this.getLogData()).getString("msg"); - } }