Files
ai-agent/workflow/controller/session/session_controller.go
T

57 lines
1.9 KiB
Go

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)
}