首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 14:44:48 +08:00
commit a4fe393571
119 changed files with 29105 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
package handler
import (
"io"
"net/http"
"resume-platform/internal/service/chat"
"github.com/gin-gonic/gin"
)
// ChatHandler 聊天对话处理器,基于文档向量库进行问答
type ChatHandler struct {
chatService chat.ChatService
}
// NewChatHandler 创建聊天处理器实例
// @param chatService 聊天服务层
// @return *ChatHandler 处理器实例
// @author sunct
func NewChatHandler(chatService chat.ChatService) *ChatHandler {
return &ChatHandler{chatService: chatService}
}
// Chat 流式对话接口,以 SSE 方式返回 AI 回答
// @param c Gin 上下文
// @author sunct
func (h *ChatHandler) Chat(c *gin.Context) {
userID := c.Query("user_id")
if userID == "" {
c.JSON(http.StatusBadRequest, gin.H{"error": "user_id is required"})
return
}
var request struct {
Question string `json:"question"`
}
if err := c.ShouldBindJSON(&request); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request"})
return
}
c.Stream(func(w io.Writer) bool {
answer, err := h.chatService.Chat(c.Request.Context(), userID, request.Question)
if err != nil {
c.SSEvent("error", gin.H{"message": err.Error()})
return false
}
c.SSEvent("message", answer)
return true
})
}
// GetChatHistory 获取用户聊天历史记录接口
// @param c Gin 上下文
// @author sunct
func (h *ChatHandler) GetChatHistory(c *gin.Context) {
userID := c.Query("user_id")
if userID == "" {
c.JSON(http.StatusBadRequest, gin.H{"error": "user_id is required"})
return
}
history, err := h.chatService.GetChatHistory(c.Request.Context(), userID)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, history)
}