生成openspace任务列表

This commit is contained in:
2025-10-30 16:10:10 +08:00
parent 93f67812ae
commit 2c9b4777ae
7 changed files with 181 additions and 2018 deletions

View File

@@ -0,0 +1,60 @@
## 任务清单Gin 到 Echo 迁移
- [ ] **1. 配置文件 (无代码依赖)**
- [ ] 修改 `config.yml``mode` 配置项的注释,将 "Gin 运行模式" 改为 "服务运行模式"。
- [ ] 修改 `config.example.yml``mode` 配置项的注释,保持与 `config.yml` 一致。
- [ ] **2. 控制器辅助函数 (最基础的依赖)**
- [ ] **`internal/app/controller/response.go`**
- [ ]`*gin.Context` 参数全部替换为 `echo.Context`
- [ ] 修改 `SendResponse``SendErrorResponse` 等函数,使其不再直接写入响应,而是返回 `error`,并在内部调用 `c.JSON(...)`
- [ ] **`internal/app/controller/auth_utils.go`**
- [ ]`*gin.Context` 参数全部替换为 `echo.Context`
- [ ] 适配 `Get...FromContext` 系列函数,使用 `c.Get("key")` 提取数据。
- [ ] **3. 中间件 (`internal/app/middleware`)**
- [ ] **`auth.go`**
- [ ]`import "github.com/gin-gonic/gin"` 替换为 `import "github.com/labstack/echo/v4"`
- [ ] 将中间件函数签名从 `func AuthMiddleware(...) gin.HandlerFunc` 更新为 `func AuthMiddleware(...) echo.MiddlewareFunc`
- [ ] 适配中间件内部逻辑,将 `func(c *gin.Context)` 改造为 `func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { ... } }` 的结构。
- [ ]`c.AbortWithStatusJSON(...)` 调用替换为 `return c.JSON(...)`
- [ ] 在逻辑正常通过的末尾,调用 `return next(c)`
- [ ] **4. 控制器 (`internal/app/controller/...`)**
- [ ] **通用修改**:对所有控制器文件执行以下操作:
- [ ]`import "github.com/gin-gonic/gin"` 替换为 `import "github.com/labstack/echo/v4"`
- [ ] 将所有处理函数签名从 `func(c *gin.Context)` 修改为 `func(c echo.Context) error`
- [ ]`c.ShouldBindJSON(&req)``c.ShouldBindQuery(&req)` 替换为 `if err := c.Bind(&req); err != nil { ... }`
- [ ]`c.Param("id")` 替换为 `c.Param("id")` (用法相同,检查返回值即可)。
- [ ]`controller.SendResponse(c, ...)``controller.SendErrorResponse(c, ...)` 调用修改为 `return controller.SendResponse(c, ...)``return controller.SendErrorResponse(c, ...)`
- [ ] **文件清单** (按依赖顺序建议):
- [ ] `internal/app/controller/management/controller_helpers.go` (注意此文件中的泛型辅助函数也需要适配)
- [ ] `internal/app/controller/device/device_controller.go`
- [ ] `internal/app/controller/management/pig_batch_controller.go`
- [ ] `internal/app/controller/plan/plan_controller.go`
- [ ] `internal/app/controller/user/user_controller.go`
- [ ] **5. 核心 API 层 (`internal/app/api`)**
- [ ] **`router.go`**
- [ ] 将所有 `router.GET`, `router.POST` 等 Gin 路由注册方法替换为 Echo 的 `e.GET`, `e.POST` 等方法。
- [ ] 将 Swagger 路由 `router.GET("/swagger/*", ginSwagger.WrapHandler(swaggerFiles.Handler))` 替换为 `e.GET("/swagger/*", echoSwagger.WrapHandler)`
- [ ] 将 pprof 路由的 `gin.WrapH``gin.WrapF` 调用替换为 `echo.WrapHandler``echo.WrapFunc`
- [ ] **`api.go`**
- [ ]`engine *gin.Engine` 替换为 `engine *echo.Echo`
- [ ] 更新 `NewAPI` 函数:
- [ ]`gin.SetMode(cfg.Mode)` 替换为 `e.Debug = (cfg.Mode == "debug")`
- [ ]`gin.New()` 替换为 `echo.New()`
- [ ]`engine.Use(gin.Recovery())` 替换为 `e.Use(middleware.Recover())`
- [ ] **6. 依赖管理**
- [ ]`go.mod` 中移除 `github.com/gin-gonic/gin`
- [ ]`go.mod` 中移除 `github.com/swaggo/gin-swagger`
- [ ]`go.mod` 中添加 `github.com/labstack/echo/v4`
- [ ]`go.mod` 中添加 `github.com/swaggo/echo-swagger`
- [ ] 执行 `go mod tidy` 清理依赖项。
- [ ] **7. 验证**
- [ ] 运行 `go build ./...` 确保项目能够成功编译。
- [ ] 启动服务,手动测试所有 API 端点,验证功能是否与迁移前一致。
- [ ] 访问 `/swagger/index.html`,确认 Swagger UI 是否正常工作。
- [ ] (可选) 访问 `/debug/pprof/`,确认 pprof 路由是否正常。