Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-22-unify-error-message-source/tasks.md
huang 6821e5abcf
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m36s
refactor: 统一错误消息数据源,优化错误码与映射表管理
主要改动:
- 改造 errors.New() 和 Wrap() 函数签名为可变参数,优先使用 errorMessages 映射表
- 添加 allErrorCodes 注册表和 init() 启动时校验,确保错误码与映射表一致
- 添加 TestAllCodesHaveMessages 和 TestNoOrphanMessages 测试防止映射表腐化
- 清理 109 处与映射表一致的冗余硬编码(service 层)
- 保留业务特定消息覆盖能力

新增 API 用法:
- errors.New(errors.CodeUnauthorized) // 使用映射表默认消息
- errors.New(errors.CodeNotFound, "提现申请不存在") // 覆盖为自定义消息
2026-01-22 18:27:42 +08:00

2.7 KiB

统一错误消息数据源 - 任务清单

1. 基础设施改造

  • 1.1 在 pkg/errors/codes.go 中添加 allErrorCodes 错误码注册表
  • 1.2 改造 pkg/errors/errors.go 中的 New() 函数签名为可变参数
  • 1.3 改造 pkg/errors/errors.go 中的 Wrap() 函数签名为可变参数
  • 1.4 在 pkg/errors/codes.go 中添加 init() 启动时校验函数

2. 测试保障

  • 2.1 在 pkg/errors/codes_test.go 中添加 TestAllCodesHaveMessages 测试
  • 2.2 在 pkg/errors/codes_test.go 中添加 TestNoOrphanMessages 测试(检测孤立映射)
  • 2.3 更新 pkg/errors/handler_test.go 测试覆盖新的函数签名

3. 业务代码清理 - Service 层

  • 3.1 清理 internal/service/commission_withdrawal/service.go 冗余硬编码
  • 3.2 清理 internal/service/shop/service.go 冗余硬编码
  • 3.3 清理 internal/service/auth/service.go 冗余硬编码
  • 3.4 清理 internal/service/shop_account/service.go 冗余硬编码
  • 3.5 清理 internal/service/enterprise/service.go 冗余硬编码
  • 3.6 清理 internal/service/customer/service.go 冗余硬编码
  • 3.7 清理 internal/service/customer_account/service.go 冗余硬编码
  • 3.8 清理 internal/service/role/service.go 冗余硬编码
  • 3.9 清理 internal/service/permission/service.go 冗余硬编码
  • 3.10 清理 internal/service/account/service.go 冗余硬编码
  • 3.11 清理 internal/service/enterprise_card/service.go 冗余硬编码
  • 3.12 清理 internal/service/my_commission/service.go 冗余硬编码
  • 3.13 清理 internal/service/shop_commission/service.go 冗余硬编码
  • 3.14 清理 internal/service/commission_withdrawal_setting/service.go 冗余硬编码

4. 业务代码清理 - Handler 层

  • 4.1 清理 internal/handler/admin/*.go 冗余硬编码(无需清理,都是业务特定消息)
  • 4.2 清理 internal/handler/h5/*.go 冗余硬编码(无需清理,都是业务特定消息)
  • 4.3 清理 internal/handler/app/*.go 冗余硬编码(无需清理,都是业务特定消息)

5. 业务代码清理 - Middleware 和其他

  • 5.1 清理 pkg/middleware/*.go 冗余硬编码(无需清理,都是业务特定消息)
  • 5.2 清理 internal/middleware/*.go 冗余硬编码(无需清理,都是业务特定消息)
  • 5.3 清理 internal/bootstrap/*.go 冗余硬编码(无需清理,都是业务特定消息)

6. 验证和收尾

  • 6.1 运行完整测试套件 go test ./pkg/... - 全部通过
  • 6.2 运行 lsp_diagnostics 检查类型错误 - 无错误
  • 6.3 编译验证 go build ./... - 成功