(improvement)(chat) Fix the issue of chatContext not returning and PLAIN_TEXT mode not working. (#1366)

This commit is contained in:
lexluo09
2024-07-07 10:04:27 +08:00
committed by GitHub
parent 64786cb0ef
commit 08ae27ab43

View File

@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
public class SqlExecutor implements ChatExecutor { public class SqlExecutor implements ChatExecutor {
@@ -61,17 +62,20 @@ public class SqlExecutor implements ChatExecutor {
ChatContextService chatContextService = ContextUtils.getBean(ChatContextService.class); ChatContextService chatContextService = ContextUtils.getBean(ChatContextService.class);
ChatContext chatCtx = chatContextService.getOrCreateContext(chatExecuteContext.getChatId()); ChatContext chatCtx = chatContextService.getOrCreateContext(chatExecuteContext.getChatId());
SemanticParseInfo parseInfo = chatExecuteContext.getParseInfo();
if (Objects.isNull(parseInfo.getSqlInfo())
|| StringUtils.isBlank(parseInfo.getSqlInfo().getCorrectS2SQL())) {
return null;
}
QuerySqlReq sqlReq = QuerySqlReq.builder() QuerySqlReq sqlReq = QuerySqlReq.builder()
.sql(chatExecuteContext.getParseInfo().getSqlInfo().getCorrectS2SQL()) .sql(parseInfo.getSqlInfo().getCorrectS2SQL())
.build(); .build();
sqlReq.setSqlInfo(chatExecuteContext.getParseInfo().getSqlInfo()); sqlReq.setSqlInfo(parseInfo.getSqlInfo());
sqlReq.setDataSetId(chatExecuteContext.getParseInfo().getDataSetId()); sqlReq.setDataSetId(parseInfo.getDataSetId());
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
SemanticQueryResp queryResp = semanticLayer.queryByReq(sqlReq, chatExecuteContext.getUser()); SemanticQueryResp queryResp = semanticLayer.queryByReq(sqlReq, chatExecuteContext.getUser());
QueryResult queryResult = new QueryResult(); QueryResult queryResult = new QueryResult();
if (queryResp != null) { if (queryResp != null) {
queryResult.setQueryAuthorization(queryResp.getQueryAuthorization()); queryResult.setQueryAuthorization(queryResp.getQueryAuthorization());
List<Map<String, Object>> resultList = queryResp == null ? new ArrayList<>() List<Map<String, Object>> resultList = queryResp == null ? new ArrayList<>()
@@ -81,16 +85,16 @@ public class SqlExecutor implements ChatExecutor {
queryResult.setQuerySql(queryResp.getSql()); queryResult.setQuerySql(queryResp.getSql());
queryResult.setQueryResults(resultList); queryResult.setQueryResults(resultList);
queryResult.setQueryColumns(columns); queryResult.setQueryColumns(columns);
queryResult.setQueryMode(chatExecuteContext.getParseInfo().getQueryMode()); queryResult.setQueryMode(parseInfo.getQueryMode());
queryResult.setQueryState(QueryState.SUCCESS); queryResult.setQueryState(QueryState.SUCCESS);
chatCtx.setParseInfo(chatExecuteContext.getParseInfo()); chatCtx.setParseInfo(parseInfo);
chatContextService.updateContext(chatCtx); chatContextService.updateContext(chatCtx);
} else { } else {
queryResult.setQueryState(QueryState.INVALID); queryResult.setQueryState(QueryState.INVALID);
queryResult.setQueryMode(chatExecuteContext.getParseInfo().getQueryMode()); queryResult.setQueryMode(parseInfo.getQueryMode());
} }
queryResult.setChatContext(chatCtx.getParseInfo());
return queryResult; return queryResult;
} }