mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 13:07:32 +00:00
(improvement)(Headless) Add a query interface that allows the parser and execute to run simultaneously. (#893)
This commit is contained in:
@@ -1,13 +1,19 @@
|
|||||||
package com.tencent.supersonic.chat.server.rest;
|
package com.tencent.supersonic.chat.server.rest;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatExecuteReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatExecuteReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatParseReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatQueryDataReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatQueryDataReq;
|
||||||
import com.tencent.supersonic.chat.server.service.ChatService;
|
import com.tencent.supersonic.chat.server.service.ChatService;
|
||||||
|
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq;
|
import com.tencent.supersonic.headless.api.pojo.request.DimensionValueReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.QueryReq;
|
import com.tencent.supersonic.headless.api.pojo.request.QueryReq;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.response.ParseResp;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@@ -57,6 +63,25 @@ public class ChatQueryController {
|
|||||||
return chatService.performExecution(chatExecuteReq);
|
return chatService.performExecution(chatExecuteReq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/")
|
||||||
|
public Object query(@RequestBody ChatParseReq chatParseReq,
|
||||||
|
HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws Exception {
|
||||||
|
User user = UserHolder.findUser(request, response);
|
||||||
|
chatParseReq.setUser(user);
|
||||||
|
ParseResp parseResp = chatService.performParsing(chatParseReq);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(parseResp.getSelectedParses())) {
|
||||||
|
throw new InvalidArgumentException("parser error,no selectedParses");
|
||||||
|
}
|
||||||
|
SemanticParseInfo semanticParseInfo = parseResp.getSelectedParses().get(0);
|
||||||
|
ChatExecuteReq chatExecuteReq = ChatExecuteReq.builder().build();
|
||||||
|
BeanUtils.copyProperties(chatParseReq, chatExecuteReq);
|
||||||
|
chatExecuteReq.setQueryId(parseResp.getQueryId());
|
||||||
|
chatExecuteReq.setParseId(semanticParseInfo.getId());
|
||||||
|
return chatService.performExecution(chatExecuteReq);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("queryContext")
|
@PostMapping("queryContext")
|
||||||
public Object queryContext(@RequestBody QueryReq queryCtx,
|
public Object queryContext(@RequestBody QueryReq queryCtx,
|
||||||
HttpServletRequest request, HttpServletResponse response) {
|
HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
|||||||
Reference in New Issue
Block a user