统一媒体异步提交和轮询响应,扩展 /ai/result 到当前用户的 Gateway 媒体任务,并保持既有 Gateway 字段兼容。\n\n启用转存但无可用渠道时回退到 24 小时本地静态资源;关闭转存时保留图片、音频等上游 Base64 字段。同步更新文件上传兼容结构、OpenAPI、管理端说明和回归测试。\n\n验证:cd apps/api && env -u AI_GATEWAY_TEST_DATABASE_URL go test ./... -count=1;gofmt -l 无输出;pnpm nx run web:typecheck。
46 lines
1.8 KiB
Go
46 lines
1.8 KiB
Go
package httpapi
|
|
|
|
import "net/http"
|
|
|
|
// createImageVectorizeTask godoc
|
|
// @Summary 图片矢量化
|
|
// @Description 将 URL 位图转换为 SVG、EPS、PDF、DXF 或 PNG;设置 X-Async=true 时返回统一异步任务结构。可使用同一所有者历史任务的 vectorizerTaskId 复用上游 image token。
|
|
// @Tags images
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Security BearerAuth
|
|
// @Param X-Async header bool false "true 时异步创建任务并返回 202"
|
|
// @Param input body ImageVectorizeRequest true "图片矢量化请求"
|
|
// @Success 200 {object} EasyAIGeneratedResponse
|
|
// @Success 202 {object} TaskAcceptedResponse
|
|
// @Failure 400 {object} ErrorEnvelope
|
|
// @Failure 401 {object} ErrorEnvelope
|
|
// @Failure 403 {object} ErrorEnvelope
|
|
// @Failure 404 {object} ErrorEnvelope
|
|
// @Failure 502 {object} ErrorEnvelope
|
|
// @Router /api/v1/images/vectorize [post]
|
|
func (s *Server) createImageVectorizeTask() http.Handler {
|
|
return s.createTask("images.vectorize", true)
|
|
}
|
|
|
|
// createVideoUpscaleTask godoc
|
|
// @Summary 视频超分
|
|
// @Description 原生执行 Topaz 视频增强流程;设置 X-Async=true 时返回统一异步任务结构,结果在任务完成前持久化到 Gateway 文件存储。
|
|
// @Tags videos
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Security BearerAuth
|
|
// @Param X-Async header bool false "true 时异步创建任务并返回 202"
|
|
// @Param input body VideoUpscaleRequest true "视频超分请求"
|
|
// @Success 200 {object} EasyAIGeneratedResponse
|
|
// @Success 202 {object} TaskAcceptedResponse
|
|
// @Failure 400 {object} ErrorEnvelope
|
|
// @Failure 401 {object} ErrorEnvelope
|
|
// @Failure 403 {object} ErrorEnvelope
|
|
// @Failure 404 {object} ErrorEnvelope
|
|
// @Failure 502 {object} ErrorEnvelope
|
|
// @Router /api/v1/videos/upscales [post]
|
|
func (s *Server) createVideoUpscaleTask() http.Handler {
|
|
return s.createTask("videos.upscales", true)
|
|
}
|