!36 feat: 接入七牛云存储,替换本地文件存储

Merge pull request !36 from 何朝晖/feat/invoke-qiniu
This commit is contained in:
2026-05-25 05:50:07 +00:00
committed by Gitee
3 changed files with 8 additions and 24 deletions
-7
View File
@@ -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")
{
+5 -14
View File
@@ -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,
}
}
+3 -3
View File
@@ -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) |