package service import ( "context" "encoding/json" "model-asynch/model/entity" "gitea.com/red-future/common/http" "github.com/gogf/gf/v2/frame/g" ) // triggerCallback 任务成功后的回调: // - JSON body 参数:task_id/state/oss_file/file_type/text(可选) func triggerCallback(ctx context.Context, t *entity.AsynchTask) { callbackURL := t.BizName + t.CallbackURL headers := forwardHeaders(ctx) var req struct{} payload := map[string]interface{}{ "task_id": t.TaskID, "state": t.State, "oss_file": t.OssFile, "file_type": t.FileType, "text": t.TextResult, "error_msg": t.ErrorMsg, } jsonData, err := json.Marshal(payload) if err != nil { g.Log().Warningf(ctx, "[回调] JSON序列化失败 taskId=%s 错误=%v", t.TaskID, err) return } g.Log().Infof(ctx, "[回调] 开始发送 taskId=%s 回调地址=%s 请求头数量=%d 消息体大小=%d字节", t.TaskID, callbackURL, len(headers), len(jsonData)) err = http.Post(ctx, callbackURL, headers, &req, jsonData) if err != nil { g.Log().Warningf(ctx, "[回调] 发送失败 taskId=%s 回调地址=%s 错误=%v", t.TaskID, callbackURL, err) return } g.Log().Infof(ctx, "[回调] 发送成功 taskId=%s 回调地址=%s 消息体大小=%d字节", t.TaskID, callbackURL, len(jsonData)) } // triggerPromptsCallback 任务成功后的提示词回调 // - JSON body 参数:epicycleId(轮次id)/textResult(模型回答消息) func triggerPromptsCallback(ctx context.Context, t *entity.AsynchTask, epicycleId int64) { callbackURL := "prompts-core/session/sessionCallback" headers := forwardHeaders(ctx) var req struct{} payload := map[string]interface{}{ "epicycleId": epicycleId, "text": t.TextResult, } jsonData, err := json.Marshal(payload) if err != nil { g.Log().Warningf(ctx, "[提示词回调] JSON序列化失败 epicycleId=%d 错误=%v", epicycleId, err) return } g.Log().Infof(ctx, "[提示词回调] 开始发送 epicycleId=%d 回调地址=%s 请求头数量=%d 消息体大小=%d字节", t.EpicycleId, callbackURL, len(headers), len(jsonData)) err = http.Post(ctx, callbackURL, headers, &req, jsonData) if err != nil { g.Log().Warningf(ctx, "[提示词回调] 发送失败 epicycleId=%d 回调地址=%s 错误=%v", t.EpicycleId, callbackURL, err) return } g.Log().Infof(ctx, "[提示词回调] 发送成功 epicycleId=%d 回调地址=%s 消息体大小=%d字节", t.EpicycleId, callbackURL, len(jsonData)) } // IsSuperAdmin 调用admin-go服务检查是否是超级管理员 func IsSuperAdmin(ctx context.Context) (res bool, err error) { headers := forwardHeaders(ctx) var r = make(map[string]bool) if err = http.Get(ctx, "admin-go/api/v1/system/user/checkIsSuperAdmin", headers, &r); err != nil { return false, err } return r["isSuperAdmin"], err } // IsAdmin 调用admin-go服务检查是否是管理员 func IsAdmin(ctx context.Context) (res bool, err error) { headers := forwardHeaders(ctx) var r = make(map[string]bool) if err = http.Get(ctx, "admin-go/api/v1/system/user/checkIsSuperAdmin", headers, &r); err != nil { return false, err } return r["isSuperAdmin"], err }