mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:18:23 +00:00
[improvement](knowledge) add dataSource filter sql for fillKnowledgeDimValue (#402)
Co-authored-by: kanedai <kanedai@tencent.com>
This commit is contained in:
@@ -19,6 +19,7 @@ import com.tencent.supersonic.knowledge.dictionary.DictUpdateMode;
|
||||
import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
import com.tencent.supersonic.semantic.api.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -139,20 +141,14 @@ public class DictMetaHelper {
|
||||
ChatDefaultRichConfigResp chatDefaultConfig =
|
||||
chaConfigRichDesc.getChatAggRichConfig().getChatDefaultConfig();
|
||||
|
||||
KnowledgeAdvancedConfig globalKnowledgeConfigAgg = chaConfigRichDesc.getChatAggRichConfig()
|
||||
.getGlobalKnowledgeConfig();
|
||||
List<KnowledgeInfoReq> knowledgeAggInfo =
|
||||
chaConfigRichDesc.getChatAggRichConfig().getKnowledgeInfos();
|
||||
|
||||
KnowledgeAdvancedConfig globalKnowledgeConfigDetail = chaConfigRichDesc.getChatDetailRichConfig()
|
||||
.getGlobalKnowledgeConfig();
|
||||
List<KnowledgeInfoReq> knowledgeDetailInfo =
|
||||
chaConfigRichDesc.getChatDetailRichConfig().getKnowledgeInfos();
|
||||
|
||||
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
|
||||
modelId, globalKnowledgeConfigDetail);
|
||||
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
|
||||
modelId, globalKnowledgeConfigAgg);
|
||||
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
|
||||
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
|
||||
|
||||
|
||||
}
|
||||
@@ -161,8 +157,9 @@ public class DictMetaHelper {
|
||||
private void fillKnowledgeDimValue(List<KnowledgeInfoReq> knowledgeInfos,
|
||||
ChatDefaultRichConfigResp chatDefaultConfig,
|
||||
List<DimValueDO> dimValueDOList,
|
||||
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId,
|
||||
KnowledgeAdvancedConfig globalKnowledgeConfigDetail) {
|
||||
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId) {
|
||||
Map<Long, DimensionResp> dimIdAndRespPair = queryDimensionRespByModelId(
|
||||
new ArrayList<>(Arrays.asList(modelId)));
|
||||
if (!CollectionUtils.isEmpty(knowledgeInfos)) {
|
||||
List<Dim4Dict> dimensions = new ArrayList<>();
|
||||
List<DefaultMetric> defaultMetricDescList = new ArrayList<>();
|
||||
@@ -202,9 +199,14 @@ public class DictMetaHelper {
|
||||
= knowledgeInfo.getKnowledgeAdvancedConfig();
|
||||
BeanUtils.copyProperties(knowledgeAdvancedConfig, dim4Dict);
|
||||
|
||||
if (Objects.nonNull(globalKnowledgeConfigDetail)
|
||||
&& !CollectionUtils.isEmpty(globalKnowledgeConfigDetail.getRuleList())) {
|
||||
dim4Dict.getRuleList().addAll(globalKnowledgeConfigDetail.getRuleList());
|
||||
if (Objects.nonNull(dimIdAndRespPair)
|
||||
&& dimIdAndRespPair.containsKey(dim4Dict.getDimId())) {
|
||||
String datasourceFilterSql = dimIdAndRespPair.get(
|
||||
dim4Dict.getDimId()).getDatasourceFilterSql();
|
||||
if (StringUtils.isNotEmpty(datasourceFilterSql)) {
|
||||
dim4Dict.getRuleList().add(datasourceFilterSql);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
dimensions.add(dim4Dict);
|
||||
@@ -221,6 +223,18 @@ public class DictMetaHelper {
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Long, DimensionResp> queryDimensionRespByModelId(List<Long> modelIds) {
|
||||
Map<Long, DimensionResp> dimIdAndRespPair = new HashMap<>();
|
||||
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
|
||||
pageDimensionCmd.setModelIds(modelIds);
|
||||
PageInfo<DimensionResp> dimensionPage = semanticInterpreter.getDimensionPage(pageDimensionCmd);
|
||||
if (Objects.nonNull(dimensionPage) && !CollectionUtils.isEmpty(dimensionPage.getList())) {
|
||||
List<DimensionResp> dimList = dimensionPage.getList();
|
||||
dimIdAndRespPair = dimList.stream().collect(Collectors.toMap(DimensionResp::getId, v -> v, (v1, v2) -> v2));
|
||||
}
|
||||
return dimIdAndRespPair;
|
||||
}
|
||||
|
||||
private String queryDataSourceByDimId(Long id) {
|
||||
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
|
||||
pageDimensionCmd.setId(id.toString());
|
||||
|
||||
@@ -28,6 +28,8 @@ public class DimensionResp extends SchemaItem {
|
||||
private String datasourceName;
|
||||
|
||||
private String datasourceBizName;
|
||||
|
||||
private String datasourceFilterSql;
|
||||
//DATE ID CATEGORY
|
||||
private String semanticType;
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@ public class DimensionConverter {
|
||||
if (dimensionDO.getDefaultValues() != null) {
|
||||
dimensionResp.setDefaultValues(JSONObject.parseObject(dimensionDO.getDefaultValues(), List.class));
|
||||
}
|
||||
dimensionResp.setDatasourceFilterSql(
|
||||
datasourceRespMap.getOrDefault(dimensionResp.getDatasourceId(), new DatasourceResp()).getFilterSql());
|
||||
if (Strings.isNotEmpty(dimensionDO.getDimValueMaps())) {
|
||||
dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user