diff --git a/backend/cmd/main.go b/backend/cmd/main.go index 8815037..c2be817 100755 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -4,7 +4,6 @@ package main import ( "fmt" "log" - "os" "gen2d/internal/config" "gen2d/internal/db" @@ -21,9 +20,6 @@ func main() { gin.SetMode(cfg.Server.Mode) - // 确保 generation 输出目录存在(项目根级别) - _ = os.MkdirAll("../generation", 0755) - // 初始化 SQLite 数据库 if err := db.Init(cfg.Database.DSN, &model.User{}); err != nil { log.Fatalf("db init failed: %v", err) @@ -43,9 +39,6 @@ func main() { r := gin.New() r.Use(gin.Recovery()) // panic 恢复中间件,防止服务因未捕获异常宕机 - // 静态文件服务 — 生成的图片 - r.Static("/generation", "../generation") - // API v1 路由组 — 公开接口 v1 := r.Group("/api/v1") { diff --git a/backend/internal/handler/generate.go b/backend/internal/handler/generate.go index 4f54ddc..3372cdb 100755 --- a/backend/internal/handler/generate.go +++ b/backend/internal/handler/generate.go @@ -5,8 +5,6 @@ import ( "fmt" "log" "net/http" - "os" - "path/filepath" "sync" "time" @@ -141,23 +139,16 @@ func runPipelineBg(projectID, taskID string, req GenerateRequest) { updateStatus(taskID, "saving", 80) - // 保存图片到 ../generation/{projectId}/{taskId}/ - genDir := filepath.Join("..", "generation", projectID, taskID) - if err := os.MkdirAll(genDir, 0755); err != nil { - updateFailed(taskID, "创建输出目录失败: "+err.Error()) - return - } - assets := make([]AssetResponse, len(output.Assets)) for i, a := range output.Assets { - filename := fmt.Sprintf("%d.%s", i, a.Format) - filePath := filepath.Join(genDir, filename) - if err := os.WriteFile(filePath, a.Data, 0644); err != nil { - updateFailed(taskID, "保存图片失败: "+err.Error()) + key := fmt.Sprintf("generation/%s/%s/%d.%s", projectID, taskID, i, a.Format) + cdnURL, err := storageSvc.Upload(ctx, key, a.Data) + if err != nil { + updateFailed(taskID, "上传素材失败: "+err.Error()) return } assets[i] = AssetResponse{ - URL: fmt.Sprintf("/generation/%s/%s/%s", projectID, taskID, filename), + URL: cdnURL, Format: a.Format, } } diff --git a/docs/api.md b/docs/api.md index c06ffa7..9d9f91f 100644 --- a/docs/api.md +++ b/docs/api.md @@ -368,9 +368,9 @@ POST /api/v1/prompt/optimize | 状态 | 方法 | 路径 | 说明 | |------|------|------|------| -| [ ] | POST | `/api/v1/generate` | 提交生成任务,返回 taskId | -| [ ] | GET | `/api/v1/tasks/:taskId` | 查询任务状态与进度 | -| [ ] | GET | `/api/v1/tasks/:taskId/assets` | 获取生成结果(素材列表 + 元数据) | +| [x] | POST | `/api/v1/generate` | 提交生成任务,返回 taskId | +| [x] | GET | `/api/v1/tasks/:taskId` | 查询任务状态与进度 | +| [x] | GET | `/api/v1/tasks/:taskId/assets` | 获取生成结果(素材列表 + 元数据) | | [ ] | WS | `/api/v1/tasks/:taskId/ws` | WebSocket 实时进度推送 | | [x] | GET | `/api/v1/assets/download` | 下载素材(重定向到 CDN) |