(improvement)(launcher) Optimize Demo to distinguish domain and model sets (#1056)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2024-05-30 19:39:23 +08:00
committed by GitHub
parent aedabd24f7
commit b4bc92e586
16 changed files with 118 additions and 173 deletions

View File

@@ -37,9 +37,9 @@ public class ParseResultFormatProcessor implements ParseResultProcessor {
if (!CollectionUtils.isEmpty(dimensionNames)) { if (!CollectionUtils.isEmpty(dimensionNames)) {
textBuilder.append("**维度:** ").append(String.join(",", dimensionNames)); textBuilder.append("**维度:** ").append(String.join(",", dimensionNames));
} }
textBuilder.append("\n**筛选条件:**\n"); textBuilder.append("\n\n**筛选条件:** \n");
if (parseInfo.getDateInfo() != null) { if (parseInfo.getDateInfo() != null) {
textBuilder.append("数据时间:").append(parseInfo.getDateInfo().getStartDate()).append("~") textBuilder.append("**数据时间:** ").append(parseInfo.getDateInfo().getStartDate()).append("~")
.append(parseInfo.getDateInfo().getEndDate()).append(" "); .append(parseInfo.getDateInfo().getEndDate()).append(" ");
} }
if (!CollectionUtils.isEmpty(parseInfo.getDimensionFilters()) if (!CollectionUtils.isEmpty(parseInfo.getDimensionFilters())
@@ -47,7 +47,7 @@ public class ParseResultFormatProcessor implements ParseResultProcessor {
Set<QueryFilter> queryFilters = parseInfo.getDimensionFilters(); Set<QueryFilter> queryFilters = parseInfo.getDimensionFilters();
queryFilters.addAll(parseInfo.getMetricFilters()); queryFilters.addAll(parseInfo.getMetricFilters());
for (QueryFilter queryFilter : queryFilters) { for (QueryFilter queryFilter : queryFilters) {
textBuilder.append(queryFilter.getName()) textBuilder.append("**").append(queryFilter.getName()).append("**")
.append(" ") .append(" ")
.append(queryFilter.getOperator().getValue()) .append(queryFilter.getOperator().getValue())
.append(" ") .append(" ")

View File

@@ -1,11 +1,10 @@
package com.tencent.supersonic.headless.api.pojo.request; package com.tencent.supersonic.headless.api.pojo.request;
import com.tencent.supersonic.common.pojo.RecordInfo;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class CanvasReq { public class CanvasReq extends RecordInfo {
private Long id; private Long id;
@@ -13,14 +12,6 @@ public class CanvasReq {
private String type; private String type;
private Date createdAt;
private String createdBy;
private Date updatedAt;
private String updatedBy;
private String config; private String config;
} }

View File

@@ -48,12 +48,8 @@ public class OnePassSCSqlGenStrategy extends SqlGenStrategy {
} }
); );
//3.format response. //3.format response.
List<String> schemaLinkingResults = llmResults.stream()
.map(llmResult -> OutputFormat.getSchemaLinks(llmResult)).collect(Collectors.toList());
List<String> candidateSortedList = OutputFormat.formatList(schemaLinkingResults);
Pair<String, Map<String, Double>> linkingMap = OutputFormat.selfConsistencyVote(candidateSortedList);
List<String> sqlList = llmResults.stream() List<String> sqlList = llmResults.stream()
.map(llmResult -> OutputFormat.getSql(llmResult)).collect(Collectors.toList()); .map(OutputFormat::getSql).collect(Collectors.toList());
Pair<String, Map<String, Double>> sqlMapPair = OutputFormat.selfConsistencyVote(sqlList); Pair<String, Map<String, Double>> sqlMapPair = OutputFormat.selfConsistencyVote(sqlList);

View File

@@ -45,7 +45,6 @@ public class TwoPassSCSqlGenStrategy extends SqlGenStrategy {
} }
); );
List<String> sortedList = OutputFormat.formatList(linkingResults); List<String> sortedList = OutputFormat.formatList(linkingResults);
Pair<String, Map<String, Double>> linkingMap = OutputFormat.selfConsistencyVote(sortedList);
//3.generator sql prompt,and parallel generate response. //3.generator sql prompt,and parallel generate response.
List<String> sqlPromptPool = promptGenerator.generateSqlPromptPool(llmReq, sortedList, exampleListPool); List<String> sqlPromptPool = promptGenerator.generateSqlPromptPool(llmReq, sortedList, exampleListPool);
List<String> sqlTaskPool = new CopyOnWriteArrayList<>(); List<String> sqlTaskPool = new CopyOnWriteArrayList<>();

View File

@@ -1,18 +0,0 @@
package com.tencent.supersonic.headless.server.persistence.repository;
import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO;
import java.util.List;
public interface CanvasRepository {
List<CanvasDO> getCanvasList(Long domainId);
CanvasDO getCanvasById(Long id);
void deleteCanvas(Long id);
void createCanvas(CanvasDO canvasDO);
void updateCanvas(CanvasDO canvasDO);
}

View File

@@ -1,48 +0,0 @@
package com.tencent.supersonic.headless.server.persistence.repository.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO;
import com.tencent.supersonic.headless.server.persistence.mapper.CanvasDOMapper;
import com.tencent.supersonic.headless.server.persistence.repository.CanvasRepository;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class CanvasRepositoryImpl implements CanvasRepository {
private CanvasDOMapper canvasDOMapper;
public CanvasRepositoryImpl(CanvasDOMapper canvasDOMapper) {
this.canvasDOMapper = canvasDOMapper;
}
@Override
public List<CanvasDO> getCanvasList(Long domainId) {
QueryWrapper<CanvasDO> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(CanvasDO::getDomainId, domainId);
return canvasDOMapper.selectList(wrapper);
}
@Override
public CanvasDO getCanvasById(Long id) {
return canvasDOMapper.selectById(id);
}
@Override
public void deleteCanvas(Long id) {
canvasDOMapper.deleteById(id);
}
@Override
public void createCanvas(CanvasDO canvasDO) {
canvasDOMapper.insert(canvasDO);
}
@Override
public void updateCanvas(CanvasDO canvasDO) {
canvasDOMapper.updateById(canvasDO);
}
}

View File

@@ -75,8 +75,8 @@ public class SqlInfoProcessor implements ResultProcessor {
} }
SqlInfo sqlInfo = parseInfo.getSqlInfo(); SqlInfo sqlInfo = parseInfo.getSqlInfo();
if (semanticQuery instanceof LLMSqlQuery) { if (semanticQuery instanceof LLMSqlQuery) {
keyPipelineLog.info("SqlInfoProcessor results:\nParsed S2SQL:{}\nCorrected S2SQL:{}\nFinal SQL:{}", sqlInfo.getS2SQL(), keyPipelineLog.info("SqlInfoProcessor results:\nParsed S2SQL:{}\nCorrected S2SQL:{}\nFinal SQL:{}",
sqlInfo.getCorrectS2SQL(), explainSql); sqlInfo.getS2SQL(), sqlInfo.getCorrectS2SQL(), explainSql);
} }
sqlInfo.setQuerySQL(explainSql); sqlInfo.setQuerySQL(explainSql);
} }

View File

@@ -6,7 +6,8 @@ import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.pojo.request.CanvasReq; import com.tencent.supersonic.headless.api.pojo.request.CanvasReq;
import com.tencent.supersonic.headless.api.pojo.response.CanvasSchemaResp; import com.tencent.supersonic.headless.api.pojo.response.CanvasSchemaResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO; import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO;
import com.tencent.supersonic.headless.server.service.impl.CanvasServiceImpl; import com.tencent.supersonic.headless.server.service.CanvasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
@@ -23,11 +24,8 @@ import java.util.List;
@RequestMapping("/api/semantic/viewInfo") @RequestMapping("/api/semantic/viewInfo")
public class CanvasController { public class CanvasController {
private CanvasServiceImpl canvasService; @Autowired
private CanvasService canvasService;
public CanvasController(CanvasServiceImpl canvasService) {
this.canvasService = canvasService;
}
@PostMapping("/createOrUpdateViewInfo") @PostMapping("/createOrUpdateViewInfo")
public CanvasDO createOrUpdateCanvas(@RequestBody CanvasReq canvasReq, HttpServletRequest request, public CanvasDO createOrUpdateCanvas(@RequestBody CanvasReq canvasReq, HttpServletRequest request,

View File

@@ -0,0 +1,19 @@
package com.tencent.supersonic.headless.server.service;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.pojo.request.CanvasReq;
import com.tencent.supersonic.headless.api.pojo.response.CanvasSchemaResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO;
import java.util.List;
public interface CanvasService {
List<CanvasDO> getCanvasList(Long domainId);
List<CanvasSchemaResp> getCanvasSchema(Long domainId, User user);
CanvasDO createOrUpdateCanvas(CanvasReq canvasReq, User user);
void deleteCanvas(Long id);
}

View File

@@ -1,49 +1,49 @@
package com.tencent.supersonic.headless.server.service.impl; package com.tencent.supersonic.headless.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType; import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.headless.api.pojo.request.CanvasReq; import com.tencent.supersonic.headless.api.pojo.request.CanvasReq;
import com.tencent.supersonic.headless.api.pojo.response.CanvasSchemaResp;
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.CanvasSchemaResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO; import com.tencent.supersonic.headless.server.persistence.dataobject.CanvasDO;
import com.tencent.supersonic.headless.server.persistence.repository.CanvasRepository; import com.tencent.supersonic.headless.server.persistence.mapper.CanvasDOMapper;
import com.tencent.supersonic.headless.server.pojo.MetaFilter; import com.tencent.supersonic.headless.server.pojo.MetaFilter;
import com.tencent.supersonic.headless.server.service.CanvasService;
import com.tencent.supersonic.headless.server.service.DimensionService; import com.tencent.supersonic.headless.server.service.DimensionService;
import com.tencent.supersonic.headless.server.service.MetricService; import com.tencent.supersonic.headless.server.service.MetricService;
import com.tencent.supersonic.headless.server.service.ModelService; import com.tencent.supersonic.headless.server.service.ModelService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
public class CanvasServiceImpl { public class CanvasServiceImpl extends ServiceImpl<CanvasDOMapper, CanvasDO> implements CanvasService {
private CanvasRepository canvasRepository;
@Autowired
private ModelService modelService; private ModelService modelService;
@Autowired
private DimensionService dimensionService; private DimensionService dimensionService;
@Autowired
private MetricService metricService; private MetricService metricService;
public CanvasServiceImpl(CanvasRepository canvasRepository, ModelService modelService, @Override
MetricService metricService, DimensionService dimensionService) {
this.canvasRepository = canvasRepository;
this.dimensionService = dimensionService;
this.metricService = metricService;
this.modelService = modelService;
}
public List<CanvasDO> getCanvasList(Long domainId) { public List<CanvasDO> getCanvasList(Long domainId) {
return canvasRepository.getCanvasList(domainId); QueryWrapper<CanvasDO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CanvasDO::getDomainId, domainId);
return list(queryWrapper);
} }
@Override
public List<CanvasSchemaResp> getCanvasSchema(Long domainId, User user) { public List<CanvasSchemaResp> getCanvasSchema(Long domainId, User user) {
List<CanvasSchemaResp> canvasSchemaResps = Lists.newArrayList(); List<CanvasSchemaResp> canvasSchemaResps = Lists.newArrayList();
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, domainId, AuthType.ADMIN); List<ModelResp> modelResps = modelService.getModelListWithAuth(user, domainId, AuthType.ADMIN);
@@ -62,28 +62,26 @@ public class CanvasServiceImpl {
return canvasSchemaResps; return canvasSchemaResps;
} }
@Override
public CanvasDO createOrUpdateCanvas(CanvasReq canvasReq, User user) { public CanvasDO createOrUpdateCanvas(CanvasReq canvasReq, User user) {
if (canvasReq.getId() == null) { if (canvasReq.getId() == null) {
canvasReq.createdBy(user.getName());
CanvasDO viewInfoDO = new CanvasDO(); CanvasDO viewInfoDO = new CanvasDO();
BeanUtils.copyProperties(canvasReq, viewInfoDO); BeanUtils.copyProperties(canvasReq, viewInfoDO);
viewInfoDO.setCreatedAt(new Date()); save(viewInfoDO);
viewInfoDO.setCreatedBy(user.getName());
viewInfoDO.setUpdatedAt(new Date());
viewInfoDO.setUpdatedBy(user.getName());
canvasRepository.createCanvas(viewInfoDO);
return viewInfoDO; return viewInfoDO;
} }
Long id = canvasReq.getId(); Long id = canvasReq.getId();
CanvasDO viewInfoDO = canvasRepository.getCanvasById(id); CanvasDO viewInfoDO = getById(id);
canvasReq.updatedBy(user.getName());
BeanUtils.copyProperties(canvasReq, viewInfoDO); BeanUtils.copyProperties(canvasReq, viewInfoDO);
viewInfoDO.setUpdatedAt(new Date()); updateById(viewInfoDO);
viewInfoDO.setUpdatedBy(user.getName());
canvasRepository.updateCanvas(viewInfoDO);
return viewInfoDO; return viewInfoDO;
} }
@Override
public void deleteCanvas(Long id) { public void deleteCanvas(Long id) {
canvasRepository.deleteCanvas(id); removeById(id);
} }
} }

View File

@@ -10,12 +10,10 @@ import com.tencent.supersonic.headless.api.pojo.request.DomainReq;
import com.tencent.supersonic.headless.api.pojo.request.DomainUpdateReq; import com.tencent.supersonic.headless.api.pojo.request.DomainUpdateReq;
import com.tencent.supersonic.headless.api.pojo.response.DomainResp; import com.tencent.supersonic.headless.api.pojo.response.DomainResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
import com.tencent.supersonic.headless.server.persistence.dataobject.DomainDO; import com.tencent.supersonic.headless.server.persistence.dataobject.DomainDO;
import com.tencent.supersonic.headless.server.persistence.repository.DomainRepository; import com.tencent.supersonic.headless.server.persistence.repository.DomainRepository;
import com.tencent.supersonic.headless.server.service.DomainService; import com.tencent.supersonic.headless.server.service.DomainService;
import com.tencent.supersonic.headless.server.service.ModelService; import com.tencent.supersonic.headless.server.service.ModelService;
import com.tencent.supersonic.headless.server.service.DataSetService;
import com.tencent.supersonic.headless.server.utils.DomainConvert; import com.tencent.supersonic.headless.server.utils.DomainConvert;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Sets; import org.assertj.core.util.Sets;
@@ -43,17 +41,13 @@ public class DomainServiceImpl implements DomainService {
private final DomainRepository domainRepository; private final DomainRepository domainRepository;
private final ModelService modelService; private final ModelService modelService;
private final UserService userService; private final UserService userService;
private final DataSetService dataSetService;
public DomainServiceImpl(DomainRepository domainRepository, public DomainServiceImpl(DomainRepository domainRepository,
@Lazy ModelService modelService, @Lazy ModelService modelService,
UserService userService, UserService userService) {
@Lazy DataSetService dataSetService) {
this.domainRepository = domainRepository; this.domainRepository = domainRepository;
this.modelService = modelService; this.modelService = modelService;
this.userService = userService; this.userService = userService;
this.dataSetService = dataSetService;
} }
@Override @Override
@@ -112,11 +106,6 @@ public class DomainServiceImpl implements DomainService {
if (!CollectionUtils.isEmpty(modelResps)) { if (!CollectionUtils.isEmpty(modelResps)) {
domainWithAuthAll.addAll(getParentDomain(domainIdsFromModel)); domainWithAuthAll.addAll(getParentDomain(domainIdsFromModel));
} }
List<DataSetResp> dataSetResps = dataSetService.getDataSets(user);
if (!CollectionUtils.isEmpty(dataSetResps)) {
List<Long> domainIds = dataSetResps.stream().map(DataSetResp::getDomainId).collect(Collectors.toList());
domainWithAuthAll.addAll(getParentDomain(domainIds));
}
for (DomainResp domainResp : domainWithAuthAll) { for (DomainResp domainResp : domainWithAuthAll) {
if (domainIdsFromModel.contains(domainResp.getId())) { if (domainIdsFromModel.contains(domainResp.getId())) {
domainResp.setHasModel(true); domainResp.setHasModel(true);

View File

@@ -53,15 +53,15 @@ public class S2ArtistDemo extends S2BaseDemo {
public void doRun() { public void doRun() {
try { try {
DomainResp singerDomain = addDomain(); DomainResp singerDomain = addDomain();
DomainResp singerModelSet = addModelSet(singerDomain);
TagObjectResp singerTagObject = addTagObjectSinger(singerDomain); TagObjectResp singerTagObject = addTagObjectSinger(singerDomain);
ModelResp singerModel = addModel(singerDomain, demoDatabaseResp, singerTagObject); ModelResp singerModel = addModel(singerModelSet, demoDatabaseResp, singerTagObject);
addTags(singerModel); addTags(singerModel);
long dataSetId = addDataSet(singerDomain, singerModel); long dataSetId = addDataSet(singerDomain, singerModelSet, singerModel);
addAgent(dataSetId); addAgent(dataSetId);
} catch (Exception e) { } catch (Exception e) {
log.error("Failed to add model demo data", e); log.error("Failed to add model demo data", e);
} }
} }
@Override @Override
@@ -98,6 +98,15 @@ public class S2ArtistDemo extends S2BaseDemo {
return domainService.createDomain(domainReq, user); return domainService.createDomain(domainReq, user);
} }
public DomainResp addModelSet(DomainResp singerDomain) {
DomainReq domainReq = new DomainReq();
domainReq.setName("标签模型集");
domainReq.setBizName("singer_info");
domainReq.setParentId(singerDomain.getId());
domainReq.setStatus(StatusEnum.ONLINE.getCode());
return domainService.createDomain(domainReq, user);
}
public ModelResp addModel(DomainResp singerDomain, public ModelResp addModel(DomainResp singerDomain,
DatabaseResp s2Database, TagObjectResp singerTagObject) throws Exception { DatabaseResp s2Database, TagObjectResp singerTagObject) throws Exception {
ModelReq modelReq = new ModelReq(); ModelReq modelReq = new ModelReq();
@@ -154,14 +163,14 @@ public class S2ArtistDemo extends S2BaseDemo {
TagDefineType.METRIC); TagDefineType.METRIC);
} }
public long addDataSet(DomainResp singerDomain, ModelResp singerModel) { public long addDataSet(DomainResp singerDomain, DomainResp singerModelSet, ModelResp singerModel) {
DataSetReq dataSetReq = new DataSetReq(); DataSetReq dataSetReq = new DataSetReq();
dataSetReq.setName("艺人库"); dataSetReq.setName("艺人库");
dataSetReq.setBizName("singer"); dataSetReq.setBizName("singer");
dataSetReq.setDomainId(singerDomain.getId()); dataSetReq.setDomainId(singerDomain.getId());
dataSetReq.setDescription("包含艺人相关标签和指标信息"); dataSetReq.setDescription("包含艺人相关标签和指标信息");
dataSetReq.setAdmins(Lists.newArrayList("admin", "jack")); dataSetReq.setAdmins(Lists.newArrayList("admin", "jack"));
List<DataSetModelConfig> dataSetModelConfigs = getDataSetModelConfigs(singerDomain.getId()); List<DataSetModelConfig> dataSetModelConfigs = getDataSetModelConfigs(singerModelSet.getId());
DataSetDetail dataSetDetail = new DataSetDetail(); DataSetDetail dataSetDetail = new DataSetDetail();
dataSetDetail.setDataSetModelConfigs(dataSetModelConfigs); dataSetDetail.setDataSetModelConfigs(dataSetModelConfigs);
dataSetReq.setDataSetDetail(dataSetDetail); dataSetReq.setDataSetDetail(dataSetDetail);

View File

@@ -23,6 +23,7 @@ import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.ParseResp; import com.tencent.supersonic.headless.api.pojo.response.ParseResp;
import com.tencent.supersonic.headless.server.pojo.MetaFilter; import com.tencent.supersonic.headless.server.pojo.MetaFilter;
import com.tencent.supersonic.headless.server.service.CanvasService;
import com.tencent.supersonic.headless.server.service.DataSetService; import com.tencent.supersonic.headless.server.service.DataSetService;
import com.tencent.supersonic.headless.server.service.DatabaseService; import com.tencent.supersonic.headless.server.service.DatabaseService;
import com.tencent.supersonic.headless.server.service.DimensionService; import com.tencent.supersonic.headless.server.service.DimensionService;
@@ -83,6 +84,8 @@ public abstract class S2BaseDemo implements CommandLineRunner {
protected AgentService agentService; protected AgentService agentService;
@Autowired @Autowired
protected SysParameterService sysParameterService; protected SysParameterService sysParameterService;
@Autowired
protected CanvasService canvasService;
@Value("${s2.demo.names:S2VisitsDemo}") @Value("${s2.demo.names:S2VisitsDemo}")
protected List<String> demoList; protected List<String> demoList;
@Value("${s2.demo.enableLLM:true}") @Value("${s2.demo.enableLLM:true}")

View File

@@ -80,14 +80,15 @@ public class S2VisitsDemo extends S2BaseDemo {
try { try {
// create domain // create domain
DomainResp s2Domain = addDomain(); DomainResp s2Domain = addDomain();
DomainResp s2ModelSet = addModelSet(s2Domain);
TagObjectResp s2TagObject = addTagObjectUser(s2Domain); TagObjectResp s2TagObject = addTagObjectUser(s2Domain);
// create models // create models
ModelResp userModel = addModel_1(s2Domain, demoDatabaseResp, s2TagObject); ModelResp userModel = addModel_1(s2ModelSet, demoDatabaseResp, s2TagObject);
ModelResp pvUvModel = addModel_2(s2Domain, demoDatabaseResp); ModelResp pvUvModel = addModel_2(s2ModelSet, demoDatabaseResp);
ModelResp stayTimeModel = addModel_3(s2Domain, demoDatabaseResp); ModelResp stayTimeModel = addModel_3(s2ModelSet, demoDatabaseResp);
addModelRela_1(s2Domain, userModel, pvUvModel); addModelRela_1(s2ModelSet, userModel, pvUvModel);
addModelRela_2(s2Domain, userModel, stayTimeModel); addModelRela_2(s2ModelSet, userModel, stayTimeModel);
addTags(userModel); addTags(userModel);
//create metrics and dimensions //create metrics and dimensions
@@ -103,7 +104,7 @@ public class S2VisitsDemo extends S2BaseDemo {
updateMetric_pv(pvUvModel, departmentDimension, userDimension, metricPv); updateMetric_pv(pvUvModel, departmentDimension, userDimension, metricPv);
//create data set //create data set
DataSetResp s2DataSet = addDataSet(s2Domain); DataSetResp s2DataSet = addDataSet(s2Domain, s2ModelSet);
addAuthGroup_1(stayTimeModel); addAuthGroup_1(stayTimeModel);
addAuthGroup_2(stayTimeModel); addAuthGroup_2(stayTimeModel);
@@ -189,9 +190,16 @@ public class S2VisitsDemo extends S2BaseDemo {
domainReq.setParentId(0L); domainReq.setParentId(0L);
domainReq.setStatus(StatusEnum.ONLINE.getCode()); domainReq.setStatus(StatusEnum.ONLINE.getCode());
domainReq.setViewers(Arrays.asList("admin", "tom")); domainReq.setViewers(Arrays.asList("admin", "tom"));
domainReq.setViewOrgs(Collections.singletonList("1"));
domainReq.setAdmins(Arrays.asList("admin", "jack")); domainReq.setAdmins(Arrays.asList("admin", "jack"));
domainReq.setAdminOrgs(Collections.emptyList()); return domainService.createDomain(domainReq, user);
}
public DomainResp addModelSet(DomainResp s2Domain) {
DomainReq domainReq = new DomainReq();
domainReq.setName("埋点模型集");
domainReq.setBizName("visit_info");
domainReq.setParentId(s2Domain.getId());
domainReq.setStatus(StatusEnum.ONLINE.getCode());
return domainService.createDomain(domainReq, user); return domainService.createDomain(domainReq, user);
} }
@@ -451,14 +459,14 @@ public class S2VisitsDemo extends S2BaseDemo {
return metricService.createMetric(metricReq, user); return metricService.createMetric(metricReq, user);
} }
public DataSetResp addDataSet(DomainResp s2Domain) { public DataSetResp addDataSet(DomainResp s2Domain, DomainResp s2ModelSet) {
DataSetReq dataSetReq = new DataSetReq(); DataSetReq dataSetReq = new DataSetReq();
dataSetReq.setName("超音数"); dataSetReq.setName("超音数");
dataSetReq.setBizName("s2"); dataSetReq.setBizName("s2");
dataSetReq.setDomainId(s2Domain.getId()); dataSetReq.setDomainId(s2Domain.getId());
dataSetReq.setDescription("包含超音数访问统计相关的指标和维度等"); dataSetReq.setDescription("包含超音数访问统计相关的指标和维度等");
dataSetReq.setAdmins(Lists.newArrayList("admin")); dataSetReq.setAdmins(Lists.newArrayList("admin"));
List<DataSetModelConfig> dataSetModelConfigs = getDataSetModelConfigs(s2Domain.getId()); List<DataSetModelConfig> dataSetModelConfigs = getDataSetModelConfigs(s2ModelSet.getId());
DataSetDetail dataSetDetail = new DataSetDetail(); DataSetDetail dataSetDetail = new DataSetDetail();
dataSetDetail.setDataSetModelConfigs(dataSetModelConfigs); dataSetDetail.setDataSetModelConfigs(dataSetModelConfigs);
dataSetReq.setDataSetDetail(dataSetDetail); dataSetReq.setDataSetDetail(dataSetDetail);

View File

@@ -48,7 +48,7 @@ public class QueryByMetricTest extends BaseTest {
Assert.assertNotNull(queryResp.getResultList()); Assert.assertNotNull(queryResp.getResultList());
Assert.assertEquals(6, queryResp.getResultList().size()); Assert.assertEquals(6, queryResp.getResultList().size());
queryMetricReq.setDomainId(2L); queryMetricReq.setDomainId(3L);
queryMetricReq.setMetricNames(Arrays.asList("stay_hours", "pv")); queryMetricReq.setMetricNames(Arrays.asList("stay_hours", "pv"));
queryMetricReq.setDimensionNames(Arrays.asList("user_name", "department")); queryMetricReq.setDimensionNames(Arrays.asList("user_name", "department"));
assertThrows(IllegalArgumentException.class, assertThrows(IllegalArgumentException.class,

View File

@@ -22,7 +22,7 @@ public class SchemaAuthTest extends BaseTest {
private DomainService domainService; private DomainService domainService;
@Autowired @Autowired
private DataSetService viewService; private DataSetService dataSetService;
@Autowired @Autowired
private ModelService modelService; private ModelService modelService;
@@ -31,63 +31,64 @@ public class SchemaAuthTest extends BaseTest {
public void test_getDomainList_alice() { public void test_getDomainList_alice() {
User user = DataUtils.getUserAlice(); User user = DataUtils.getUserAlice();
List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user); List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user);
List<Long> expectedDomainIds = Lists.newArrayList(1L, 2L); List<String> expectedDomainBizNames = Lists.newArrayList("supersonic", "visit_info", "singer", "singer_info");
Assertions.assertEquals(expectedDomainIds, Assertions.assertEquals(expectedDomainBizNames,
domainResps.stream().map(DomainResp::getId).collect(Collectors.toList())); domainResps.stream().map(DomainResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getModelList_alice() { public void test_getModelList_alice() {
User user = DataUtils.getUserAlice(); User user = DataUtils.getUserAlice();
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
List<Long> expectedModelIds = Lists.newArrayList(1L, 4L); List<String> expectedModelBizNames = Lists.newArrayList("user_department", "singer");
Assertions.assertEquals(expectedModelIds, Assertions.assertEquals(expectedModelBizNames,
modelResps.stream().map(ModelResp::getId).collect(Collectors.toList())); modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getVisibleModelList_alice() { public void test_getVisibleModelList_alice() {
User user = DataUtils.getUserAlice(); User user = DataUtils.getUserAlice();
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.VISIBLE); List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.VISIBLE);
List<Long> expectedModelIds = Lists.newArrayList(1L, 4L); List<String> expectedModelBizNames = Lists.newArrayList("user_department", "singer");
Assertions.assertEquals(expectedModelIds, Assertions.assertEquals(expectedModelBizNames,
modelResps.stream().map(ModelResp::getId).collect(Collectors.toList())); modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getViewList_alice() { public void test_getDataSetList_alice() {
User user = DataUtils.getUserAlice(); User user = DataUtils.getUserAlice();
List<DataSetResp> modelResps = viewService.getDataSetsInheritAuth(user, 0L); List<DataSetResp> dataSetResps = dataSetService.getDataSetsInheritAuth(user, 0L);
List<Long> expectedViewIds = Lists.newArrayList(2L); List<String> expectedDataSetBizNames = Lists.newArrayList("singer");
Assertions.assertEquals(expectedViewIds, Assertions.assertEquals(expectedDataSetBizNames,
modelResps.stream().map(DataSetResp::getId).collect(Collectors.toList())); dataSetResps.stream().map(DataSetResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getDomainList_jack() { public void test_getDomainList_jack() {
User user = DataUtils.getUserJack(); User user = DataUtils.getUserJack();
List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user); List<DomainResp> domainResps = domainService.getDomainListWithAdminAuth(user);
List<Long> expectedDomainIds = Lists.newArrayList(1L, 2L); List<String> expectedDomainBizNames = Lists.newArrayList("supersonic", "visit_info");
Assertions.assertEquals(expectedDomainIds, Assertions.assertEquals(expectedDomainBizNames,
domainResps.stream().map(DomainResp::getId).collect(Collectors.toList())); domainResps.stream().map(DomainResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getModelList_jack() { public void test_getModelList_jack() {
User user = DataUtils.getUserJack(); User user = DataUtils.getUserJack();
List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN); List<ModelResp> modelResps = modelService.getModelListWithAuth(user, null, AuthType.ADMIN);
List<Long> expectedModelIds = Lists.newArrayList(1L, 2L, 3L); List<String> expectedModelBizNames = Lists.newArrayList("user_department",
Assertions.assertEquals(expectedModelIds, "s2_pv_uv_statis", "s2_stay_time_statis");
modelResps.stream().map(ModelResp::getId).collect(Collectors.toList())); Assertions.assertEquals(expectedModelBizNames,
modelResps.stream().map(ModelResp::getBizName).collect(Collectors.toList()));
} }
@Test @Test
public void test_getViewList_jack() { public void test_getDataSetList_jack() {
User user = DataUtils.getUserJack(); User user = DataUtils.getUserJack();
List<DataSetResp> modelResps = viewService.getDataSetsInheritAuth(user, 0L); List<DataSetResp> dataSetResps = dataSetService.getDataSetsInheritAuth(user, 0L);
List<Long> expectedViewIds = Lists.newArrayList(1L, 2L); List<String> expectedDataSetBizNames = Lists.newArrayList("s2", "singer");
Assertions.assertEquals(expectedViewIds, Assertions.assertEquals(expectedDataSetBizNames,
modelResps.stream().map(DataSetResp::getId).collect(Collectors.toList())); dataSetResps.stream().map(DataSetResp::getBizName).collect(Collectors.toList()));
} }
} }