issue_36 #47
@@ -59,6 +59,11 @@
 | 
				
			|||||||
        - `controller_helpers.go` 中的泛型辅助函数将修改为返回 `error`,以适配 Echo 的错误处理链。
 | 
					        - `controller_helpers.go` 中的泛型辅助函数将修改为返回 `error`,以适配 Echo 的错误处理链。
 | 
				
			||||||
    - **Rationale**: 这种重构使得审计逻辑更加清晰和内聚,避免了在中间件中进行复杂的响应体捕获。
 | 
					    - **Rationale**: 这种重构使得审计逻辑更加清晰和内聚,避免了在中间件中进行复杂的响应体捕获。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					7.  **DTO 注解 (Annotations)**:
 | 
				
			||||||
 | 
					    - **From**: `json:"field" binding:"required"`
 | 
				
			||||||
 | 
					    - **To**: `json:"field" validate:"required"`
 | 
				
			||||||
 | 
					    - **Rationale**: Gin 使用 `binding` 标签进行请求参数绑定和验证。Echo 框架通常结合 `go-playground/validator` 库进行验证,其对应的标签为 `validate`。因此,所有 DTO 结构体中的 `binding` 标签需要替换为 `validate`。`json` 标签保持不变。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Risks / Trade-offs
 | 
					## Risks / Trade-offs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **Risk**: 迁移工作量大,可能遗漏某些 Gin 特有的功能或上下文用法,导致运行时错误。
 | 
					- **Risk**: 迁移工作量大,可能遗漏某些 Gin 特有的功能或上下文用法,导致运行时错误。
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,11 @@
 | 
				
			|||||||
        - [x] `internal/app/controller/plan/plan_controller.go`
 | 
					        - [x] `internal/app/controller/plan/plan_controller.go`
 | 
				
			||||||
        - [x] `internal/app/controller/user/user_controller.go`
 | 
					        - [x] `internal/app/controller/user/user_controller.go`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] **5. 核心 API 层 (`internal/app/api`)**
 | 
					- [ ] **5. DTO 结构体注解**
 | 
				
			||||||
 | 
					    - [ ] 检查并修改 `internal/app/dto` 包下所有结构体的注解。将所有 Gin 相关的注解(例如 `binding:"..."`)替换为 Echo
 | 
				
			||||||
 | 
					      兼容的注解(例如 `validate:"..."`)。`json:"..."` 标签通常保持不变。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [ ] **6. 核心 API 层 (`internal/app/api`)**
 | 
				
			||||||
    - [ ] **`router.go`**
 | 
					    - [ ] **`router.go`**
 | 
				
			||||||
        - [ ] 将所有 `router.GET`, `router.POST` 等 Gin 路由注册方法替换为 Echo 的 `e.GET`, `e.POST` 等方法。
 | 
					        - [ ] 将所有 `router.GET`, `router.POST` 等 Gin 路由注册方法替换为 Echo 的 `e.GET`, `e.POST` 等方法。
 | 
				
			||||||
        - [ ] 将 Swagger 路由 `router.GET("/swagger/*", ginSwagger.WrapHandler(swaggerFiles.Handler))` 替换为
 | 
					        - [ ] 将 Swagger 路由 `router.GET("/swagger/*", ginSwagger.WrapHandler(swaggerFiles.Handler))` 替换为
 | 
				
			||||||
@@ -61,14 +65,14 @@
 | 
				
			|||||||
            - [ ] 将 `gin.New()` 替换为 `echo.New()`。
 | 
					            - [ ] 将 `gin.New()` 替换为 `echo.New()`。
 | 
				
			||||||
            - [ ] 将 `engine.Use(gin.Recovery())` 替换为 `e.Use(middleware.Recover())`。
 | 
					            - [ ] 将 `engine.Use(gin.Recovery())` 替换为 `e.Use(middleware.Recover())`。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] **6. 依赖管理**
 | 
					- [ ] **7. 依赖管理**
 | 
				
			||||||
    - [ ] 在 `go.mod` 中移除 `github.com/gin-gonic/gin`。
 | 
					    - [ ] 在 `go.mod` 中移除 `github.com/gin-gonic/gin`。
 | 
				
			||||||
    - [ ] 在 `go.mod` 中移除 `github.com/swaggo/gin-swagger`。
 | 
					    - [ ] 在 `go.mod` 中移除 `github.com/swaggo/gin-swagger`。
 | 
				
			||||||
    - [ ] 在 `go.mod` 中添加 `github.com/labstack/echo/v4`。
 | 
					    - [ ] 在 `go.mod` 中添加 `github.com/labstack/echo/v4`。
 | 
				
			||||||
    - [ ] 在 `go.mod` 中添加 `github.com/swaggo/echo-swagger`。
 | 
					    - [ ] 在 `go.mod` 中添加 `github.com/swaggo/echo-swagger`。
 | 
				
			||||||
    - [ ] 执行 `go mod tidy` 清理依赖项。
 | 
					    - [ ] 执行 `go mod tidy` 清理依赖项。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] **7. 验证**
 | 
					- [ ] **8. 验证**
 | 
				
			||||||
    - [ ] 运行 `go build ./...` 确保项目能够成功编译。
 | 
					    - [ ] 运行 `go build ./...` 确保项目能够成功编译。
 | 
				
			||||||
    - [ ] 启动服务,手动测试所有 API 端点,验证功能是否与迁移前一致。
 | 
					    - [ ] 启动服务,手动测试所有 API 端点,验证功能是否与迁移前一致。
 | 
				
			||||||
    - [ ] 访问 `/swagger/index.html`,确认 Swagger UI 是否正常工作。
 | 
					    - [ ] 访问 `/swagger/index.html`,确认 Swagger UI 是否正常工作。
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user