(improvement)(project) support for modifying filter conditions and fix group by pushdown and add windows scipt (#49)

Co-authored-by: lexluo <lexluo@tencent.com>
This commit is contained in:
lexluo09
2023-09-03 23:51:47 +08:00
committed by GitHub
parent 8440f1f30e
commit 559ef974b0
317 changed files with 7449 additions and 9413 deletions

View File

@@ -1,7 +1,5 @@
package com.tencent.supersonic.integration;
import static org.junit.Assert.assertEquals;
import com.tencent.supersonic.StandaloneLauncher;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
@@ -16,9 +14,6 @@ import com.tencent.supersonic.chat.service.ChatService;
import com.tencent.supersonic.chat.service.ConfigService;
import com.tencent.supersonic.chat.service.QueryService;
import com.tencent.supersonic.util.DataUtils;
import java.time.LocalDate;
import java.util.Set;
import java.util.stream.Collectors;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -27,6 +22,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.LocalDate;
import java.util.Set;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = StandaloneLauncher.class)
@ActiveProfiles("local")

View File

@@ -1,7 +1,5 @@
package com.tencent.supersonic.integration;
import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.chat.api.pojo.request.QueryFilter;
@@ -11,9 +9,10 @@ import com.tencent.supersonic.chat.query.rule.metric.MetricEntityQuery;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum;
import com.tencent.supersonic.util.DataUtils;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE;
public class EntityQueryTest extends BaseQueryTest {

View File

@@ -1,7 +1,5 @@
package com.tencent.supersonic.integration;
import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
import com.tencent.supersonic.chat.query.rule.metric.MetricFilterQuery;
@@ -9,11 +7,14 @@ import com.tencent.supersonic.chat.query.rule.metric.MetricGroupByQuery;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.semantic.api.query.enums.FilterOperatorEnum;
import com.tencent.supersonic.util.DataUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.junit.Test;
import org.junit.jupiter.api.Order;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import static com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum.NONE;
public class MultiTurnsTest extends BaseQueryTest {
@Test

View File

@@ -1,43 +0,0 @@
package com.tencent.supersonic.integration.llm;
import static org.mockito.Mockito.when;
import com.tencent.supersonic.chat.api.component.SemanticParser;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
import com.tencent.supersonic.chat.api.pojo.QueryContext;
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
import com.tencent.supersonic.chat.config.LLMConfig;
import com.tencent.supersonic.chat.parser.llm.dsl.LLMDslParser;
import com.tencent.supersonic.chat.utils.ComponentFactory;
import com.tencent.supersonic.integration.BaseQueryTest;
import com.tencent.supersonic.util.DataUtils;
import org.junit.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
public class LLMDslParserTest extends BaseQueryTest {
@MockBean
protected LLMConfig llmConfig;
@Test
public void parse() throws Exception {
String queryText = "周杰伦专辑十一月的萧邦有哪些歌曲";
QueryReq queryReq = DataUtils.getQueryContextReq(10, queryText);
QueryContext queryContext = new QueryContext();
queryContext.setRequest(queryReq);
SemanticParser dslParser = ComponentFactory.getSemanticParsers().stream().filter(parser -> {
if (parser instanceof LLMDslParser) {
return true;
} else {
return false;
}
}
).findFirst().get();
when(llmConfig.getUrl()).thenReturn("llmUrl");
ChatContext chatCtx = new ChatContext();
dslParser.parse(queryContext, chatCtx);
}
}

View File

@@ -1,5 +1,6 @@
com.tencent.supersonic.chat.api.component.SchemaMapper=\
com.tencent.supersonic.chat.mapper.HanlpDictMapper
com.tencent.supersonic.chat.api.component.SemanticParser=\
com.tencent.supersonic.chat.parser.rule.QueryModeParser, \
com.tencent.supersonic.chat.parser.rule.ContextInheritParser, \
@@ -8,13 +9,18 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\
com.tencent.supersonic.chat.parser.rule.AggregateTypeParser, \
com.tencent.supersonic.chat.parser.llm.interpret.MetricInterpretParser
# com.tencent.supersonic.chat.parser.llm.DSLQueryFunction
com.tencent.supersonic.chat.api.component.QueryProcessor=\
com.tencent.supersonic.chat.application.processor.SemanticQueryProcessor
com.tencent.supersonic.chat.api.component.SemanticLayer=\
com.tencent.supersonic.knowledge.semantic.LocalSemanticLayer
com.tencent.supersonic.chat.query.QuerySelector=\
com.tencent.supersonic.chat.query.HeuristicQuerySelector
com.tencent.supersonic.chat.application.query.DomainResolver=\
com.tencent.supersonic.chat.application.query.HeuristicDomainResolver
com.tencent.supersonic.auth.authentication.interceptor.AuthenticationInterceptor=\
com.tencent.supersonic.auth.authentication.interceptor.DefaultAuthenticationInterceptor

File diff suppressed because it is too large Load Diff

View File

@@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS `s2_chat_context`
CREATE TABLE IF NOT EXISTS `s2_chat`
(
`chat_id` BIGINT auto_increment ,-- AUTO_INCREMENT,
`agent_id` INT DEFAULT NULL,
`chat_name` varchar(100) DEFAULT NULL,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
`last_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
@@ -148,7 +149,6 @@ COMMENT ON TABLE s2_model IS 'model information';
CREATE TABLE `s2_database` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL ,
`name` varchar(255) NOT NULL ,
`description` varchar(500) DEFAULT NULL ,
`version` varchar(64) DEFAULT NULL ,
@@ -158,6 +158,8 @@ CREATE TABLE `s2_database` (
`created_by` varchar(100) NOT NULL ,
`updated_at` TIMESTAMP NOT NULL ,
`updated_by` varchar(100) NOT NULL,
`admin` varchar(500) NOT NULL,
`viewer` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`)
);
COMMENT ON TABLE s2_database IS 'database instance table';

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<contextName>logback</contextName>
<!-- <property name="LOG_PATH" value="${logback.logdir:-logs}"/>-->
<!-- <property name="LOG_PATH" value="${logback.logdir:-logs}"/>-->
<property name="LOG_PATH" value="${LOG_PATH:-logs}"/>
<property name="LOG_APPNAME" value="chat"/>
<!--输出到控制台-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n</pattern>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} %line - %msg%n</pattern>
</encoder>
</appender>
@@ -46,8 +46,7 @@
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
<FileNamePattern>${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
<FileNamePattern>${LOG_PATH}/error.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz</FileNamePattern>
<!--只保留最近90天的日志-->
<maxHistory>90</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
@@ -75,8 +74,7 @@
<!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
<FileNamePattern>${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
<FileNamePattern>${LOG_PATH}/serviceinfo.${LOG_APPNAME}.%d{yyyy-MM-dd}.log.gz</FileNamePattern>
<!--只保留最近30天的日志-->
<maxHistory>30</maxHistory>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->