package session import ( flowDto "ai-agent/workflow/model/dto/flow" sessionDto "ai-agent/workflow/model/dto/session" "ai-agent/workflow/service/flow" sessionService "ai-agent/workflow/service/session" "context" "gitea.redpowerfuture.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/glog" ) type session struct{} var Session = new(session) func (c *session) WsExecute(ctx context.Context, req *sessionDto.WebSocketConnectReq) (res *beans.ResponseEmpty, err error) { r := g.RequestFromCtx(ctx) // 首次连接仅升级 WebSocket,不区分普通对话/工作流;由后续消息 type 路由到对应处理器 err = flow.WsConnect(ctx, r, req) if err != nil { glog.Errorf(ctx, "ws connect failed: %v", err) return nil, err } // 标记响应缓冲区,使 MiddlewareHandlerResponse 跳过 r.Response.Writeln("") return } func (c *session) Get(ctx context.Context, req *sessionDto.GetSessionInfoReq) (res *sessionDto.GetSessionInfoRes, err error) { return sessionService.SessionService.Get(ctx, req) } func (c *session) List(ctx context.Context, req *sessionDto.ListSessionReq) (res *sessionDto.ListSessionRes, err error) { return sessionService.SessionService.List(ctx, req) } func (c *session) Delete(ctx context.Context, req *sessionDto.DeleteSessionReq) (res *beans.ResponseEmpty, err error) { if err = sessionService.SessionService.Delete(ctx, req); err != nil { return } return &beans.ResponseEmpty{}, nil } func (c *session) DeleteRecord(ctx context.Context, req *sessionDto.DeleteSessionRecordReq) (res *beans.ResponseEmpty, err error) { if err = sessionService.SessionService.DeleteRecord(ctx, req); err != nil { return } return &beans.ResponseEmpty{}, nil } func (c *session) ResultList(ctx context.Context, req *sessionDto.ListWorkflowResultReq) (res *flowDto.ListFlowExecutionTreeRes, err error) { return sessionService.SessionService.ResultList(ctx, req) } func (c *session) ResultDelete(ctx context.Context, req *sessionDto.DeleteWorkflowResultReq) (res *beans.ResponseEmpty, err error) { err = sessionService.SessionService.ResultDelete(ctx, req) return }