perf(*): 创作工作台 - 优化首页按需加载与画布交互并修复历史迁移冲突

This commit is contained in:
ddCat
2026-09-05 13:24:10 +08:00
parent 165b4443ab
commit 58f01d1eb6
107 changed files with 3025 additions and 1089 deletions

View File

@@ -17,6 +17,27 @@ import (
)
func RegisterUserDataRoutes(r *gin.RouterGroup, svc *service.Service) {
r.POST("/assets/batch", func(c *gin.Context) {
user, err := currentUser(c, svc)
if err != nil {
failService(c, err)
return
}
c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, 16<<10)
var req struct {
IDs []string `json:"ids"`
}
if err := c.ShouldBindJSON(&req); err != nil {
fail(c, http.StatusBadRequest, err)
return
}
assets, err := svc.UserAssetsByIDs(user.ID, req.IDs)
if err != nil {
failService(c, err)
return
}
ok(c, gin.H{"assets": assets})
})
r.GET("/settings/prompt-templates", func(c *gin.Context) {
user, err := currentUser(c, svc)
if err != nil {
@@ -571,6 +592,17 @@ func RegisterUserDataRoutes(r *gin.RouterGroup, svc *service.Service) {
failService(c, err)
return
}
if c.Query("page") != "" {
page, _ := strconv.Atoi(c.Query("page"))
pageSize, _ := strconv.Atoi(c.Query("page_size"))
result, pageErr := svc.UserCanvasProjectsPage(user.ID, page, pageSize, c.Query("project_id"), c.Query("q"), c.Query("sort"))
if pageErr != nil {
failService(c, pageErr)
return
}
ok(c, result)
return
}
projects, err := svc.UserCanvasProjectSummaries(user.ID)
if err != nil {
failService(c, err)

View File

@@ -0,0 +1,31 @@
package handler
import (
"testing"
"infinite-canvas/backend/internal/service"
"github.com/gin-gonic/gin"
)
func TestUserDataIncrementalRoutesAreRegistered(t *testing.T) {
gin.SetMode(gin.TestMode)
router := gin.New()
RegisterUserDataRoutes(router.Group("/api"), &service.Service{})
wanted := map[string]bool{
"GET /api/canvas-projects": false,
"GET /api/canvas-projects/:id": false,
"POST /api/assets/batch": false,
}
for _, route := range router.Routes() {
key := route.Method + " " + route.Path
if _, exists := wanted[key]; exists {
wanted[key] = true
}
}
for route, found := range wanted {
if !found {
t.Errorf("missing route: %s", route)
}
}
}