Files
customer-server/consumer/recreate_chat.go

48 lines
1.5 KiB
Go
Raw Normal View History

2026-03-14 10:02:49 +08:00
package consumer
import (
"context"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/glog"
)
// recreateChatIfNeeded 检测并重建Chat配置
// 调用customerservice的recreateRAGFlow接口由customerservice负责MongoDB操作
func recreateChatIfNeeded(ctx context.Context, tenantId, accountName, platform string) error {
glog.Infof(ctx, "开始自动重建Chat - accountName: %s, platform: %s, tenantId: %s", accountName, platform, tenantId)
// 1. 从配置获取customerservice地址避免consul.GetInstanceAddr在Stream context中panic
customerserviceAddr := g.Cfg().MustGet(ctx, "customerservice.address", "customerservice:3000").String()
// 2. 调用customerservice的recreateRAGFlow接口
url := "http://" + customerserviceAddr + "/customer/service/account/recreateRAGFlow"
reqBody := g.Map{
"accountName": accountName,
"platform": platform,
}
glog.Infof(ctx, "调用customerservice recreateRAGFlow接口 - URL: %s, 请求: %+v", url, reqBody)
client := g.Client()
resp, err := client.Post(ctx, url, reqBody)
if err != nil {
return gerror.Wrapf(err, "调用recreateRAGFlow接口失败")
}
defer resp.Close()
// 3. 解析响应
respBody := resp.ReadAllString()
result := gjson.New(respBody)
if result.Get("code").Int() != 0 {
errMsg := result.Get("message").String()
return gerror.Newf("recreateRAGFlow失败: %s", errMsg)
}
glog.Infof(ctx, "Chat自动重建完成 - accountName: %s", accountName)
return nil
}