mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-09-15 17:35:00 +00:00
fix(sse): SSE 改为按会话隔离 + 修 trace 租户 bug + 清理冗余
SSE 串台修复: - SseEmitterManager 新增按 sessionId 维度的 connect/sendEvent/disconnect, 每个会话一个 SSE 连接,替代原 userId+token 维度(同用户多会话串台) - SseMessageDto 增加 sessionId + eventDto 字段,跨实例按会话路由 - SseTopicListener 优先按 sessionId 路由,回退原 userId/群发逻辑 - SseMessageUtils 增加 sessionId 重载,对话链路全部切换 - ChatServiceFacade / MyMcpClientListener / WorkflowStarter 切到 sessionId - 通知/全局 /sse 端点保留 userId 模式(通知按用户) trace 租户 bug 修复: - trace_run / trace_node 加入 tenant.excludes,监控表跨租户全局可见, 绕过异步线程租户上下文不传播导致 node 查不到的问题 冗余清理: - 删除零使用的 @TraceNode 注解 + TraceNodeAspect 切面 + 对应单测 - TraceProperties 删除 recordDetail/maxInputLength/maxOutputLength (仅对已删切面生效,编程式埋点用 RagTracePayloadBuilder 不受影响) - TracePayloadUtils 删除 input/output/asString 方法 - TraceConstants 删除无引用的 NODE_METHOD/HTTP/DB/CACHE/TASK/STREAM - TraceContext 删除预留的 copyNodeStack - TraceNodeVo 删除未用的 children 字段 - TraceRecordServiceImpl.getDetail 删除重复 enrich - application.yml 删除 trace.payload 无效配置项 - RagTraceNodeTypes 删除无引用的 NODE_STREAM Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -56,10 +56,10 @@ public class WorkflowStarter implements IWorkFlowStarterService {
|
||||
public SseEmitter streaming(User user, String workflowUuid, List<ObjectNode> userInputs, Long sessionId) {
|
||||
// 获取用户ID
|
||||
Long userId = LoginHelper.getUserId();
|
||||
// 获取登录Token
|
||||
// 获取登录Token(仅透传给 WfState,工作流 SSE 通过 emitter 直发,不串台)
|
||||
String tokenValue = StpUtil.getTokenValue();
|
||||
// 根据用户ID和Token连接SSE对象
|
||||
SseEmitter sseEmitter = sseEmitterManager.connect(userId, tokenValue);
|
||||
// 根据会话ID连接SSE对象(每会话一个连接,避免同用户多会话串台)
|
||||
SseEmitter sseEmitter = sseEmitterManager.connect(String.valueOf(sessionId));
|
||||
if (!sseEmitterHelper.checkOrComplete(user, sseEmitter)) {
|
||||
return sseEmitter;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user