1
This commit is contained in:
47
consumer/recreate_chat.go
Normal file
47
consumer/recreate_chat.go
Normal file
@@ -0,0 +1,47 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user