refactor: 全面重构代码并加白话注释,移动全局并行,去掉去向/重复记录

- 重构后端与前端,全程大白话注释(不懂程序也能看懂)
- 移动阶段改为全局并行(MoveAll,工人数=CPU核心数)
- 去掉记录每个文件搬去哪了(删除去向回填,解决写库卡顿)
- 去掉重复文件标记与统计:重复判定改为 MD5+路径都相同才算,重复则原地忽略不移动;MD5 相同但路径不同仍照常搬
- 媒体库去掉归类目录列,看板去掉重复/归类分布统计
This commit is contained in:
2025-05-11 21:05:35 +08:00
parent f915a9b1ac
commit 8979c744a8
26 changed files with 1044 additions and 683 deletions
+12 -5
View File
@@ -1,4 +1,8 @@
// Package api 提供 Web 管理接口(Gin),遵循统一响应与分页约定。
// Package api 是程序的"门面"——所有网页请求都先到这里,再转给背后的服务。
//
// 大白话理解:这是前台接待处。页面上的每个按钮、每次查询,
// 都会变成一个"请求"发到这里;这里分发给对应的办事窗口(controller),
// 办完再用统一的格式回话。
package api
import (
@@ -7,14 +11,17 @@ import (
"github.com/gin-gonic/gin"
)
// Response 统一响应结构
// Response 所有接口的统一回话格式:
// - code:成功 200,出错 400/500
// - message:一句话说明(成功就是 success,出错就是原因)
// - data:真正要返回的数据
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
// Success 成功响应
// Success 返回成功回话(code=200)。
func Success(c *gin.Context, data interface{}) {
c.JSON(http.StatusOK, Response{
Code: http.StatusOK,
@@ -23,7 +30,7 @@ func Success(c *gin.Context, data interface{}) {
})
}
// Error 失败响应(仅允许 400 / 500)
// Error 返回失败回话。statusCode 只允许 400(参数不对)/ 500(服务器出错)。
func Error(c *gin.Context, statusCode int, message string) {
c.JSON(statusCode, Response{
Code: statusCode,
@@ -32,7 +39,7 @@ func Error(c *gin.Context, statusCode int, message string) {
})
}
// PageResult 分页响应体
// PageResult 分页列表的统一格式:list 是这一页的数据,total 是总条数。
type PageResult struct {
List []interface{} `json:"list"`
Total int64 `json:"total"`