65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
// Package controller - RAGFlow控制器
|
||
// 功能:接收来自外部的RAGFlow请求(测试/调试用)
|
||
package controller
|
||
|
||
import (
|
||
"customer-server/consumer"
|
||
|
||
"gitea.com/red-future/common/redis"
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/net/ghttp"
|
||
)
|
||
|
||
type ragflow struct{}
|
||
|
||
var RAGFlow = new(ragflow)
|
||
|
||
// Process 处理RAGFlow请求
|
||
// 参数: r - HTTP请求对象
|
||
// 功能: 接收外部RAGFlow消息请求,直接调用consumer处理逻辑(用于测试)
|
||
// 注意: 正常流程不经过此接口,而是直接消费Redis Stream
|
||
func (c *ragflow) Process(r *ghttp.Request) {
|
||
ctx := r.Context()
|
||
|
||
// 调试:打印原始请求体
|
||
bodyBytes := r.GetBody()
|
||
g.Log().Infof(ctx, "收到原始请求体: %s", string(bodyBytes))
|
||
|
||
var req redis.SendStreamMessage
|
||
if err := r.Parse(&req); err != nil {
|
||
r.Response.WriteJsonExit(g.Map{
|
||
"code": 400,
|
||
"msg": "参数错误: " + err.Error(),
|
||
})
|
||
return
|
||
}
|
||
|
||
g.Log().Infof(ctx, "收到RAGFlow请求 - 用户: %s, 内容: %s", req.UserId, req.Content)
|
||
|
||
// 直接调用consumer的处理逻辑
|
||
message := map[string]interface{}{
|
||
"UserId": req.UserId,
|
||
"Content": req.Content,
|
||
"MessageId": req.MessageId,
|
||
"Platform": req.Platform,
|
||
"TenantId": req.TenantId,
|
||
"AccountName": req.AccountName,
|
||
"ChatId": req.ChatId,
|
||
"ReplyQueue": req.ReplyQueue,
|
||
"History": req.History,
|
||
}
|
||
|
||
if err := consumer.HandleMessageHTTP(ctx, message); err != nil {
|
||
r.Response.WriteJsonExit(g.Map{
|
||
"code": 500,
|
||
"msg": "处理失败: " + err.Error(),
|
||
})
|
||
return
|
||
}
|
||
|
||
r.Response.WriteJsonExit(g.Map{
|
||
"code": 0,
|
||
"msg": "success",
|
||
})
|
||
}
|