Files
model-gateway/service/callback.go

88 lines
3.1 KiB
Go
Raw Normal View History

2026-04-29 15:54:14 +08:00
package service
import (
"context"
2026-05-12 13:45:08 +08:00
"encoding/json"
2026-04-29 15:54:14 +08:00
"model-asynch/model/entity"
2026-05-12 13:45:08 +08:00
"gitea.com/red-future/common/http"
2026-04-29 15:54:14 +08:00
"github.com/gogf/gf/v2/frame/g"
)
2026-05-12 13:45:08 +08:00
// 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,
2026-04-29 15:54:14 +08:00
}
2026-05-12 13:45:08 +08:00
jsonData, err := json.Marshal(payload)
if err != nil {
g.Log().Warningf(ctx, "[回调] JSON序列化失败 taskId=%s 错误=%v", t.TaskID, err)
2026-04-29 15:54:14 +08:00
return
}
2026-05-12 13:45:08 +08:00
g.Log().Infof(ctx, "[回调] 开始发送 taskId=%s 回调地址=%s 请求头数量=%d 消息体大小=%d字节",
t.TaskID, callbackURL, len(headers), len(jsonData))
2026-04-29 15:54:14 +08:00
2026-05-12 13:45:08 +08:00
err = http.Post(ctx, callbackURL, headers, &req, jsonData)
2026-04-29 15:54:14 +08:00
if err != nil {
2026-05-12 13:45:08 +08:00
g.Log().Warningf(ctx, "[回调] 发送失败 taskId=%s 回调地址=%s 错误=%v", t.TaskID, callbackURL, err)
2026-04-29 15:54:14 +08:00
return
}
2026-05-12 13:45:08 +08:00
g.Log().Infof(ctx, "[回调] 发送成功 taskId=%s 回调地址=%s 消息体大小=%d字节", t.TaskID, callbackURL, len(jsonData))
}
2026-04-29 15:54:14 +08:00
2026-05-12 13:45:08 +08:00
// 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,
2026-04-29 15:54:14 +08:00
}
2026-05-12 13:45:08 +08:00
jsonData, err := json.Marshal(payload)
2026-04-29 15:54:14 +08:00
if err != nil {
2026-05-12 13:45:08 +08:00
g.Log().Warningf(ctx, "[提示词回调] JSON序列化失败 epicycleId=%d 错误=%v", epicycleId, err)
2026-04-29 15:54:14 +08:00
return
}
2026-05-12 13:45:08 +08:00
g.Log().Infof(ctx, "[提示词回调] 开始发送 epicycleId=%d 回调地址=%s 请求头数量=%d 消息体大小=%d字节",
t.EpicycleId, callbackURL, len(headers), len(jsonData))
2026-04-29 15:54:14 +08:00
2026-05-12 13:45:08 +08:00
err = http.Post(ctx, callbackURL, headers, &req, jsonData)
2026-04-29 15:54:14 +08:00
if err != nil {
2026-05-12 13:45:08 +08:00
g.Log().Warningf(ctx, "[提示词回调] 发送失败 epicycleId=%d 回调地址=%s 错误=%v", t.EpicycleId, callbackURL, err)
2026-04-29 15:54:14 +08:00
return
}
2026-05-12 13:45:08 +08:00
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
2026-04-29 15:54:14 +08:00
}
2026-05-12 13:45:08 +08:00
return r["isSuperAdmin"], err
2026-04-29 15:54:14 +08:00
}
2026-05-12 13:45:08 +08:00
// 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
}