- 移动阶段并行处理文件,按原子计数上报累计进度 - 扫描遍历阶段实时上报已发现文件数,界面不再卡在 0/0 - 新增 /api/scan/ws WebSocket 实时推送扫描状态;前端断线指数退避自动重连,并以低频轮询兜底 - 新增统计看板与媒体库筛选/排序,目录选择器路径不存在时回退到最近可用父目录 - 存放目录支持自定义并持久化,默认输出到 KMP已整理
38 lines
806 B
Go
38 lines
806 B
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"kenaito-media-picker/internal/service"
|
|
"kenaito-media-picker/internal/store"
|
|
)
|
|
|
|
// NewRouter 组装 Gin 路由:健康检查 + API 路由组
|
|
func NewRouter(st *store.Store) *gin.Engine {
|
|
r := gin.New()
|
|
r.Use(gin.Recovery())
|
|
|
|
// 健康检查
|
|
r.GET("/health/check", func(c *gin.Context) {
|
|
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
|
})
|
|
|
|
apiGroup := r.Group("/api")
|
|
{
|
|
mc := NewMediaController(st)
|
|
apiGroup.POST("/media/list", mc.List)
|
|
apiGroup.POST("/media/stats", mc.Stats)
|
|
|
|
sc := NewScanController(service.NewScanService(st))
|
|
apiGroup.POST("/scan/start", sc.Start)
|
|
apiGroup.GET("/scan/status", sc.Status)
|
|
apiGroup.GET("/scan/ws", sc.Ws)
|
|
|
|
fc := NewFsController()
|
|
apiGroup.GET("/fs/list", fc.List)
|
|
}
|
|
return r
|
|
}
|