Skip to content

Commit 23ecfad

Browse files
author
wuayee
committed
[appBuilder] 处理表单无法重新对话的问题
1 parent 5c90521 commit 23ecfad

File tree

3 files changed

+38
-19
lines changed
  • app-builder/jane
    • plugins/aipp-plugin/src
    • services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity

3 files changed

+38
-19
lines changed

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/domains/appversion/AppVersion.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import static modelengine.fit.jober.aipp.util.UsefulUtils.doIfNull;
2929
import static modelengine.fitframework.util.ObjectUtils.cast;
3030

31+
import com.alibaba.fastjson.JSON;
32+
3133
import lombok.Getter;
3234
import modelengine.fel.tool.service.ToolService;
3335
import modelengine.fit.jade.aipp.model.dto.ModelAccessInfo;
@@ -80,6 +82,7 @@
8082
import modelengine.fit.jober.aipp.dto.export.AppExportFlowGraph;
8183
import modelengine.fit.jober.aipp.dto.template.TemplateAppCreateDto;
8284
import modelengine.fit.jober.aipp.dto.template.TemplateInfoDto;
85+
import modelengine.fit.jober.aipp.entity.AippInstLog;
8386
import modelengine.fit.jober.aipp.entity.ChatSession;
8487
import modelengine.fit.jober.aipp.enums.AippMetaStatusEnum;
8588
import modelengine.fit.jober.aipp.enums.AippTypeEnum;
@@ -578,6 +581,9 @@ public void restart(AppTaskInstance instance, Map<String, Object> restartParams,
578581
OperationContext context, Consumer<RunContext> onFinished) {
579582
List<AppLog> instanceLogs = instance.getLogs();
580583
List<QueryChatRsp> chatList = instance.getChats();
584+
if (CollectionUtils.isEmpty(chatList)) {
585+
return;
586+
}
581587

582588
// 合并参数.
583589
AppLog appLog = instanceLogs.iterator().next();
@@ -586,21 +592,37 @@ public void restart(AppTaskInstance instance, Map<String, Object> restartParams,
586592

587593
RunContext runContext = new RunContext(new HashMap<>(), context);
588594
runContext.setRestartMode(cast(mergedRestartParams.getOrDefault(RESTART_MODE, OVERWRITE.getMode())));
589-
runContext.setAppId(chatList.get(0).getAppId());
590-
runContext.setChatId(chatList.get(0).getChatId());
595+
596+
QueryChatRsp lastQueryChatRsp = chatList.get(0);
597+
runContext.setAppId(lastQueryChatRsp.getAppId());
598+
runContext.setChatId(lastQueryChatRsp.getChatId());
591599
runContext.setUserContext(mergedRestartParams);
592600
runContext.putAllToBusiness(mergedRestartParams);
593-
runContext.setQuestion(appLog.getLogData().getQuestion());
601+
runContext.setQuestion(this.getQuestion(appLog.getLogData()));
594602
if (chatList.size() == 2) {
595603
runContext.setAtChatId(chatList.get(1).getChatId());
596604
}
597605
if (runContext.isOverWriteMode()) {
598606
instance.overWrite();
599607
}
600-
this.run(runContext, session);
608+
boolean isDebug =
609+
StringUtils.equals(AppState.INACTIVE.getName(), this.getState(lastQueryChatRsp.getAttributes()));
610+
if (isDebug) {
611+
this.debug(runContext, session);
612+
} else {
613+
this.run(runContext, session);
614+
}
601615
onFinished.accept(runContext);
602616
}
603617

618+
private String getState(String attributes) {
619+
return ObjectUtils.cast(JsonUtils.parseObject(attributes).get(AippConst.ATTR_CHAT_STATE_KEY));
620+
}
621+
622+
private String getQuestion(AippInstLog instLog) {
623+
return JSON.parseObject(instLog.getLogData()).getString("msg");
624+
}
625+
604626
/**
605627
* 获取 icon.
606628
*

app-builder/jane/plugins/aipp-plugin/src/test/java/modelengine/fit/jober/aipp/domains/appversion/AppVersionTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -666,8 +666,12 @@ public void testRestartNormally() {
666666
AppTaskInstance instance = mock(AppTaskInstance.class);
667667
when(AppVersionTest.this.appTaskInstanceService.getInstanceById(anyString(), any())).thenReturn(
668668
Optional.of(instance));
669-
when(instance.getChats()).thenReturn(
670-
List.of(QueryChatRsp.builder().appId("app_version_1").chatId("chat_1").build()));
669+
String attributes = "{\"state\":\"active\"}";
670+
when(instance.getChats()).thenReturn(List.of(QueryChatRsp.builder()
671+
.appId("app_version_1")
672+
.attributes(attributes)
673+
.chatId("chat_1")
674+
.build()));
671675

672676
AppLog appLog = mock(AppLog.class);
673677
when(instance.getLogs()).thenReturn(List.of(appLog));
@@ -716,8 +720,12 @@ public void testRestartWithAtChatId() {
716720
AppTaskInstance instance = mock(AppTaskInstance.class);
717721
when(AppVersionTest.this.appTaskInstanceService.getInstanceById(anyString(), any())).thenReturn(
718722
Optional.of(instance));
719-
when(instance.getChats()).thenReturn(
720-
List.of(QueryChatRsp.builder().appId("app_version_1").chatId("chat_1").build(), atChat));
723+
String attributes = "{\"state\":\"active\"}";
724+
when(instance.getChats()).thenReturn(List.of(QueryChatRsp.builder()
725+
.appId("app_version_1")
726+
.chatId("chat_1")
727+
.attributes(attributes)
728+
.build(), atChat));
721729

722730
AppLog appLog = mock(AppLog.class);
723731
when(instance.getLogs()).thenReturn(List.of(appLog));

app-builder/jane/services/aipp-service/src/main/java/modelengine/fit/jober/aipp/entity/AippInstLog.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
package modelengine.fit.jober.aipp.entity;
88

9-
import com.alibaba.fastjson.JSON;
10-
119
import lombok.AllArgsConstructor;
1210
import lombok.Builder;
1311
import lombok.Data;
@@ -62,13 +60,4 @@ public class AippInstLog {
6260

6361
@Property(description = "历史数据类型 {@link AippInstLogType}")
6462
private String logType;
65-
66-
/**
67-
* 获取 question 数据.
68-
*
69-
* @return {@link String} 问题.
70-
*/
71-
public String getQuestion() {
72-
return JSON.parseObject(this.getLogData()).getString("msg");
73-
}
7463
}

0 commit comments

Comments
 (0)