From 5d16d9a0e7240ff4e6346bfee4890159da5a764e Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 11:40:51 +0800
Subject: [PATCH] #AI.记忆治理
---
rsf-server/src/main/java/com/vincent/rsf/server/ai/controller/AiChatController.java | 33 +++++++++++++++++++++++++++++++--
1 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/controller/AiChatController.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/controller/AiChatController.java
index 64e9f06..613d629 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/controller/AiChatController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/controller/AiChatController.java
@@ -1,6 +1,8 @@
package com.vincent.rsf.server.ai.controller;
import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.ai.dto.AiChatSessionPinRequest;
+import com.vincent.rsf.server.ai.dto.AiChatSessionRenameRequest;
import com.vincent.rsf.server.ai.dto.AiChatRequest;
import com.vincent.rsf.server.ai.service.AiChatService;
import com.vincent.rsf.server.system.controller.BaseController;
@@ -30,8 +32,9 @@
@PreAuthorize("isAuthenticated()")
@GetMapping("/ai/chat/sessions")
- public R sessions(@RequestParam(required = false) String promptCode) {
- return R.ok().add(aiChatService.listSessions(promptCode, getLoginUserId(), getTenantId()));
+ public R sessions(@RequestParam(required = false) String promptCode,
+ @RequestParam(required = false) String keyword) {
+ return R.ok().add(aiChatService.listSessions(promptCode, keyword, getLoginUserId(), getTenantId()));
}
@PreAuthorize("isAuthenticated()")
@@ -42,6 +45,32 @@
}
@PreAuthorize("isAuthenticated()")
+ @PostMapping("/ai/chat/session/rename/{sessionId}")
+ public R renameSession(@PathVariable Long sessionId, @RequestBody AiChatSessionRenameRequest request) {
+ return R.ok("Update Success").add(aiChatService.renameSession(sessionId, request, getLoginUserId(), getTenantId()));
+ }
+
+ @PreAuthorize("isAuthenticated()")
+ @PostMapping("/ai/chat/session/pin/{sessionId}")
+ public R pinSession(@PathVariable Long sessionId, @RequestBody AiChatSessionPinRequest request) {
+ return R.ok("Update Success").add(aiChatService.pinSession(sessionId, request, getLoginUserId(), getTenantId()));
+ }
+
+ @PreAuthorize("isAuthenticated()")
+ @PostMapping("/ai/chat/session/memory/clear/{sessionId}")
+ public R clearSessionMemory(@PathVariable Long sessionId) {
+ aiChatService.clearSessionMemory(sessionId, getLoginUserId(), getTenantId());
+ return R.ok("Clear Success").add(sessionId);
+ }
+
+ @PreAuthorize("isAuthenticated()")
+ @PostMapping("/ai/chat/session/memory/retain-latest/{sessionId}")
+ public R retainLatestRound(@PathVariable Long sessionId) {
+ aiChatService.retainLatestRound(sessionId, getLoginUserId(), getTenantId());
+ return R.ok("Retain Success").add(sessionId);
+ }
+
+ @PreAuthorize("isAuthenticated()")
@PostMapping(value = "/ai/chat/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter stream(@RequestBody AiChatRequest request) {
String requestId = StringUtils.hasText(request.getRequestId())
--
Gitblit v1.9.1