package service import ( "model-gateway/model/dto" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" ) // parseModelError 解析模型错误响应,返回错误码与错误消息(无错误均返回空串)。 // 兼容两种形态(与任务创建端 model_task_start_service.go 一致): // - OpenAI 嵌套 {"error":{"code","message"}} → 取 error.code / error.message // - 扁平 {"code","message"} → code=20000000 视为成功码,不当作错误 // // 解析失败返回 err,由调用方决定重试/终态。 func parseModelError(body []byte) (code, msg string, err error) { errMsg := new(dto.ModelErrorResp) if err = gconv.Struct(body, errMsg); err != nil { return "", "", err } if !g.IsEmpty(errMsg.Error.Code) { return errMsg.Error.Code, errMsg.Error.Message, nil } flat := new(dto.ModelError1Resp) if err = gconv.Struct(body, flat); err != nil { return "", "", err } if !g.IsEmpty(flat.Code) && flat.Code != 20000000 { return gconv.String(flat.Code), flat.Message, nil } return "", "", nil }