Skip to content

Commit 276a2ec

Browse files
committed
[appengine] 添加 DB 数据定時清理机制
1 parent 398da20 commit 276a2ec

34 files changed

+1439
-4
lines changed

app-builder/jane/plugins/aipp-plugin/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@
122122
<groupId>io.opentelemetry</groupId>
123123
<artifactId>opentelemetry-api</artifactId>
124124
</dependency>
125+
<dependency>
126+
<groupId>com.opencsv</groupId>
127+
<artifactId>opencsv</artifactId>
128+
</dependency>
125129
<dependency>
126130
<groupId>modelengine.jade.service</groupId>
127131
<artifactId>aipp-prompt-builder-service</artifactId>

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/mapper/AippChatMapper.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,43 @@ List<ChatDto> selectChat(@Param("chatId") String chatId, @Param("offset") Intege
178178
*/
179179
List<QueryChatRsp> selectChatByCondition(@Param("condition") Map<String, String> condition,
180180
@Param("requestParam") QueryChatInfoRequest queryChatInfoRequest);
181+
182+
/**
183+
* 获取超期的对话唯一标识。
184+
*
185+
* @param expiredDays 表示超期时长的 {@code int}。
186+
* @param limit 表示查询数量的 {@code int}。
187+
* @return 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
188+
*/
189+
List<String> getExpiredChatIds(int expiredDays, int limit);
190+
191+
/**
192+
* 根据对话标识列表强制删除对话。
193+
*
194+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
195+
*/
196+
void forceDeleteChat(List<String> chatIds);
197+
198+
/**
199+
* 根据对话标识列表强制删除对话和任务实例关系。
200+
*
201+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
202+
*/
203+
void deleteWideRelationshipByChatIds(List<String> chatIds);
204+
205+
/**
206+
* 根据对话唯一标识列表批量查询会话记录实体。
207+
*
208+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
209+
* @return 表示会话记录实体列表的 {@link List}{@code <}{@link ChatInfo}{@code >}。
210+
*/
211+
List<ChatInfo> selectByChatIds(@Param("chatIds") List<String> chatIds);
212+
213+
/**
214+
* 根据对话唯一标识列表批量查询会话记录和任务实例的关系。
215+
*
216+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
217+
* @return 表示会话记录和任务实例的关系的 {@link List}{@code <}{@link ChatAndInstanceMap}{@code >}。
218+
*/
219+
List<ChatAndInstanceMap> selectTaskInstanceRelationsByChatIds(@Param("chatIds") List<String> chatIds);
181220
}

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/mapper/AippLogMapper.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import org.apache.ibatis.annotations.Param;
1414

15+
import java.time.LocalDateTime;
1516
import java.util.List;
1617

1718
/**
@@ -195,4 +196,28 @@ List<String> selectRecentInstanceIdByAippIds(List<String> aippIds, String aippTy
195196
* @param logIds 表示指定的历史记录 id 的 {@link List}{@code <}{@link Long}{@code >}。
196197
*/
197198
void deleteInstanceLogs(@Param("logIds") List<Long> logIds);
199+
200+
/**
201+
* 获取超期的调试对话记录id列表。
202+
*
203+
* @param expiredDays 表示超期时间的 {@code int}。
204+
* @param limit 表示查询条数的 {@code int}。
205+
* @return 表示历史会话记录的id列表的 {@link List}{@code <}{@link Long}{@code >}。
206+
*/
207+
List<Long> getExpireInstanceLogIds(String aippType, int expiredDays, int limit);
208+
209+
/**
210+
* 根据实例id列表强制删除会话记录。
211+
*
212+
* @param logIds 表示会话实例id列表的 {@link List}{@code <}{@link Long}{@code >}。
213+
*/
214+
void forceDeleteInstanceLogsByIds(List<Long> logIds);
215+
216+
/**
217+
* 根据日志唯一标识列表查询会话历史记录
218+
*
219+
* @param logIds 标识日志唯一标识列表的 {@link List}{@code <}{@link Long}{@code >}。
220+
* @return 表示实例历史记录列表的 {@link List}{@code <}{@link AippInstLog}{@code >}。
221+
*/
222+
List<AippInstLog> selectByLogIds(@Param("logIds") List<Long> logIds);
198223
}

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/mapper/AppBuilderRuntimeInfoMapper.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import modelengine.fit.jober.aipp.po.AppBuilderRuntimeInfoPo;
1010

11+
import java.time.LocalDateTime;
1112
import java.util.List;
1213

1314
/**
@@ -31,4 +32,20 @@ public interface AppBuilderRuntimeInfoMapper {
3132
* @param appBuilderRuntimeInfoPO {@link AppBuilderRuntimeInfoPo} 对象.
3233
*/
3334
void insertOne(AppBuilderRuntimeInfoPo appBuilderRuntimeInfoPO);
35+
36+
/**
37+
* 获取超期的运行时信息唯一标识列表。
38+
*
39+
* @param expiredDays 表示超期时间的 {@code int}。
40+
* @param limit 表示查询条数的 {@code int}。
41+
* @return 表示运行时信息唯一标识列表的 {@link List}{@code <}{@link Long}{@code >}。
42+
*/
43+
List<Long> getExpiredRuntimeInfos(int expiredDays, int limit);
44+
45+
/**
46+
* 根据运行时信息唯一标识列表强制删除会话记录。
47+
*
48+
* @param runtimeInfoIds 表示运行时信息唯一标识列表的 {@link List}{@code <}{@link Long}{@code >}。
49+
*/
50+
void deleteRuntimeInfos(List<Long> runtimeInfoIds);
3451
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) 2025 Huawei Technologies Co., Ltd. All rights reserved.
3+
* This file is a part of the ModelEngine Project.
4+
* Licensed under the MIT License. See License.txt in the project root for license information.
5+
*--------------------------------------------------------------------------------------------*/
6+
7+
package modelengine.fit.jober.aipp.repository;
8+
9+
import modelengine.fit.jober.aipp.entity.ChatAndInstanceMap;
10+
import modelengine.fit.jober.aipp.entity.ChatInfo;
11+
12+
import java.util.List;
13+
14+
/**
15+
* 应用对话repo层。
16+
*
17+
* @author 杨祥宇
18+
* @since 2025-04-09
19+
*/
20+
public interface AippChatRepository {
21+
/**
22+
* 获取超期的对话唯一标识列表。
23+
*
24+
* @param expiredDays 表示超期时长的 {@code int}。
25+
* @param limit 表示查询数量的 {@code int}。
26+
* @return 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
27+
*/
28+
List<String> getExpiredChatIds(int expiredDays, int limit);
29+
30+
/**
31+
* 根据对话标识列表强制删除对话。
32+
*
33+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
34+
*/
35+
void forceDeleteChat(List<String> chatIds);
36+
37+
/**
38+
* 根据对话唯一标识列表批量查询会话记录实体。
39+
*
40+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
41+
* @return 表示会话记录实体列表的 {@link List}{@code <}{@link ChatInfo}{@code >}。
42+
*/
43+
List<ChatInfo> selectByChatIds(List<String> chatIds);
44+
45+
/**
46+
* 根据对话唯一标识列表批量查询会话记录和任务实例的关系。
47+
*
48+
* @param chatIds 表示对话唯一标识列表的 {@link List}{@code <}{@link String}{@code >}。
49+
* @return 表示会话记录和任务实例的关系的 {@link List}{@code <}{@link ChatAndInstanceMap}{@code >}。
50+
*/
51+
List<ChatAndInstanceMap> selectTaskInstanceRelationsByChatIds(List<String> chatIds);
52+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) 2025 Huawei Technologies Co., Ltd. All rights reserved.
3+
* This file is a part of the ModelEngine Project.
4+
* Licensed under the MIT License. See License.txt in the project root for license information.
5+
*--------------------------------------------------------------------------------------------*/
6+
7+
package modelengine.fit.jober.aipp.repository;
8+
9+
import modelengine.fit.jober.aipp.entity.AippInstLog;
10+
11+
import java.util.List;
12+
13+
/**
14+
* 应用实例历史记录repo层。
15+
*
16+
* @author 杨祥宇
17+
* @since 2025-04-09
18+
*/
19+
public interface AippInstanceLogRepository {
20+
/**
21+
* 获取调试类型的应用过期历史记录。
22+
*
23+
* @param expiredDays 表示超期天数的 {@code int}。
24+
* @param limit 表示查询条数的 {@code int}。
25+
* @return 表示超期历史记录id的 {@link List}{@code <}{@link Long}{@code >}。
26+
*/
27+
List<Long> getExpireInstanceLogIds(String aippType, int expiredDays, int limit);
28+
29+
/**
30+
* 根据日志唯一标识列表强制删除历史记录。
31+
*
32+
* @param logIds 表示历史记录的唯一标识列表的 {@link List}{@code <}{@link Long}{@code >}。
33+
*/
34+
void forceDeleteInstanceLogs(List<Long> logIds);
35+
36+
/**
37+
* 根据日志唯一标识列表查询会话历史记录
38+
*
39+
* @param logIds 标识日志唯一标识列表的 {@link List}{@code <}{@link Long}{@code >}。
40+
* @return 表示实例历史记录列表的 {@link List}{@code <}{@link AippInstLog}{@code >}。
41+
*/
42+
List<AippInstLog> selectByLogIds(List<Long> logIds);
43+
}

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/repository/AppBuilderRuntimeInfoRepository.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,20 @@ public interface AppBuilderRuntimeInfoRepository {
3131
* @param info {@link AppBuilderRuntimeInfo} 运行时信息.
3232
*/
3333
void insertOne(AppBuilderRuntimeInfo info);
34+
35+
/**
36+
* 获取运行时信息过期历史记录。
37+
*
38+
* @param expiredDays 表示超期天数的 {@code int}。
39+
* @param limit 表示查询条数的 {@code int}。
40+
* @return 表示超期运行时信息id的 {@link List}{@code <}{@link Long}{@code >}。
41+
*/
42+
List<Long> getExpiredRuntimeInfos(int expiredDays, int limit);
43+
44+
/**
45+
* 根据运行时信息id列表强制删除历史记录。
46+
*
47+
* @param runtimeInfoIds 表示历史记录的id列表的 {@link List}{@code <}{@link Long}{@code >}。
48+
*/
49+
void deleteRuntimeInfos(List<Long> runtimeInfoIds);
3450
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) 2025 Huawei Technologies Co., Ltd. All rights reserved.
3+
* This file is a part of the ModelEngine Project.
4+
* Licensed under the MIT License. See License.txt in the project root for license information.
5+
*--------------------------------------------------------------------------------------------*/
6+
7+
package modelengine.fit.jober.aipp.repository.impl;
8+
9+
import modelengine.fit.jober.aipp.entity.ChatAndInstanceMap;
10+
import modelengine.fit.jober.aipp.entity.ChatInfo;
11+
import modelengine.fit.jober.aipp.mapper.AippChatMapper;
12+
import modelengine.fit.jober.aipp.repository.AippChatRepository;
13+
import modelengine.fitframework.annotation.Component;
14+
import modelengine.fitframework.transaction.Transactional;
15+
import modelengine.fitframework.util.CollectionUtils;
16+
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
20+
/**
21+
* {@link AippChatRepository}对应实现类。
22+
*
23+
* @author 杨祥宇
24+
* @since 2025-04-09
25+
*/
26+
@Component
27+
public class AippChatRepositoryImpl implements AippChatRepository {
28+
private final AippChatMapper aippChatMapper;
29+
30+
public AippChatRepositoryImpl(AippChatMapper aippChatMapper) {this.aippChatMapper = aippChatMapper;}
31+
32+
@Override
33+
public List<String> getExpiredChatIds(int expiredDays, int limit) {
34+
return aippChatMapper.getExpiredChatIds(expiredDays, limit);
35+
}
36+
37+
@Override
38+
@Transactional
39+
public void forceDeleteChat(List<String> chatIds) {
40+
if (CollectionUtils.isEmpty(chatIds)) {
41+
return;
42+
}
43+
aippChatMapper.forceDeleteChat(chatIds);
44+
aippChatMapper.deleteWideRelationshipByChatIds(chatIds);
45+
}
46+
47+
@Override
48+
public List<ChatInfo> selectByChatIds(List<String> chatIds) {
49+
if (CollectionUtils.isEmpty(chatIds)) {
50+
return new ArrayList<>();
51+
}
52+
return aippChatMapper.selectByChatIds(chatIds);
53+
}
54+
55+
@Override
56+
public List<ChatAndInstanceMap> selectTaskInstanceRelationsByChatIds(List<String> chatIds) {
57+
if (CollectionUtils.isEmpty(chatIds)) {
58+
return new ArrayList<>();
59+
}
60+
return aippChatMapper.selectTaskInstanceRelationsByChatIds(chatIds);
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) 2025 Huawei Technologies Co., Ltd. All rights reserved.
3+
* This file is a part of the ModelEngine Project.
4+
* Licensed under the MIT License. See License.txt in the project root for license information.
5+
*--------------------------------------------------------------------------------------------*/
6+
7+
package modelengine.fit.jober.aipp.repository.impl;
8+
9+
import modelengine.fit.jober.aipp.entity.AippInstLog;
10+
import modelengine.fit.jober.aipp.mapper.AippLogMapper;
11+
import modelengine.fit.jober.aipp.repository.AippInstanceLogRepository;
12+
import modelengine.fitframework.annotation.Component;
13+
import modelengine.fitframework.util.CollectionUtils;
14+
15+
import java.util.List;
16+
17+
/**
18+
* {@link AippInstanceLogRepository}对应实现类。
19+
*
20+
* @author 杨祥宇
21+
* @since 2025-04-09
22+
*/
23+
@Component
24+
public class AippInstanceLogRepositoryImpl implements AippInstanceLogRepository {
25+
private final AippLogMapper aippLogMapper;
26+
27+
public AippInstanceLogRepositoryImpl(AippLogMapper aippLogMapper) {this.aippLogMapper = aippLogMapper;}
28+
29+
@Override
30+
public List<Long> getExpireInstanceLogIds(String aippType, int expiredDays, int limit) {
31+
return aippLogMapper.getExpireInstanceLogIds(aippType, expiredDays, limit);
32+
}
33+
34+
@Override
35+
public void forceDeleteInstanceLogs(List<Long> logIds) {
36+
if (CollectionUtils.isEmpty(logIds)) {
37+
return;
38+
}
39+
aippLogMapper.forceDeleteInstanceLogsByIds(logIds);
40+
}
41+
42+
@Override
43+
public List<AippInstLog> selectByLogIds(List<Long> logIds) {
44+
return aippLogMapper.selectByLogIds(logIds);
45+
}
46+
}

app-builder/jane/plugins/aipp-plugin/src/main/java/modelengine/fit/jober/aipp/repository/impl/AppBuilderRuntimeInfoRepositoryImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import modelengine.fit.jober.aipp.repository.AppBuilderRuntimeInfoRepository;
1212
import modelengine.fit.jober.aipp.serializer.impl.AppBuilderRuntimeInfoSerializer;
1313
import modelengine.fitframework.annotation.Component;
14+
import modelengine.fitframework.util.CollectionUtils;
1415

16+
import java.time.LocalDateTime;
1517
import java.util.List;
1618
import java.util.stream.Collectors;
1719

@@ -44,4 +46,17 @@ public List<AppBuilderRuntimeInfo> selectByTraceId(String traceId) {
4446
public void insertOne(AppBuilderRuntimeInfo info) {
4547
this.mapper.insertOne(this.serializer.serialize(info));
4648
}
49+
50+
@Override
51+
public List<Long> getExpiredRuntimeInfos(int expiredDays, int limit) {
52+
return this.mapper.getExpiredRuntimeInfos(expiredDays, limit);
53+
}
54+
55+
@Override
56+
public void deleteRuntimeInfos(List<Long> runtimeInfoIds) {
57+
if (CollectionUtils.isEmpty(runtimeInfoIds)) {
58+
return;
59+
}
60+
this.mapper.deleteRuntimeInfos(runtimeInfoIds);
61+
}
4762
}

0 commit comments

Comments
 (0)