将上游 URL 直接持久化,内联媒体经对象存储后仅保留 URL 与内部定位元数据;异步轮询、任务详情和幂等重放统一使用零对象读取的 URL 投影,并增加 64KiB 响应门禁。 OpenAI 图片接口接受 url 与 b64_json,同步 Base64 限制为 20MiB 和每 Pod 2 并发;新增历史结果迁移清零门禁、结果指标和 API GOMEMLIMIT。 验证:API go test ./...、go vet、聚焦 race、pnpm openapi、pnpm lint/test/build、迁移安全检查与 docker compose config 均通过。
31 lines
777 B
Go
31 lines
777 B
Go
package httpapi
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/easyai/easyai-ai-gateway/apps/api/internal/clients"
|
|
"github.com/easyai/easyai-ai-gateway/apps/api/internal/store"
|
|
)
|
|
|
|
func (s *Server) hydrateTaskResult(ctx context.Context, task store.GatewayTask) (store.GatewayTask, error) {
|
|
if task.Status != "succeeded" || len(task.Result) == 0 {
|
|
return task, nil
|
|
}
|
|
result, err := s.runner.ProjectTaskResultURLs(ctx, task.ID, task.Result)
|
|
if err != nil {
|
|
return store.GatewayTask{}, err
|
|
}
|
|
task.Result = result
|
|
return task, nil
|
|
}
|
|
|
|
func writeStoredBinaryResultError(w http.ResponseWriter, err error) {
|
|
status := statusFromRunError(err)
|
|
code := clients.ErrorCode(err)
|
|
if code == "" {
|
|
code = "binary_result_corrupted"
|
|
}
|
|
writeError(w, status, err.Error(), code)
|
|
}
|