Skip to content

Commit 2f0ac2b

Browse files
(improvement)(chat) add chat plugin webservice demo (#1317)
Co-authored-by: lxwcodemonkey
1 parent 0226ebf commit 2f0ac2b

7 files changed

Lines changed: 46 additions & 10 deletions

File tree

auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/AuthenticationIgnore.java renamed to auth/api/src/main/java/com/tencent/supersonic/auth/api/authentication/annotation/AuthenticationIgnore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.tencent.supersonic.auth.authentication.interceptor;
1+
package com.tencent.supersonic.auth.api.authentication.annotation;
22

33

44
import java.lang.annotation.ElementType;

auth/authentication/src/main/java/com/tencent/supersonic/auth/authentication/interceptor/DefaultAuthenticationInterceptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tencent.supersonic.auth.authentication.interceptor;
22

33

4+
import com.tencent.supersonic.auth.api.authentication.annotation.AuthenticationIgnore;
45
import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig;
56
import com.tencent.supersonic.auth.api.authentication.pojo.User;
67
import com.tencent.supersonic.auth.api.authentication.pojo.UserWithPassword;

chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/build/PluginSemanticQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ protected WebBase fillWebBaseResult(WebBase webPage, PluginParseResult pluginPar
7575
webBaseResult.setUrl(webPage.getUrl());
7676
Map<String, Object> elementValueMap = getElementMap(pluginParseResult);
7777
List<ParamOption> paramOptions = Lists.newArrayList();
78-
if (!CollectionUtils.isEmpty(webPage.getParamOptions()) && !CollectionUtils.isEmpty(elementValueMap)) {
78+
if (!CollectionUtils.isEmpty(webPage.getParamOptions())) {
7979
for (ParamOption paramOption : webPage.getParamOptions()) {
8080
if (paramOption.getDataSetId() != null
8181
&& !parseInfo.getDataSetId().equals(paramOption.getDataSetId())) {

chat/server/src/main/java/com/tencent/supersonic/chat/server/plugin/build/webservice/WebServiceQuery.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public QueryResult build() {
6161
if (data.get("columns") != null) {
6262
queryResult.setQueryColumns((List<QueryColumn>) data.get("columns"));
6363
}
64-
queryResult.setTextResult(String.valueOf(data.get("textInfo")));
64+
queryResult.setTextResult(String.valueOf(data.get("data")));
6565
queryResult.setQueryState(QueryState.SUCCESS);
6666
} catch (Exception e) {
6767
log.info("webServiceResponse result has an exception:{}", e.getMessage());
@@ -80,7 +80,8 @@ protected WebServiceResp buildResponse(PluginParseResult pluginParseResult) {
8080
HttpHeaders headers = new HttpHeaders();
8181
headers.setContentType(MediaType.APPLICATION_JSON);
8282
HttpEntity<String> entity = new HttpEntity<>(JSON.toJSONString(params), headers);
83-
URI requestUrl = UriComponentsBuilder.fromHttpUrl(webBase.getUrl()).build().encode().toUri();
83+
String url = webBase.getUrl() + "?queryText=" + pluginParseResult.getQueryText();
84+
URI requestUrl = UriComponentsBuilder.fromHttpUrl(url).build().encode().toUri();
8485
ResponseEntity responseEntity = null;
8586
Object objectResponse = null;
8687
restTemplate = ContextUtils.getBean(RestTemplate.class);

chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/PluginController.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
package com.tencent.supersonic.chat.server.rest;
22

3+
import com.tencent.supersonic.auth.api.authentication.annotation.AuthenticationIgnore;
34
import com.tencent.supersonic.auth.api.authentication.pojo.User;
45
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
56
import com.tencent.supersonic.chat.api.pojo.request.PluginQueryReq;
67
import com.tencent.supersonic.chat.server.plugin.ChatPlugin;
78
import com.tencent.supersonic.chat.server.service.PluginService;
89
import org.springframework.beans.factory.annotation.Autowired;
9-
import org.springframework.web.bind.annotation.RestController;
10-
import org.springframework.web.bind.annotation.RequestMapping;
11-
import org.springframework.web.bind.annotation.PostMapping;
12-
import org.springframework.web.bind.annotation.PutMapping;
1310
import org.springframework.web.bind.annotation.DeleteMapping;
1411
import org.springframework.web.bind.annotation.PathVariable;
12+
import org.springframework.web.bind.annotation.PostMapping;
13+
import org.springframework.web.bind.annotation.PutMapping;
1514
import org.springframework.web.bind.annotation.RequestBody;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestParam;
17+
import org.springframework.web.bind.annotation.RestController;
18+
1619
import javax.servlet.http.HttpServletRequest;
1720
import javax.servlet.http.HttpServletResponse;
1821
import java.util.List;
@@ -61,4 +64,11 @@ List<ChatPlugin> query(@RequestBody PluginQueryReq pluginQueryReq,
6164
return pluginService.queryWithAuthCheck(pluginQueryReq, user);
6265
}
6366

67+
@AuthenticationIgnore
68+
@PostMapping("/pluginDemo")
69+
public String pluginDemo(@RequestParam("queryText") String queryText,
70+
@RequestBody Object object) {
71+
return String.format("已收到您的问题:%s, 但这只是一个demo~", queryText);
72+
}
73+
6474
}

headless/server/src/main/java/com/tencent/supersonic/headless/server/web/service/impl/DimensionServiceImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ public void batchUpdateStatus(MetaBatchReq metaBatchReq, User user) {
182182

183183
@Override
184184
public void batchUpdateSensitiveLevel(MetaBatchReq metaBatchReq, User user) {
185+
if (CollectionUtils.isEmpty(metaBatchReq.getIds())) {
186+
return;
187+
}
185188
DimensionFilter metaFilter = new DimensionFilter();
186189
metaFilter.setIds(metaBatchReq.getIds());
187190
List<DimensionDO> dimensionDOS = queryDimension(metaFilter);

launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2VisitsDemo.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import com.tencent.supersonic.chat.server.plugin.ChatPlugin;
1515
import com.tencent.supersonic.chat.server.plugin.PluginParseConfig;
1616
import com.tencent.supersonic.chat.server.plugin.build.WebBase;
17+
import com.tencent.supersonic.chat.server.plugin.build.webpage.WebPageQuery;
18+
import com.tencent.supersonic.chat.server.plugin.build.webservice.WebServiceQuery;
1719
import com.tencent.supersonic.common.pojo.JoinCondition;
1820
import com.tencent.supersonic.common.pojo.ModelRela;
1921
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
@@ -105,6 +107,7 @@ public void doRun() {
105107
addTerm(s2Domain);
106108
addTerm_1(s2Domain);
107109
addPlugin(s2DataSet);
110+
addPlugin_1();
108111

109112
//load dict word
110113
loadDictWord();
@@ -504,8 +507,8 @@ public void addAuthGroup_2(ModelResp stayTimeModel) {
504507

505508
private void addPlugin(DataSetResp s2DataSet) {
506509
ChatPlugin plugin1 = new ChatPlugin();
507-
plugin1.setType("WEB_PAGE");
508-
plugin1.setDataSetList(Arrays.asList(s2DataSet.getId()));
510+
plugin1.setType(WebPageQuery.QUERY_MODE);
511+
plugin1.setDataSetList(Collections.singletonList(s2DataSet.getId()));
509512
plugin1.setPattern("用于分析超音数的流量概况,包含UV、PV等核心指标的追踪。P.S. 仅作为示例展示,无实际看板");
510513
plugin1.setName("超音数流量分析看板");
511514
PluginParseConfig pluginParseConfig = new PluginParseConfig();
@@ -520,6 +523,24 @@ private void addPlugin(DataSetResp s2DataSet) {
520523
pluginService.createPlugin(plugin1, user);
521524
}
522525

526+
private void addPlugin_1() {
527+
ChatPlugin plugin1 = new ChatPlugin();
528+
plugin1.setType(WebServiceQuery.QUERY_MODE);
529+
plugin1.setDataSetList(Collections.singletonList(-1L));
530+
plugin1.setPattern("用于分析超音数的流量概况,包含UV、PV等核心指标的追踪。P.S. 仅作为示例展示,无实际内容");
531+
plugin1.setName("超音数流量分析小助手");
532+
PluginParseConfig pluginParseConfig = new PluginParseConfig();
533+
pluginParseConfig.setDescription(plugin1.getPattern());
534+
pluginParseConfig.setName(plugin1.getName());
535+
pluginParseConfig.setExamples(Lists.newArrayList("tom最近访问超音数情况怎么样"));
536+
plugin1.setParseModeConfig(JSONObject.toJSONString(pluginParseConfig));
537+
WebBase webBase = new WebBase();
538+
webBase.setUrl("http://localhost:9080/api/chat/plugin/pluginDemo");
539+
webBase.setParamOptions(Lists.newArrayList());
540+
plugin1.setConfig(JsonUtil.toString(webBase));
541+
pluginService.createPlugin(plugin1, user);
542+
}
543+
523544
private TagObjectResp addTagObjectUser(DomainResp s2Domain) throws Exception {
524545
TagObjectReq tagObjectReq = new TagObjectReq();
525546
tagObjectReq.setDomainId(s2Domain.getId());

0 commit comments

Comments
 (0)