package handler import ( "context" "net/http" "time" "dbview/service/internal/common/response" "dbview/service/internal/modules/mcp_ai/api" "dbview/service/internal/modules/mcp_ai/service" "github.com/gin-gonic/gin" ) // Handler 提供 AI 聊天接口的 HTTP 处理器。 type Handler struct { svc *service.AIService } // NewHandler 创建 Handler。 func NewHandler(svc *service.AIService) *Handler { return &Handler{svc: svc} } // Chat 提供 POST /ai/chat 接口。 func (h *Handler) Chat(c *gin.Context) { var req api.ChatRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, response.Response{Code: 1, Msg: "参数错误", Error: err.Error()}) return } ctx, cancel := context.WithTimeout(c.Request.Context(), 45*time.Second) defer cancel() text, err := h.svc.Chat(ctx, req.Prompt, req.System, req.Model) if err != nil { c.JSON(http.StatusInternalServerError, response.Response{Code: 2, Msg: "AI 调用失败", Error: err.Error()}) return } c.JSON(http.StatusOK, response.Response{Code: 0, Msg: "ok", Data: api.ChatResponse{Text: text}}) }