mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
[feature](chat)Support delete all memory from the agent management.
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
package com.tencent.supersonic.chat.api.pojo.request;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ChatMemoryDeleteReq {
|
||||||
|
|
||||||
|
private List<Long> ids;
|
||||||
|
|
||||||
|
private Integer agentId;
|
||||||
|
}
|
||||||
@@ -35,9 +35,7 @@ public class ChatMemoryRepositoryImpl implements ChatMemoryRepository {
|
|||||||
if (CollectionUtils.isEmpty(ids)) {
|
if (CollectionUtils.isEmpty(ids)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (Long id : ids) {
|
chatMemoryMapper.deleteByIds(ids);
|
||||||
chatMemoryMapper.deleteById(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import com.github.pagehelper.PageInfo;
|
|||||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||||
import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult;
|
import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryCreateReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryCreateReq;
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryDeleteReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
||||||
import com.tencent.supersonic.chat.server.pojo.ChatMemory;
|
import com.tencent.supersonic.chat.server.pojo.ChatMemory;
|
||||||
import com.tencent.supersonic.chat.server.service.MemoryService;
|
import com.tencent.supersonic.chat.server.service.MemoryService;
|
||||||
import com.tencent.supersonic.common.pojo.User;
|
import com.tencent.supersonic.common.pojo.User;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -53,8 +53,10 @@ public class MemoryController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("batchDelete")
|
@PostMapping("batchDelete")
|
||||||
public Boolean batchDelete(@RequestBody MetaBatchReq metaBatchReq) {
|
public Boolean deleteMemory(@RequestBody ChatMemoryDeleteReq chatMemoryDeleteReq,
|
||||||
memoryService.batchDelete(metaBatchReq.getIds());
|
HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
User user = UserHolder.findUser(request, response);
|
||||||
|
memoryService.batchDelete(chatMemoryDeleteReq, user);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.tencent.supersonic.chat.server.service;
|
package com.tencent.supersonic.chat.server.service;
|
||||||
|
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryDeleteReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryFilter;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryFilter;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
||||||
@@ -14,7 +15,7 @@ public interface MemoryService {
|
|||||||
|
|
||||||
void updateMemory(ChatMemoryUpdateReq chatMemoryUpdateReq, User user);
|
void updateMemory(ChatMemoryUpdateReq chatMemoryUpdateReq, User user);
|
||||||
|
|
||||||
void batchDelete(List<Long> ids);
|
void batchDelete(ChatMemoryDeleteReq chatMemoryDeleteReq, User user);
|
||||||
|
|
||||||
PageInfo<ChatMemory> pageMemories(PageMemoryReq pageMemoryReq);
|
PageInfo<ChatMemory> pageMemories(PageMemoryReq pageMemoryReq);
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.github.pagehelper.PageHelper;
|
|||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult;
|
import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult;
|
||||||
import com.tencent.supersonic.chat.api.pojo.enums.MemoryStatus;
|
import com.tencent.supersonic.chat.api.pojo.enums.MemoryStatus;
|
||||||
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryDeleteReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryFilter;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryFilter;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq;
|
||||||
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq;
|
||||||
@@ -26,6 +27,7 @@ import org.springframework.boot.CommandLineRunner;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -108,14 +110,21 @@ public class MemoryServiceImpl implements MemoryService, CommandLineRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchDelete(List<Long> ids) {
|
public void batchDelete(ChatMemoryDeleteReq chatMemoryDeleteReq, User user) {
|
||||||
QueryWrapper<ChatMemoryDO> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<ChatMemoryDO> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.lambda().in(ChatMemoryDO::getId, ids);
|
if (!CollectionUtils.isEmpty(chatMemoryDeleteReq.getIds())) {
|
||||||
|
queryWrapper.lambda().in(ChatMemoryDO::getId, chatMemoryDeleteReq.getIds());
|
||||||
|
}
|
||||||
|
if (chatMemoryDeleteReq.getAgentId() != null) {
|
||||||
|
queryWrapper.lambda().eq(ChatMemoryDO::getAgentId, chatMemoryDeleteReq.getAgentId());
|
||||||
|
}
|
||||||
List<ChatMemoryDO> chatMemoryDOS = chatMemoryRepository.getMemories(queryWrapper);
|
List<ChatMemoryDO> chatMemoryDOS = chatMemoryRepository.getMemories(queryWrapper);
|
||||||
|
List<Long> ids = new ArrayList<>();
|
||||||
chatMemoryDOS.forEach(chatMemoryDO -> {
|
chatMemoryDOS.forEach(chatMemoryDO -> {
|
||||||
if (MemoryStatus.ENABLED.toString().equals(chatMemoryDO.getStatus().trim())) {
|
if (MemoryStatus.ENABLED.toString().equals(chatMemoryDO.getStatus().trim())) {
|
||||||
disableMemory(chatMemoryDO);
|
disableMemory(chatMemoryDO);
|
||||||
}
|
}
|
||||||
|
ids.add(chatMemoryDO.getId());
|
||||||
});
|
});
|
||||||
chatMemoryRepository.batchDelete(ids);
|
chatMemoryRepository.batchDelete(ids);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,7 +144,8 @@ public class PromptHelper {
|
|||||||
dimensionStr.append(" ALIAS '").append(alias).append("'");
|
dimensionStr.append(" ALIAS '").append(alias).append("'");
|
||||||
}
|
}
|
||||||
if (Objects.nonNull(dimension.getExtInfo().get(DIMENSION_DATA_TYPE))) {
|
if (Objects.nonNull(dimension.getExtInfo().get(DIMENSION_DATA_TYPE))) {
|
||||||
dimensionStr.append(" DATATYPE '").append(dimension.getExtInfo().get(DIMENSION_DATA_TYPE)).append("'");
|
dimensionStr.append(" DATATYPE '")
|
||||||
|
.append(dimension.getExtInfo().get(DIMENSION_DATA_TYPE)).append("'");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(dimension.getTimeFormat())) {
|
if (StringUtils.isNotEmpty(dimension.getTimeFormat())) {
|
||||||
dimensionStr.append(" FORMAT '").append(dimension.getTimeFormat()).append("'");
|
dimensionStr.append(" FORMAT '").append(dimension.getTimeFormat()).append("'");
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ public class SqlQueryParser implements QueryParser {
|
|||||||
SqlQuery sqlQuery = queryStatement.getSqlQuery();
|
SqlQuery sqlQuery = queryStatement.getSqlQuery();
|
||||||
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
|
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
|
||||||
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
|
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
|
||||||
List<Pair<String, String>> ontologyMetricsDimensionsAndBizName = Collections.synchronizedList(new ArrayList<>());
|
List<Pair<String, String>> ontologyMetricsDimensionsAndBizName =
|
||||||
|
Collections.synchronizedList(new ArrayList<>());
|
||||||
queryFields.removeAll(queryAliases);
|
queryFields.removeAll(queryAliases);
|
||||||
Ontology ontology = queryStatement.getOntology();
|
Ontology ontology = queryStatement.getOntology();
|
||||||
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
|
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
|
||||||
|
|||||||
@@ -519,7 +519,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
|
|||||||
|
|
||||||
private DataItem getDataItem(DimensionDO dimensionDO) {
|
private DataItem getDataItem(DimensionDO dimensionDO) {
|
||||||
ModelResp modelResp = modelService.getModel(dimensionDO.getModelId());
|
ModelResp modelResp = modelService.getModel(dimensionDO.getModelId());
|
||||||
if(modelResp == null) {
|
if (modelResp == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
DimensionResp dimensionResp = DimensionConverter.convert2DimensionResp(dimensionDO,
|
DimensionResp dimensionResp = DimensionConverter.convert2DimensionResp(dimensionDO,
|
||||||
@@ -530,10 +530,8 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DataEvent getDataEvent(List<DimensionDO> dimensionDOS, EventType eventType) {
|
private DataEvent getDataEvent(List<DimensionDO> dimensionDOS, EventType eventType) {
|
||||||
List<DataItem> dataItems =
|
List<DataItem> dataItems = dimensionDOS.stream().map(this::getDataItem)
|
||||||
dimensionDOS.stream().map(this::getDataItem)
|
.filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
return new DataEvent(this, dataItems, eventType);
|
return new DataEvent(this, dataItems, eventType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -682,10 +682,8 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DataEvent getDataEvent(List<MetricDO> metricDOS, EventType eventType) {
|
private DataEvent getDataEvent(List<MetricDO> metricDOS, EventType eventType) {
|
||||||
List<DataItem> dataItems =
|
List<DataItem> dataItems = metricDOS.stream().map(this::getDataItem)
|
||||||
metricDOS.stream().map(this::getDataItem)
|
.filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
return new DataEvent(this, dataItems, eventType);
|
return new DataEvent(this, dataItems, eventType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,8 +96,9 @@ public class DataSetSchemaBuilder {
|
|||||||
Set<SchemaElement> dimensions = new HashSet<>();
|
Set<SchemaElement> dimensions = new HashSet<>();
|
||||||
Map<Long, Map<String, String>> dataTypeMap = Maps.newHashMap();
|
Map<Long, Map<String, String>> dataTypeMap = Maps.newHashMap();
|
||||||
for (ModelResp modelResp : resp.getModelResps()) {
|
for (ModelResp modelResp : resp.getModelResps()) {
|
||||||
dataTypeMap.put(modelResp.getId(), modelResp.getModelDetail().getFields().stream()
|
dataTypeMap.put(modelResp.getId(),
|
||||||
.collect(Collectors.toMap(Field::getFieldName, Field::getDataType, (k1, k2) -> k2)));
|
modelResp.getModelDetail().getFields().stream().collect(Collectors
|
||||||
|
.toMap(Field::getFieldName, Field::getDataType, (k1, k2) -> k2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DimSchemaResp dim : resp.getDimensions()) {
|
for (DimSchemaResp dim : resp.getDimensions()) {
|
||||||
@@ -119,7 +120,8 @@ public class DataSetSchemaBuilder {
|
|||||||
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_TYPE, dim.getType());
|
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_TYPE, dim.getType());
|
||||||
// data type
|
// data type
|
||||||
if (dim.getDataType() != null) {
|
if (dim.getDataType() != null) {
|
||||||
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_DATA_TYPE, dim.getDataType());
|
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_DATA_TYPE,
|
||||||
|
dim.getDataType());
|
||||||
} else {
|
} else {
|
||||||
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_DATA_TYPE,
|
dimToAdd.getExtInfo().put(DimensionConstants.DIMENSION_DATA_TYPE,
|
||||||
dataTypeMap.get(dim.getModelId()).get(dim.getBizName()));
|
dataTypeMap.get(dim.getModelId()).get(dim.getBizName()));
|
||||||
|
|||||||
Reference in New Issue
Block a user