feat: 切换管理端聊天记录至智能体会话
- 管理端固定筛选 Agent 会话并拒绝旧 Bot 历史访问 - 筛选候选及页面语义切换为智能体并补充前后端回归测试
This commit is contained in:
@@ -5,9 +5,13 @@ import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.math.BigInteger;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 管理端聊天会话筛选条件。
|
||||
*/
|
||||
public class ChatSessionFilterQuery extends ChatPageQuery {
|
||||
|
||||
private BigInteger assistantId;
|
||||
private String assistantCode;
|
||||
private BigInteger userId;
|
||||
private String userAccount;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@@ -15,42 +19,110 @@ public class ChatSessionFilterQuery extends ChatPageQuery {
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 获取助手 ID。
|
||||
*
|
||||
* @return 助手 ID
|
||||
*/
|
||||
public BigInteger getAssistantId() {
|
||||
return assistantId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置助手 ID。
|
||||
*
|
||||
* @param assistantId 助手 ID
|
||||
*/
|
||||
public void setAssistantId(BigInteger assistantId) {
|
||||
this.assistantId = assistantId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取助手类型编码。
|
||||
*
|
||||
* @return 助手类型编码
|
||||
*/
|
||||
public String getAssistantCode() {
|
||||
return assistantCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置助手类型编码。
|
||||
*
|
||||
* @param assistantCode 助手类型编码
|
||||
*/
|
||||
public void setAssistantCode(String assistantCode) {
|
||||
this.assistantCode = assistantCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户 ID。
|
||||
*
|
||||
* @return 用户 ID
|
||||
*/
|
||||
public BigInteger getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置用户 ID。
|
||||
*
|
||||
* @param userId 用户 ID
|
||||
*/
|
||||
public void setUserId(BigInteger userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户账号筛选值。
|
||||
*
|
||||
* @return 用户账号筛选值
|
||||
*/
|
||||
public String getUserAccount() {
|
||||
return userAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置用户账号筛选值。
|
||||
*
|
||||
* @param userAccount 用户账号筛选值
|
||||
*/
|
||||
public void setUserAccount(String userAccount) {
|
||||
this.userAccount = userAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开始时间。
|
||||
*
|
||||
* @return 开始时间
|
||||
*/
|
||||
public Date getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开始时间。
|
||||
*
|
||||
* @param startTime 开始时间
|
||||
*/
|
||||
public void setStartTime(Date startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结束时间。
|
||||
*
|
||||
* @return 结束时间
|
||||
*/
|
||||
public Date getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结束时间。
|
||||
*
|
||||
* @param endTime 结束时间
|
||||
*/
|
||||
public void setEndTime(Date endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
@@ -732,6 +732,10 @@ public class ChatAnalyticalDBRepository {
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.hasText(query.getAssistantCode())) {
|
||||
sql.append(" AND assistant_code=?");
|
||||
args.add(query.getAssistantCode().trim());
|
||||
}
|
||||
if (query.getAssistantId() != null) {
|
||||
sql.append(" AND assistant_id=?");
|
||||
args.add(query.getAssistantId());
|
||||
|
||||
@@ -21,6 +21,8 @@ import java.math.BigInteger;
|
||||
@Service
|
||||
public class ChatHistoryManageServiceImpl implements ChatHistoryManageService {
|
||||
|
||||
private static final String ADMIN_ASSISTANT_CODE = "AGENT";
|
||||
|
||||
private final ChatSessionQueryService chatSessionQueryService;
|
||||
private final ChatSessionCommandService chatSessionCommandService;
|
||||
private final ChatHistoryQueryService chatHistoryQueryService;
|
||||
@@ -46,7 +48,10 @@ public class ChatHistoryManageServiceImpl implements ChatHistoryManageService {
|
||||
|
||||
@Override
|
||||
public ChatSessionPage queryAdminSessions(ChatSessionFilterQuery query) {
|
||||
return chatAnalyticalDBRepository.pageSessions(query);
|
||||
ChatSessionFilterQuery effectiveQuery = query == null ? new ChatSessionFilterQuery() : query;
|
||||
// 管理端聊天历史已经切换为 Agent 专属入口,类型由服务端固定,避免客户端绕过。
|
||||
effectiveQuery.setAssistantCode(ADMIN_ASSISTANT_CODE);
|
||||
return chatAnalyticalDBRepository.pageSessions(effectiveQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,8 +69,10 @@ public class ChatHistoryManageServiceImpl implements ChatHistoryManageService {
|
||||
@Override
|
||||
public ChatSessionSummary getAdminSession(BigInteger sessionId) {
|
||||
ChatSessionSummary summary = chatAnalyticalDBRepository.getSession(sessionId);
|
||||
if (summary == null || summary.getIsDeleted() != null && summary.getIsDeleted() == 1) {
|
||||
throw new BusinessException("会话不存在");
|
||||
if (summary == null
|
||||
|| Integer.valueOf(1).equals(summary.getIsDeleted())
|
||||
|| !ADMIN_ASSISTANT_CODE.equals(summary.getAssistantCode())) {
|
||||
throw new BusinessException("Agent 会话不存在");
|
||||
}
|
||||
return summary;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user