[improvement][launcher]Refactor built-in demos.

This commit is contained in:
jerryjzhang
2024-11-10 21:27:59 +08:00
parent 14a19a901f
commit ea6a9ebc5f
19 changed files with 2462 additions and 2808 deletions

View File

@@ -39,7 +39,8 @@ public class MetricRecommendProcessor implements ExecuteResultProcessor {
}
private void fillSimilarMetric(SemanticParseInfo parseInfo) {
if (!parseInfo.getQueryType().equals(QueryType.AGGREGATE)
if (Objects.isNull(parseInfo.getQueryType())
|| !parseInfo.getQueryType().equals(QueryType.AGGREGATE)
|| parseInfo.getMetrics().size() > METRIC_RECOMMEND_SIZE
|| CollectionUtils.isEmpty(parseInfo.getMetrics())) {
return;

View File

@@ -62,7 +62,9 @@ services:
sleep 15 &&
if ! mysql -h supersonic_mysql -usupersonic_user -psupersonic_password -e 'use supersonic_db; show tables;' | grep -q 's2_database'; then
mysql -h supersonic_mysql -usupersonic_user -psupersonic_password supersonic_db < /usr/src/app/supersonic-standalone-${SUPERSONIC_VERSION:-latest}/conf/db/schema-mysql.sql &&
mysql -h supersonic_mysql -usupersonic_user -psupersonic_password supersonic_db < /usr/src/app/supersonic-standalone-${SUPERSONIC_VERSION:-latest}/conf/db/data-mysql.sql
mysql -h supersonic_mysql -usupersonic_user -psupersonic_password supersonic_db < /usr/src/app/supersonic-standalone-${SUPERSONIC_VERSION:-latest}/conf/db/schema-mysql-demo.sql &&
mysql -h supersonic_mysql -usupersonic_user -psupersonic_password supersonic_db < /usr/src/app/supersonic-standalone-${SUPERSONIC_VERSION:-latest}/conf/db/data-mysql.sql &&
mysql -h supersonic_mysql -usupersonic_user -psupersonic_password supersonic_db < /usr/src/app/supersonic-standalone-${SUPERSONIC_VERSION:-latest}/conf/db/data-mysql-demo.sql
else
echo 'Database already initialized.'
fi

View File

@@ -1,296 +0,0 @@
package com.tencent.supersonic.demo;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.JoinCondition;
import com.tencent.supersonic.common.pojo.ModelRela;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.TimeMode;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.headless.api.pojo.*;
import com.tencent.supersonic.headless.api.pojo.DetailTypeDefaultConfig;
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
import com.tencent.supersonic.headless.api.pojo.enums.IdentifyType;
import com.tencent.supersonic.headless.api.pojo.request.DataSetReq;
import com.tencent.supersonic.headless.api.pojo.request.DomainReq;
import com.tencent.supersonic.headless.api.pojo.request.ModelReq;
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.DomainResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Component
@Slf4j
public class CspiderDemo extends S2BaseDemo {
public void doRun() {
try {
DomainResp s2Domain = addDomain();
ModelResp genreModelResp = addModel_1(s2Domain, demoDatabase);
ModelResp artistModelResp = addModel_2(s2Domain, demoDatabase);
ModelResp filesModelResp = addModel_3(s2Domain, demoDatabase);
ModelResp songModelResp = addModel_4(s2Domain, demoDatabase);
addDataSet_1(s2Domain);
addModelRela_1(s2Domain, genreModelResp, artistModelResp);
addModelRela_2(s2Domain, filesModelResp, artistModelResp);
addModelRela_3(s2Domain, songModelResp, artistModelResp);
addModelRela_4(s2Domain, songModelResp, genreModelResp);
addModelRela_5(s2Domain, songModelResp, filesModelResp);
// batchPushlishMetric();
} catch (Exception e) {
log.error("Failed to add bench mark demo data", e);
}
}
@Override
boolean checkNeedToRun() {
return false;
}
public DomainResp addDomain() {
DomainReq domainReq = new DomainReq();
domainReq.setName("测评数据_音乐");
domainReq.setBizName("music");
domainReq.setParentId(0L);
domainReq.setViewers(Arrays.asList("admin", "tom", "jack"));
domainReq.setViewOrgs(Collections.singletonList("1"));
domainReq.setAdmins(Collections.singletonList("admin"));
domainReq.setAdminOrgs(Collections.emptyList());
return domainService.createDomain(domainReq, defaultUser);
}
public ModelResp addModel_1(DomainResp s2Domain, DatabaseResp s2Database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setDomainId(s2Domain.getId());
modelReq.setName("艺术类型");
modelReq.setBizName("genre");
modelReq.setDescription("艺术类型");
modelReq.setDatabaseId(s2Database.getId());
modelReq.setViewers(Arrays.asList("admin", "tom", "jack"));
modelReq.setViewOrgs(Collections.singletonList("1"));
modelReq.setAdmins(Collections.singletonList("admin"));
modelReq.setAdminOrgs(Collections.emptyList());
ModelDetail modelDetail = new ModelDetail();
List<Dim> dimensions = new ArrayList<>();
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time.name(), 0);
dimension1.setTypeParams(new DimensionTimeTypeParams());
dimensions.add(dimension1);
dimensions.add(new Dim("活跃区域", "most_popular_in", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("音乐类型名称", "g_name", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
List<Identify> identifiers = new ArrayList<>();
identifiers.add(new Identify("音乐类型名称", IdentifyType.primary.name(), "g_name"));
modelDetail.setIdentifiers(identifiers);
List<Measure> measures = new ArrayList<>();
Measure measure = new Measure("评分", "rating", AggOperatorEnum.SUM.name(), 0);
measures.add(measure);
modelDetail.setMeasures(measures);
modelDetail.setQueryType("sql_query");
modelDetail.setSqlQuery("SELECT g_name, rating, most_popular_in FROM genre");
modelReq.setModelDetail(modelDetail);
return modelService.createModel(modelReq, defaultUser);
}
public ModelResp addModel_2(DomainResp s2Domain, DatabaseResp s2Database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setDomainId(s2Domain.getId());
modelReq.setName("艺术家");
modelReq.setBizName("artist");
modelReq.setDescription("艺术家");
modelReq.setDatabaseId(s2Database.getId());
ModelDetail modelDetail = new ModelDetail();
List<Dim> dimensions = new ArrayList<>();
dimensions.add(new Dim("艺术家名称", "artist_name", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("国籍", "citizenship", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("性别", "gender", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
List<Identify> identifiers = new ArrayList<>();
identifiers.add(new Identify("艺术家名称", IdentifyType.primary.name(), "artist_name"));
identifiers.add(new Identify("音乐类型名称", IdentifyType.foreign.name(), "g_name"));
modelDetail.setIdentifiers(identifiers);
modelDetail.setMeasures(Collections.emptyList());
modelDetail.setQueryType("sql_query");
modelDetail.setSqlQuery("SELECT artist_name, citizenship, gender, g_name FROM artist");
modelReq.setModelDetail(modelDetail);
return modelService.createModel(modelReq, defaultUser);
}
public ModelResp addModel_3(DomainResp s2Domain, DatabaseResp s2Database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setDomainId(s2Domain.getId());
modelReq.setName("文件");
modelReq.setBizName("files");
modelReq.setDescription("文件");
modelReq.setDatabaseId(s2Database.getId());
ModelDetail modelDetail = new ModelDetail();
List<Dim> dimensions = new ArrayList<>();
dimensions.add(new Dim("持续时间", "duration", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("文件格式", "formats", DimensionType.categorical.name(), 1));
// dimensions.add(new Dim("艺术家名称", "artist_name", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
List<Identify> identifiers = new ArrayList<>();
identifiers.add(new Identify("歌曲ID", IdentifyType.primary.name(), "f_id"));
identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
modelDetail.setIdentifiers(identifiers);
modelDetail.setMeasures(Collections.emptyList());
modelDetail.setQueryType("sql_query");
modelDetail
.setSqlQuery("SELECT f_id, artist_name, file_size, duration, formats FROM files");
modelReq.setModelDetail(modelDetail);
return modelService.createModel(modelReq, defaultUser);
}
public ModelResp addModel_4(DomainResp s2Domain, DatabaseResp s2Database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setDomainId(s2Domain.getId());
modelReq.setName("歌曲");
modelReq.setBizName("song");
modelReq.setDescription("歌曲");
modelReq.setDatabaseId(s2Database.getId());
ModelDetail modelDetail = new ModelDetail();
List<Dim> dimensions = new ArrayList<>();
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time.name(), 0);
dimension1.setTypeParams(new DimensionTimeTypeParams());
dimensions.add(dimension1);
dimensions.add(new Dim("歌曲名称", "song_name", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("国家", "country", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("语种", "languages", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("发行时间", "releasedate", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
List<Identify> identifiers = new ArrayList<>();
identifiers.add(new Identify("歌曲名称", IdentifyType.primary.name(), "song_name"));
identifiers.add(new Identify("歌曲ID", IdentifyType.foreign.name(), "f_id"));
identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
// identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
modelDetail.setIdentifiers(identifiers);
List<Measure> measures = new ArrayList<>();
measures.add(new Measure("分辨率", "resolution", AggOperatorEnum.SUM.name(), 1));
measures.add(new Measure("评分", "rating", AggOperatorEnum.SUM.name(), 1));
modelDetail.setMeasures(measures);
modelDetail.setQueryType("sql_query");
modelDetail.setSqlQuery("SELECT imp_date, song_name, artist_name, country, f_id, g_name, "
+ " rating, languages, releasedate, resolution FROM song");
modelReq.setModelDetail(modelDetail);
return modelService.createModel(modelReq, defaultUser);
}
public void addDataSet_1(DomainResp s2Domain) {
DataSetReq dataSetReq = new DataSetReq();
dataSetReq.setName("cspider");
dataSetReq.setBizName("singer");
dataSetReq.setDomainId(s2Domain.getId());
dataSetReq.setDescription("包含cspider数据集相关标签和指标信息");
dataSetReq.setAdmins(Lists.newArrayList("admin"));
List<DataSetModelConfig> viewModelConfigs = getDataSetModelConfigs(s2Domain.getId());
DataSetDetail dsDetail = new DataSetDetail();
dsDetail.setDataSetModelConfigs(viewModelConfigs);
dataSetReq.setDataSetDetail(dsDetail);
dataSetReq.setTypeEnum(TypeEnums.DATASET);
QueryConfig queryConfig = new QueryConfig();
DetailTypeDefaultConfig detailTypeDefaultConfig = new DetailTypeDefaultConfig();
TimeDefaultConfig tagTimeDefaultConfig = new TimeDefaultConfig();
tagTimeDefaultConfig.setTimeMode(TimeMode.LAST);
tagTimeDefaultConfig.setUnit(7);
detailTypeDefaultConfig.setTimeDefaultConfig(tagTimeDefaultConfig);
AggregateTypeDefaultConfig aggregateTypeDefaultConfig = new AggregateTypeDefaultConfig();
TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig();
timeDefaultConfig.setTimeMode(TimeMode.RECENT);
timeDefaultConfig.setUnit(7);
aggregateTypeDefaultConfig.setTimeDefaultConfig(timeDefaultConfig);
queryConfig.setDetailTypeDefaultConfig(detailTypeDefaultConfig);
queryConfig.setAggregateTypeDefaultConfig(aggregateTypeDefaultConfig);
dataSetReq.setQueryConfig(queryConfig);
dataSetService.save(dataSetReq, defaultUser);
}
public void addModelRela_1(DomainResp s2Domain, ModelResp genreModelResp,
ModelResp artistModelResp) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions.add(new JoinCondition("g_name", "g_name", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(s2Domain.getId());
modelRelaReq.setFromModelId(artistModelResp.getId());
modelRelaReq.setToModelId(genreModelResp.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_2(DomainResp s2Domain, ModelResp filesModelResp,
ModelResp artistModelResp) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions
.add(new JoinCondition("artist_name", "artist_name", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(s2Domain.getId());
modelRelaReq.setFromModelId(filesModelResp.getId());
modelRelaReq.setToModelId(artistModelResp.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_3(DomainResp s2Domain, ModelResp songModelResp,
ModelResp artistModelResp) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions
.add(new JoinCondition("artist_name", "artist_name", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(s2Domain.getId());
modelRelaReq.setFromModelId(songModelResp.getId());
modelRelaReq.setToModelId(artistModelResp.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_4(DomainResp s2Domain, ModelResp songModelResp,
ModelResp genreModelResp) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions.add(new JoinCondition("g_name", "g_name", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(s2Domain.getId());
modelRelaReq.setFromModelId(songModelResp.getId());
modelRelaReq.setToModelId(genreModelResp.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_5(DomainResp s2Domain, ModelResp songModelResp,
ModelResp filesModelResp) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions.add(new JoinCondition("f_id", "f_id", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(s2Domain.getId());
modelRelaReq.setFromModelId(songModelResp.getId());
modelRelaReq.setToModelId(filesModelResp.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
private void batchPushlishMetric() {
List<Long> ids = Lists.newArrayList(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L);
metricService.batchPublish(ids, defaultUser);
}
}

View File

@@ -8,6 +8,8 @@ import com.tencent.supersonic.chat.server.service.ChatQueryService;
import com.tencent.supersonic.chat.server.service.PluginService;
import com.tencent.supersonic.common.config.ChatModel;
import com.tencent.supersonic.common.pojo.User;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.service.ChatModelService;
import com.tencent.supersonic.common.util.AESEncryptionUtil;
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
@@ -17,6 +19,8 @@ import com.tencent.supersonic.headless.api.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.pojo.enums.DataType;
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
import com.tencent.supersonic.headless.api.pojo.request.DatabaseReq;
import com.tencent.supersonic.headless.api.pojo.request.DictItemReq;
import com.tencent.supersonic.headless.api.pojo.request.DictSingleTaskReq;
import com.tencent.supersonic.headless.api.pojo.request.TagReq;
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.DimensionResp;
@@ -198,4 +202,11 @@ public abstract class S2BaseDemo implements CommandLineRunner {
protected void updateQueryScore(Integer queryId) {
chatManageService.updateFeedback(queryId, 5, "");
}
protected void enableDimensionValue(DimensionResp dimension) {
dictConfService.addDictConf(DictItemReq.builder().type(TypeEnums.DIMENSION)
.itemId(dimension.getId()).status(StatusEnum.ONLINE).build(), defaultUser);
dictTaskService.addDictTask(DictSingleTaskReq.builder().itemId(dimension.getId())
.type(TypeEnums.DIMENSION).build(), defaultUser);
}
}

View File

@@ -2,52 +2,70 @@ package com.tencent.supersonic.demo;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.tencent.supersonic.chat.server.agent.Agent;
import com.tencent.supersonic.chat.server.agent.AgentToolType;
import com.tencent.supersonic.chat.server.agent.DatasetTool;
import com.tencent.supersonic.chat.server.agent.ToolConfig;
import com.tencent.supersonic.common.pojo.ChatApp;
import com.tencent.supersonic.common.pojo.JoinCondition;
import com.tencent.supersonic.common.pojo.ModelRela;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.AppModule;
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.TimeMode;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.pojo.*;
import com.tencent.supersonic.common.util.ChatAppManager;
import com.tencent.supersonic.headless.api.pojo.AggregateTypeDefaultConfig;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
import com.tencent.supersonic.headless.api.pojo.Dim;
import com.tencent.supersonic.headless.api.pojo.DimensionTimeTypeParams;
import com.tencent.supersonic.headless.api.pojo.Identify;
import com.tencent.supersonic.headless.api.pojo.Measure;
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig;
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
import com.tencent.supersonic.headless.api.pojo.enums.IdentifyType;
import com.tencent.supersonic.headless.api.pojo.request.DataSetReq;
import com.tencent.supersonic.headless.api.pojo.request.DomainReq;
import com.tencent.supersonic.headless.api.pojo.request.MetricReq;
import com.tencent.supersonic.headless.api.pojo.request.ModelReq;
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
import com.tencent.supersonic.headless.api.pojo.response.DataSetResp;
import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp;
import com.tencent.supersonic.headless.api.pojo.response.DomainResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class DuSQLDemo extends S2BaseDemo {
@Order(2)
public class S2CompanyDemo extends S2BaseDemo {
public void doRun() {
try {
addDomain();
addModel_1();
addModel_2();
addModel_3();
addModel_4();
addDataSet_1();
addModelRela_1();
addModelRela_2();
addModelRela_3();
addModelRela_4();
addAgent();
DomainResp domain = addDomain();
ModelResp model_company = addModel_1(domain, demoDatabase);
ModelResp model_brand = addModel_2(domain, demoDatabase);
ModelResp model_company_revenue = addModel_3(domain, demoDatabase);
ModelResp model_brand_revenue = addModel_4(domain, demoDatabase);
addModelRela_1(domain, model_company_revenue, model_company);
addModelRela_2(domain, model_brand, model_company);
addModelRela_3(domain, model_brand_revenue, model_brand);
addModelRela_4(domain, model_company_revenue, model_brand);
DataSetResp dataset = addDataSet(domain);
addAgent(dataset.getId());
} catch (Exception e) {
log.error("Failed to add bench mark demo data", e);
}
@@ -55,29 +73,34 @@ public class DuSQLDemo extends S2BaseDemo {
@Override
boolean checkNeedToRun() {
return false;
List<DomainResp> domainList = domainService.getDomainList();
for (DomainResp domainResp : domainList) {
if (domainResp.getBizName().equalsIgnoreCase("corporate")) {
log.info("Already exist domain:corporate, no need to run demo");
return false;
}
}
return true;
}
public void addDomain() {
public DomainResp addDomain() {
DomainReq domainReq = new DomainReq();
domainReq.setName("DuSQL_互联网企业");
domainReq.setBizName("internet");
domainReq.setName("企业数据");
domainReq.setBizName("corporate");
domainReq.setParentId(0L);
domainReq.setViewers(Arrays.asList("admin", "tom", "jack"));
domainReq.setViewOrgs(Collections.singletonList("1"));
domainReq.setAdmins(Collections.singletonList("admin"));
domainReq.setAdminOrgs(Collections.emptyList());
domainService.createDomain(domainReq, defaultUser);
return domainService.createDomain(domainReq, defaultUser);
}
// 9
public void addModel_1() throws Exception {
public ModelResp addModel_1(DomainResp domain, DatabaseResp database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setName("公司");
modelReq.setName("公司维度");
modelReq.setBizName("company");
modelReq.setDescription("公司");
modelReq.setDatabaseId(1L);
modelReq.setDomainId(4L);
modelReq.setDatabaseId(database.getId());
modelReq.setDomainId(domain.getId());
modelReq.setViewers(Arrays.asList("admin", "tom", "jack"));
modelReq.setViewOrgs(Collections.singletonList("1"));
modelReq.setAdmins(Collections.singletonList("admin"));
@@ -91,8 +114,7 @@ public class DuSQLDemo extends S2BaseDemo {
dimensions.add(dimension1);
dimensions.add(new Dim("公司名称", "company_name", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("总部地点", "headquarter_address", DimensionType.categorical.name(), 1));
dimensions.add(
new Dim("公司成立时间", "company_established_time", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("成立时间", "company_established_time", DimensionType.time.name(), 1));
dimensions.add(new Dim("创始人", "founder", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("首席执行官", "ceo", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
@@ -111,17 +133,21 @@ public class DuSQLDemo extends S2BaseDemo {
modelDetail.setSqlQuery("SELECT imp_date,company_id,company_name,headquarter_address,"
+ "company_established_time,founder,ceo,annual_turnover,employee_count FROM company");
modelReq.setModelDetail(modelDetail);
modelService.createModel(modelReq, defaultUser);
ModelResp companyModel = modelService.createModel(modelReq, defaultUser);
enableDimensionValue(getDimension("company_name", companyModel));
enableDimensionValue(getDimension("founder", companyModel));
enableDimensionValue(getDimension("ceo", companyModel));
return companyModel;
}
// 10
public void addModel_2() throws Exception {
public ModelResp addModel_2(DomainResp domain, DatabaseResp database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setName("品牌");
modelReq.setName("品牌维度");
modelReq.setBizName("brand");
modelReq.setDescription("品牌");
modelReq.setDatabaseId(1L);
modelReq.setDomainId(4L);
modelReq.setDatabaseId(database.getId());
modelReq.setDomainId(domain.getId());
modelReq.setViewers(Arrays.asList("admin", "tom", "jack"));
modelReq.setViewOrgs(Collections.singletonList("1"));
modelReq.setAdmins(Collections.singletonList("admin"));
@@ -134,8 +160,7 @@ public class DuSQLDemo extends S2BaseDemo {
dimension1.setTypeParams(dimensionTimeTypeParams);
dimensions.add(dimension1);
dimensions.add(new Dim("品牌名称", "brand_name", DimensionType.categorical.name(), 1));
dimensions.add(
new Dim("品牌成立时间", "brand_established_time", DimensionType.categorical.name(), 1));
dimensions.add(new Dim("品牌成立时间", "brand_established_time", DimensionType.time.name(), 1));
dimensions
.add(new Dim("法定代表人", "legal_representative", DimensionType.categorical.name(), 1));
modelDetail.setDimensions(dimensions);
@@ -146,24 +171,26 @@ public class DuSQLDemo extends S2BaseDemo {
modelDetail.setIdentifiers(identifiers);
List<Measure> measures = new ArrayList<>();
measures.add(new Measure("注册资本", "registered_capital", AggOperatorEnum.SUM.name(), 1));
measures.add(new Measure("注册资本", "registered_capital", AggOperatorEnum.MAX.name(), 1));
modelDetail.setMeasures(measures);
modelDetail.setQueryType("sql_query");
modelDetail.setSqlQuery("SELECT imp_date,brand_id,brand_name,brand_established_time,"
+ "company_id,legal_representative,registered_capital FROM brand");
modelReq.setModelDetail(modelDetail);
modelService.createModel(modelReq, defaultUser);
ModelResp brandModel = modelService.createModel(modelReq, defaultUser);
enableDimensionValue(getDimension("brand_name", brandModel));
return brandModel;
}
// 11
public void addModel_3() throws Exception {
public ModelResp addModel_3(DomainResp domain, DatabaseResp database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setName("公司品牌收入排名");
modelReq.setName("公司品牌收入占比");
modelReq.setBizName("company_revenue");
modelReq.setDescription("公司各品牌收入排名");
modelReq.setDatabaseId(1L);
modelReq.setDomainId(4L);
modelReq.setDatabaseId(database.getId());
modelReq.setDomainId(domain.getId());
modelReq.setViewers(Arrays.asList("admin", "tom", "jack"));
modelReq.setViewOrgs(Collections.singletonList("1"));
modelReq.setAdmins(Collections.singletonList("admin"));
@@ -183,33 +210,25 @@ public class DuSQLDemo extends S2BaseDemo {
modelDetail.setIdentifiers(identifiers);
List<Measure> measures = new ArrayList<>();
Measure measure = new Measure("营收占比", "revenue_proportion", AggOperatorEnum.SUM.name(), 1);
Measure measure = new Measure("营收占比", "revenue_proportion", AggOperatorEnum.MAX.name(), 1);
measures.add(measure);
measures.add(new Measure("利润占比", "profit_proportion", AggOperatorEnum.SUM.name(), 1));
measures.add(new Measure("支出占比", "expenditure_proportion", AggOperatorEnum.SUM.name(), 1));
measures.add(new Measure("利润占比", "profit_proportion", AggOperatorEnum.MAX.name(), 1));
measures.add(new Measure("支出占比", "expenditure_proportion", AggOperatorEnum.MAX.name(), 1));
modelDetail.setMeasures(measures);
modelDetail.setQueryType("sql_query");
modelDetail.setSqlQuery("SELECT imp_date,company_id,brand_id,revenue_proportion,"
+ "profit_proportion,expenditure_proportion FROM company_revenue");
modelReq.setModelDetail(modelDetail);
modelService.createModel(modelReq, defaultUser);
MetricResp metricResp = metricService.getMetric(13L, defaultUser);
MetricReq metricReq = new MetricReq();
BeanUtils.copyProperties(metricResp, metricReq);
metricReq.setAlias("收入比例");
metricService.updateMetric(metricReq, defaultUser);
return modelService.createModel(modelReq, defaultUser);
}
// 12
public void addModel_4() throws Exception {
public ModelResp addModel_4(DomainResp domain, DatabaseResp database) throws Exception {
ModelReq modelReq = new ModelReq();
modelReq.setName("公司品牌历年收入");
modelReq.setBizName("company_brand_revenue");
modelReq.setDescription("公司品牌历年收入");
modelReq.setDatabaseId(1L);
modelReq.setDomainId(4L);
modelReq.setDatabaseId(database.getId());
modelReq.setDomainId(domain.getId());
modelReq.setViewers(Arrays.asList("admin", "tom", "jack"));
modelReq.setViewOrgs(Collections.singletonList("1"));
modelReq.setAdmins(Collections.singletonList("admin"));
@@ -241,30 +260,23 @@ public class DuSQLDemo extends S2BaseDemo {
modelDetail.setSqlQuery("SELECT imp_date,year_time,brand_id,revenue,profit,"
+ "revenue_growth_year_on_year,profit_growth_year_on_year FROM company_brand_revenue");
modelReq.setModelDetail(modelDetail);
modelService.createModel(modelReq, defaultUser);
return modelService.createModel(modelReq, defaultUser);
}
public void addDataSet_1() {
public DataSetResp addDataSet(DomainResp domain) {
DataSetReq dataSetReq = new DataSetReq();
dataSetReq.setName("DuSQL 互联网企业");
dataSetReq.setBizName("internet");
dataSetReq.setDomainId(4L);
dataSetReq.setDescription("DuSQL互联网企业数据源相关的指标和维度等");
dataSetReq.setName("企业数据集");
dataSetReq.setBizName("CorporateData");
dataSetReq.setDomainId(domain.getId());
dataSetReq.setDescription("互联网企业核心经营数据");
dataSetReq.setAdmins(Lists.newArrayList("admin"));
List<DataSetModelConfig> viewModelConfigs = Lists.newArrayList(
new DataSetModelConfig(9L, Lists.newArrayList(16L, 17L, 18L, 19L, 20L),
Lists.newArrayList(10L, 11L)),
new DataSetModelConfig(10L, Lists.newArrayList(21L, 22L, 23L),
Lists.newArrayList(12L)),
new DataSetModelConfig(11L, Lists.newArrayList(),
Lists.newArrayList(13L, 14L, 15L)),
new DataSetModelConfig(12L, Lists.newArrayList(24L),
Lists.newArrayList(16L, 17L, 18L, 19L)));
DataSetDetail dsDetail = new DataSetDetail();
dsDetail.setDataSetModelConfigs(viewModelConfigs);
dataSetReq.setDataSetDetail(dsDetail);
List<DataSetModelConfig> dataSetModelConfigs = getDataSetModelConfigs(domain.getId());
DataSetDetail dataSetDetail = new DataSetDetail();
dataSetDetail.setDataSetModelConfigs(dataSetModelConfigs);
dataSetReq.setDataSetDetail(dataSetDetail);
dataSetReq.setTypeEnum(TypeEnums.DATASET);
QueryConfig queryConfig = new QueryConfig();
AggregateTypeDefaultConfig aggregateTypeDefaultConfig = new AggregateTypeDefaultConfig();
TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig();
@@ -273,76 +285,84 @@ public class DuSQLDemo extends S2BaseDemo {
aggregateTypeDefaultConfig.setTimeDefaultConfig(timeDefaultConfig);
queryConfig.setAggregateTypeDefaultConfig(aggregateTypeDefaultConfig);
dataSetReq.setQueryConfig(queryConfig);
dataSetService.save(dataSetReq, defaultUser);
return dataSetService.save(dataSetReq, defaultUser);
}
public void addModelRela_1() {
public void addModelRela_1(DomainResp domain, ModelResp fromModel, ModelResp toModel) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions
.add(new JoinCondition("company_id", "company_id", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(4L);
modelRelaReq.setFromModelId(9L);
modelRelaReq.setToModelId(10L);
modelRelaReq.setJoinType("inner join");
modelRelaReq.setDomainId(domain.getId());
modelRelaReq.setFromModelId(fromModel.getId());
modelRelaReq.setToModelId(toModel.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_2() {
public void addModelRela_2(DomainResp domain, ModelResp fromModel, ModelResp toModel) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions
.add(new JoinCondition("company_id", "company_id", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(4L);
modelRelaReq.setFromModelId(9L);
modelRelaReq.setToModelId(11L);
modelRelaReq.setJoinType("inner join");
modelRelaReq.setDomainId(domain.getId());
modelRelaReq.setFromModelId(fromModel.getId());
modelRelaReq.setToModelId(toModel.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_3() {
public void addModelRela_3(DomainResp domain, ModelResp fromModel, ModelResp toModel) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions.add(new JoinCondition("brand_id", "brand_id", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(4L);
modelRelaReq.setFromModelId(10L);
modelRelaReq.setToModelId(11L);
modelRelaReq.setJoinType("inner join");
modelRelaReq.setDomainId(domain.getId());
modelRelaReq.setFromModelId(fromModel.getId());
modelRelaReq.setToModelId(toModel.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
public void addModelRela_4() {
public void addModelRela_4(DomainResp domain, ModelResp fromModel, ModelResp toModel) {
List<JoinCondition> joinConditions = Lists.newArrayList();
joinConditions.add(new JoinCondition("brand_id", "brand_id", FilterOperatorEnum.EQUALS));
ModelRela modelRelaReq = new ModelRela();
modelRelaReq.setDomainId(4L);
modelRelaReq.setFromModelId(10L);
modelRelaReq.setToModelId(12L);
modelRelaReq.setJoinType("inner join");
modelRelaReq.setDomainId(domain.getId());
modelRelaReq.setFromModelId(fromModel.getId());
modelRelaReq.setToModelId(toModel.getId());
modelRelaReq.setJoinType("left join");
modelRelaReq.setJoinConditions(joinConditions);
modelRelaService.save(modelRelaReq, defaultUser);
}
private void addAgent() {
private void addAgent(Long dataSetId) {
Agent agent = new Agent();
agent.setName("DuSQL 互联网企业");
agent.setDescription("DuSQL");
agent.setName("企业分析助手");
agent.setDescription("帮忙您对企业的员工数、收入、利润经营指标分析");
agent.setStatus(1);
agent.setEnableSearch(1);
agent.setExamples(Lists.newArrayList());
agent.setExamples(
Lists.newArrayList("各公司员工都有多少人", "利润最高的公司top 3", "英伟达2024年利润", "特斯拉下有哪些品牌"));
ToolConfig toolConfig = new ToolConfig();
// configure tools
DatasetTool datasetTool = new DatasetTool();
datasetTool.setId("1");
datasetTool.setType(AgentToolType.DATASET);
datasetTool.setDataSetIds(Lists.newArrayList(4L));
datasetTool.setDataSetIds(Lists.newArrayList(dataSetId));
toolConfig.getTools().add(datasetTool);
agent.setToolConfig(JSONObject.toJSONString(toolConfig));
log.info("agent:{}", JsonUtil.toString(agent));
// configure chat apps
Map<String, ChatApp> chatAppConfig =
Maps.newHashMap(ChatAppManager.getAllApps(AppModule.CHAT));
chatAppConfig.values().forEach(app -> app.setChatModelId(demoChatModel.getId()));
agent.setChatAppConfig(chatAppConfig);
agentService.createAgent(agent, defaultUser);
}
}

View File

@@ -45,8 +45,8 @@ import java.util.Map;
@Component
@Slf4j
@Order(2)
public class S2ArtistDemo extends S2BaseDemo {
@Order(3)
public class S2SingerDemo extends S2BaseDemo {
public void doRun() {
try {
@@ -83,7 +83,7 @@ public class S2ArtistDemo extends S2BaseDemo {
public DomainResp addDomain() {
DomainReq domainReq = new DomainReq();
domainReq.setName("歌手");
domainReq.setName("歌手数据");
domainReq.setBizName("singer");
domainReq.setParentId(0L);
domainReq.setStatus(StatusEnum.ONLINE.getCode());
@@ -145,7 +145,7 @@ public class S2ArtistDemo extends S2BaseDemo {
public long addDataSet(DomainResp singerDomain, ModelResp singerModel) {
DataSetReq dataSetReq = new DataSetReq();
dataSetReq.setName("歌手数据集");
dataSetReq.setName("歌手数据集");
dataSetReq.setBizName("singer");
dataSetReq.setDomainId(singerDomain.getId());
dataSetReq.setDescription("包含歌手相关标签和指标信息");
@@ -167,8 +167,8 @@ public class S2ArtistDemo extends S2BaseDemo {
private void addAgent(long dataSetId) {
Agent agent = new Agent();
agent.setName("做圈选");
agent.setDescription("助您用自然语言进行圈选,支持多条件组合筛选");
agent.setName("艺人分析助手");
agent.setDescription("忙您对不同流派、区域的艺人做分析查询");
agent.setStatus(1);
agent.setEnableSearch(1);
agent.setExamples(Lists.newArrayList("国风流派歌手", "港台歌手", "周杰伦流派"));

View File

@@ -6,7 +6,6 @@ import com.google.common.collect.Maps;
import com.tencent.supersonic.chat.server.agent.Agent;
import com.tencent.supersonic.chat.server.agent.ToolConfig;
import com.tencent.supersonic.chat.server.executor.PlainTextExecutor;
import com.tencent.supersonic.chat.server.parser.PlainTextParser;
import com.tencent.supersonic.common.pojo.ChatApp;
import com.tencent.supersonic.common.pojo.enums.AppModule;
import com.tencent.supersonic.common.util.ChatAppManager;
@@ -21,12 +20,12 @@ import java.util.stream.Collectors;
@Component
@Slf4j
@Order(2)
public class SmallTalkDemo extends S2BaseDemo {
@Order(10)
public class S2SmallTalkDemo extends S2BaseDemo {
public void doRun() {
Agent agent = new Agent();
agent.setName("闲聊");
agent.setName("闲聊助手");
agent.setDescription("直接与大模型对话,验证连通性");
agent.setStatus(1);
agent.setEnableSearch(0);

View File

@@ -47,8 +47,6 @@ import com.tencent.supersonic.headless.api.pojo.enums.MetricDefineType;
import com.tencent.supersonic.headless.api.pojo.enums.SemanticType;
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
import com.tencent.supersonic.headless.api.pojo.request.DataSetReq;
import com.tencent.supersonic.headless.api.pojo.request.DictItemReq;
import com.tencent.supersonic.headless.api.pojo.request.DictSingleTaskReq;
import com.tencent.supersonic.headless.api.pojo.request.DimensionReq;
import com.tencent.supersonic.headless.api.pojo.request.DomainReq;
import com.tencent.supersonic.headless.api.pojo.request.MetricReq;
@@ -104,8 +102,8 @@ public class S2VisitsDemo extends S2BaseDemo {
updateMetric_pv(pvUvModel, departmentDimension, userDimension, metricPv);
// create dict conf for dimensions
createDictConf(departmentDimension);
createDictConf(userDimension);
enableDimensionValue(departmentDimension);
enableDimensionValue(userDimension);
// create data set
DataSetResp s2DataSet = addDataSet(s2Domain);
@@ -157,8 +155,8 @@ public class S2VisitsDemo extends S2BaseDemo {
private Integer addAgent(long dataSetId) {
Agent agent = new Agent();
agent.setName("算指标");
agent.setDescription("助您用自然语言查询指标,支持时间限定、条件筛选、下钻维度以及聚合统计");
agent.setName("超音数分析助手");
agent.setDescription("忙您对超音数产品的用户访问情况做分析");
agent.setStatus(1);
agent.setEnableSearch(1);
agent.setExamples(Lists.newArrayList("近15天超音数访问次数汇总", "按部门统计超音数的访问人数", "对比alice和lucy的停留时长",
@@ -184,7 +182,7 @@ public class S2VisitsDemo extends S2BaseDemo {
public DomainResp addDomain() {
DomainReq domainReq = new DomainReq();
domainReq.setName("超音数");
domainReq.setName("产品数据");
domainReq.setBizName("supersonic");
domainReq.setParentId(0L);
domainReq.setStatus(StatusEnum.ONLINE.getCode());
@@ -360,13 +358,6 @@ public class S2VisitsDemo extends S2BaseDemo {
dimensionService.updateDimension(dimensionReq, defaultUser);
}
private void createDictConf(DimensionResp dimension) {
dictConfService.addDictConf(DictItemReq.builder().type(TypeEnums.DIMENSION)
.itemId(dimension.getId()).status(StatusEnum.ONLINE).build(), defaultUser);
dictTaskService.addDictTask(DictSingleTaskReq.builder().itemId(dimension.getId())
.type(TypeEnums.DIMENSION).build(), defaultUser);
}
public void updateMetric(ModelResp stayTimeModel, DimensionResp departmentDimension,
DimensionResp userDimension) throws Exception {
MetricResp stayHoursMetric = metricService.getMetric(stayTimeModel.getId(), "stay_hours");

View File

@@ -6,8 +6,8 @@ spring:
password: semantic
sql:
init:
schema-locations: classpath:db/schema-h2.sql
data-locations: classpath:db/data-h2.sql
schema-locations: classpath:db/schema-h2.sql,classpath:db/schema-h2-demo.sql
data-locations: classpath:db/data-h2.sql,classpath:db/data-h2-demo.sql
h2:
console:
path: /h2-console/semantic

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,97 @@
-------S2VisitsDemo
CREATE TABLE IF NOT EXISTS `s2_user_department` (
`user_name` varchar(200) NOT NULL,
`department` varchar(200) NOT NULL, -- department of user
PRIMARY KEY (`user_name`,`department`)
);
COMMENT ON TABLE s2_user_department IS 'user_department_info';
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`page` varchar(200) NOT NULL
);
COMMENT ON TABLE s2_pv_uv_statis IS 's2_pv_uv_statis';
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`stay_hours` DOUBLE NOT NULL,
`page` varchar(200) NOT NULL
);
COMMENT ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info';
-------S2ArtistDemo
CREATE TABLE IF NOT EXISTS `singer` (
`singer_name` varchar(200) NOT NULL,
`act_area` varchar(200) NOT NULL,
`song_name` varchar(200) NOT NULL,
`genre` varchar(200) NOT NULL,
`js_play_cnt` bigINT DEFAULT NULL,
`down_cnt` bigINT DEFAULT NULL,
`favor_cnt` bigINT DEFAULT NULL,
PRIMARY KEY (`singer_name`)
);
COMMENT ON TABLE singer IS 'singer_info';
CREATE TABLE IF NOT EXISTS `genre` (
`g_name` varchar(20) NOT NULL , -- genre name
`rating` INT ,
`most_popular_in` varchar(50) ,
PRIMARY KEY (`g_name`)
);
COMMENT ON TABLE genre IS 'genre';
CREATE TABLE IF NOT EXISTS `artist` (
`artist_name` varchar(50) NOT NULL , -- genre name
`citizenship` varchar(20) ,
`gender` varchar(20) ,
`g_name` varchar(50),
PRIMARY KEY (`artist_name`,`citizenship`)
);
COMMENT ON TABLE artist IS 'artist';
-------S2CompanyDemo
CREATE TABLE IF NOT EXISTS `company` (
`imp_date` varchar(50) ,
`company_id` varchar(50) NOT NULL ,
`company_name` varchar(50) NOT NULL ,
`headquarter_address` varchar(50) NOT NULL ,
`company_established_time` varchar(20) NOT NULL ,
`founder` varchar(20) NOT NULL ,
`ceo` varchar(20) NOT NULL ,
`annual_turnover` bigint(15) ,
`employee_count` int(7) ,
PRIMARY KEY (`company_id`)
);
CREATE TABLE IF NOT EXISTS `brand` (
`imp_date` varchar(50) ,
`brand_id` varchar(50) NOT NULL ,
`brand_name` varchar(50) NOT NULL ,
`brand_established_time` varchar(20) NOT NULL ,
`company_id` varchar(50) NOT NULL ,
`legal_representative` varchar(20) NOT NULL ,
`registered_capital` bigint(15) ,
PRIMARY KEY (`brand_id`)
);
CREATE TABLE IF NOT EXISTS `company_revenue` (
`imp_date` varchar(50) ,
`company_id` varchar(50) NOT NULL ,
`brand_id` varchar(50) NOT NULL ,
`revenue_proportion` double NOT NULL,
`profit_proportion` double NOT NULL ,
`expenditure_proportion` double NOT NULL
);
CREATE TABLE IF NOT EXISTS `company_brand_revenue` (
`imp_date` varchar(50) ,
`year_time` varchar(10) NOT NULL ,
`brand_id` varchar(50) NOT NULL ,
`revenue` bigint(15) NOT NULL,
`profit` bigint(15) NOT NULL ,
`revenue_growth_year_on_year` double NOT NULL ,
`profit_growth_year_on_year` double NOT NULL
);

View File

@@ -401,41 +401,6 @@ CREATE TABLE IF NOT EXISTS s2_agent
PRIMARY KEY (`id`)
); COMMENT ON TABLE s2_agent IS 'agent information table';
-------demo for semantic and chat
CREATE TABLE IF NOT EXISTS `s2_user_department` (
`user_name` varchar(200) NOT NULL,
`department` varchar(200) NOT NULL, -- department of user
PRIMARY KEY (`user_name`,`department`)
);
COMMENT ON TABLE s2_user_department IS 'user_department_info';
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`page` varchar(200) NOT NULL
);
COMMENT ON TABLE s2_pv_uv_statis IS 's2_pv_uv_statis';
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`stay_hours` DOUBLE NOT NULL,
`page` varchar(200) NOT NULL
);
COMMENT ON TABLE s2_stay_time_statis IS 's2_stay_time_statis_info';
CREATE TABLE IF NOT EXISTS `singer` (
`singer_name` varchar(200) NOT NULL,
`act_area` varchar(200) NOT NULL,
`song_name` varchar(200) NOT NULL,
`genre` varchar(200) NOT NULL,
`js_play_cnt` bigINT DEFAULT NULL,
`down_cnt` bigINT DEFAULT NULL,
`favor_cnt` bigINT DEFAULT NULL,
PRIMARY KEY (`singer_name`)
);
COMMENT ON TABLE singer IS 'singer_info';
CREATE TABLE IF NOT EXISTS `s2_dictionary_conf` (
`id` INT NOT NULL AUTO_INCREMENT,
`description` varchar(255) ,
@@ -464,96 +429,6 @@ CREATE TABLE IF NOT EXISTS `s2_dictionary_task` (
);
COMMENT ON TABLE s2_dictionary_task IS 'dictionary task information table';
-- benchmark
CREATE TABLE IF NOT EXISTS `genre` (
`g_name` varchar(20) NOT NULL , -- genre name
`rating` INT ,
`most_popular_in` varchar(50) ,
PRIMARY KEY (`g_name`)
);
COMMENT ON TABLE genre IS 'genre';
CREATE TABLE IF NOT EXISTS `artist` (
`artist_name` varchar(50) NOT NULL , -- genre name
`citizenship` varchar(20) ,
`gender` varchar(20) ,
`g_name` varchar(50),
PRIMARY KEY (`artist_name`,`citizenship`)
);
COMMENT ON TABLE artist IS 'artist';
CREATE TABLE IF NOT EXISTS `files` (
`f_id` bigINT NOT NULL,
`artist_name` varchar(50) ,
`file_size` varchar(20) ,
`duration` varchar(20) ,
`formats` varchar(20) ,
PRIMARY KEY (`f_id`)
);
COMMENT ON TABLE files IS 'files';
CREATE TABLE IF NOT EXISTS `song` (
`imp_date` varchar(50) ,
`song_name` varchar(50) ,
`artist_name` varchar(50) ,
`country` varchar(20) ,
`f_id` bigINT ,
`g_name` varchar(20) ,
`rating` INT ,
`languages` varchar(20) ,
`releasedate` varchar(50) ,
`resolution` bigINT NOT NULL,
PRIMARY KEY (`imp_date`,`song_name`)
);
COMMENT ON TABLE song IS 'song';
CREATE TABLE IF NOT EXISTS `company` (
`imp_date` varchar(50) ,
`company_id` varchar(50) NOT NULL ,
`company_name` varchar(50) NOT NULL ,
`headquarter_address` varchar(50) NOT NULL ,
`company_established_time` varchar(20) NOT NULL ,
`founder` varchar(20) NOT NULL ,
`ceo` varchar(20) NOT NULL ,
`annual_turnover` bigint(15) ,
`employee_count` int(7) ,
PRIMARY KEY (`company_id`)
);
CREATE TABLE IF NOT EXISTS `brand` (
`imp_date` varchar(50) ,
`brand_id` varchar(50) NOT NULL ,
`brand_name` varchar(50) NOT NULL ,
`brand_established_time` varchar(20) NOT NULL ,
`company_id` varchar(50) NOT NULL ,
`legal_representative` varchar(20) NOT NULL ,
`registered_capital` bigint(15) ,
PRIMARY KEY (`brand_id`)
);
CREATE TABLE IF NOT EXISTS `company_revenue` (
`imp_date` varchar(50) ,
`company_id` varchar(50) NOT NULL ,
`brand_id` varchar(50) NOT NULL ,
`revenue_proportion` double NOT NULL,
`profit_proportion` double NOT NULL ,
`expenditure_proportion` double NOT NULL
);
CREATE TABLE IF NOT EXISTS `company_brand_revenue` (
`imp_date` varchar(50) ,
`year_time` varchar(10) NOT NULL ,
`brand_id` varchar(50) NOT NULL ,
`revenue` bigint(15) NOT NULL,
`profit` bigint(15) NOT NULL ,
`revenue_growth_year_on_year` double NOT NULL ,
`profit_growth_year_on_year` double NOT NULL
);
CREATE TABLE IF NOT EXISTS s2_system_config
(
id INT PRIMARY KEY AUTO_INCREMENT,

View File

@@ -0,0 +1,64 @@
CREATE TABLE IF NOT EXISTS `s2_user_department` (
`user_name` varchar(200) NOT NULL,
`department` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`page` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`stay_hours` DOUBLE NOT NULL,
`page` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `singer` (
`singer_name` varchar(200) NOT NULL,
`act_area` varchar(200) NOT NULL,
`song_name` varchar(200) NOT NULL,
`genre` varchar(200) NOT NULL,
`js_play_cnt` bigint DEFAULT NULL,
`down_cnt` bigint DEFAULT NULL,
`favor_cnt` bigint DEFAULT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- benchmark
CREATE TABLE IF NOT EXISTS `genre` (
`g_name` varchar(20) NOT NULL , -- genre name
`rating` INT ,
`most_popular_in` varchar(50) ,
PRIMARY KEY (`g_name`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `artist` (
`artist_name` varchar(50) NOT NULL , -- genre name
`citizenship` varchar(20) ,
`gender` varchar(20) ,
`g_name` varchar(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `files` (
`f_id` bigINT NOT NULL,
`artist_name` varchar(50) ,
`file_size` varchar(20) ,
`duration` varchar(20) ,
`formats` varchar(20) ,
PRIMARY KEY (`f_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `song` (
`imp_date` varchar(50) ,
`song_name` varchar(50) ,
`artist_name` varchar(50) ,
`country` varchar(20) ,
`f_id` bigINT ,
`g_name` varchar(20) ,
`rating` int ,
`languages` varchar(20) ,
`releasedate` varchar(50) ,
`resolution` bigINT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

View File

@@ -1,68 +1,3 @@
CREATE TABLE IF NOT EXISTS `s2_user_department` (
`user_name` varchar(200) NOT NULL,
`department` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_pv_uv_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`page` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_stay_time_statis` (
`imp_date` varchar(200) NOT NULL,
`user_name` varchar(200) NOT NULL,
`stay_hours` DOUBLE NOT NULL,
`page` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `singer` (
`singer_name` varchar(200) NOT NULL,
`act_area` varchar(200) NOT NULL,
`song_name` varchar(200) NOT NULL,
`genre` varchar(200) NOT NULL,
`js_play_cnt` bigint DEFAULT NULL,
`down_cnt` bigint DEFAULT NULL,
`favor_cnt` bigint DEFAULT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- benchmark
CREATE TABLE IF NOT EXISTS `genre` (
`g_name` varchar(20) NOT NULL , -- genre name
`rating` INT ,
`most_popular_in` varchar(50) ,
PRIMARY KEY (`g_name`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `artist` (
`artist_name` varchar(50) NOT NULL , -- genre name
`citizenship` varchar(20) ,
`gender` varchar(20) ,
`g_name` varchar(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `files` (
`f_id` bigINT NOT NULL,
`artist_name` varchar(50) ,
`file_size` varchar(20) ,
`duration` varchar(20) ,
`formats` varchar(20) ,
PRIMARY KEY (`f_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `song` (
`imp_date` varchar(50) ,
`song_name` varchar(50) ,
`artist_name` varchar(50) ,
`country` varchar(20) ,
`f_id` bigINT ,
`g_name` varchar(20) ,
`rating` int ,
`languages` varchar(20) ,
`releasedate` varchar(50) ,
`resolution` bigINT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `s2_agent` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,

View File

@@ -21,7 +21,7 @@ s2:
date: true
demo:
names: S2VisitsDemo,S2ArtistDemo,SmallTalkDemo
names: S2VisitsDemo,S2SingerDemo,S2CompanyDemo,S2SmallTalkDemo,
enableLLM: true
authentication:

View File

@@ -21,7 +21,7 @@ s2:
date: true
demo:
names: S2VisitsDemo,S2ArtistDemo
names: S2VisitsDemo,S2SingerDemo
enableLLM: false
authentication: