package service import ( "context" "encoding/json" "fmt" commonHttp "gitea.com/red-future/common/http" "github.com/gogf/gf/v2/os/gtime" ) // CreateTaskReq 创建任务请求 type CreateTaskReq struct { TaskId string `json:"task_id"` State int `json:"state"` OssFile string `json:"oss_file"` FileType string `json:"file_type"` Text string `json:"text"` ErrorMsg string `json:"error_msg"` } // createGatewayTask 调用 model-gateway 异步任务并同步等待结果 func createGatewayTask(ctx context.Context, payload map[string]any) (string, error) { fullURL := "model-gateway/task/createTask" headers := forwardHeaders(ctx) var req CreateTaskReq body, err := json.Marshal(payload) if err != nil { return "", err } if err := commonHttp.Post(ctx, fullURL, headers, &req, body); err != nil { return "", err } return req.TaskId, nil } type GetTaskResultRes struct { OssFile string `json:"ossFile" dc:"结果文件OSS地址"` State int `json:"state" dc:"任务状态"` } // queryGatewayTaskState 查询网关任务状态 func queryGatewayTaskState(ctx context.Context, taskID string) (int, error) { fullURL := fmt.Sprintf("model-gateway/task/getTaskResult?taskId=%s", taskID) headers := forwardHeaders(ctx) var req GetTaskResultRes if err := commonHttp.Get(ctx, fullURL, headers, &req, nil); err != nil { return 0, err } return req.State, nil } // SkillUserVO 技能用户视图对象 type SkillUserVO struct { Id int64 `json:"id,string"` Name string `json:"name"` Description string `json:"description"` FileName string `json:"fileName"` FileUrl string `json:"fileUrl"` // html 后缀 CreatedAt *gtime.Time `json:"createdAt"` UpdatedAt *gtime.Time `json:"updatedAt"` ImgAddressPrefix string `json:"imgAddressPrefix"` // htmml 前缀 } // GetSkillUser 根据 name 获取技能用户信息 func GetSkillUser(ctx context.Context, name string) (*SkillUserVO, error) { fullURL := fmt.Sprintf("ai-agent/skill/user/getUserOrTemplate?name=%s", name) headers := forwardHeaders(ctx) var resp SkillUserVO var req struct{} if err := commonHttp.Get(ctx, fullURL, headers, &resp, req); err != nil { return nil, err } return &resp, nil }