package routes import ( "context" "git.x2erp.com/qdy/go-base/authbase" "git.x2erp.com/qdy/go-base/ctx" "git.x2erp.com/qdy/go-base/logger" "git.x2erp.com/qdy/go-base/model/response" "git.x2erp.com/qdy/go-base/webx/router" "git.x2erp.com/qdy/go-svc-code/internal/opencode" ) // GetSessionMessagesRequest 获取会话消息请求 type GetSessionMessagesRequest struct { SessionID string `form:"sessionID" binding:"required"` Limit int `form:"limit,omitempty"` } // SessionMessagesResponse 会话消息响应 type SessionMessagesResponse struct { Messages []opencode.SessionMessage `json:"messages"` Count int `json:"count"` } // RegisterSessionMessagesRoutes 注册会话消息路由 func RegisterSessionMessagesRoutes(ws *router.RouterService, client opencode.OpenCodeClient) { // 获取会话消息历史(需要Token认证) ws.GET("/api/session/messages", func(req *GetSessionMessagesRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[SessionMessagesResponse], error) { if req.SessionID == "" { return &response.QueryResult[SessionMessagesResponse]{ Success: false, Message: "参数 sessionID 不能为空", }, nil } // 调用 opencode 客户端获取消息 messages, err := client.GetSessionMessages(ctx, req.SessionID, req.Limit) if err != nil { logger.Error("获取会话消息失败", "session_id", req.SessionID, "error", err) return &response.QueryResult[SessionMessagesResponse]{ Success: false, Message: "获取会话消息失败: " + err.Error(), }, nil } return &response.QueryResult[SessionMessagesResponse]{ Success: true, Data: SessionMessagesResponse{ Messages: messages, Count: len(messages), }, }, nil }, ).Use(authbase.TokenAuth).Desc("获取指定会话的消息历史").Register() }