Files
Inbox/Go项目实战/03_基础设施/01_错误处理/Phase 0 基础设施构建执行清单 (Execution Checklist).md

39 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2025-12-11 07:24:36 +08:00
---
tags: []
aliases:
- "📋 Phase 0: 基础设施构建执行清单 (Execution Checklist)"
date created: 星期三, 十二月 10日 2025, 11:15:25 上午
date modified: 星期三, 十二月 10日 2025, 11:41:27 中午
---
# 📋 Phase 0: 基础设施构建执行清单 (Execution Checklist)
- [ ] **Step 1: `internal/pkg/ecode/code.go`** - **定义错误码注册表**
- **核心职责:** 仅定义 `int` 类型的 `const` 常量。包括基础设施类10000+和业务类20000+)错误码。
- **依赖:** 无 (Root Node)。
- **注意:** 需严格遵循文档中的“五位数字”分段规则。
- [ ] **Step 2: `internal/pkg/ecode/msg.go`** - **定义错误文案映射**
- **核心职责:** 初始化全局 `map[int]string`,提供 `GetMsg(code)` 方法。
- **依赖:** Step 1 (`code.go` 中的常量)。
- **注意:** 使用 `sync.RWMutex` 保护并发读写(虽然主要是读),文案必须是“用户安全”的。
- [ ] **Step 3: `internal/pkg/ecode/error.go`** - **实现核心错误实体**
- **核心职责:** 定义 `struct Error`,实现 `error` 接口,提供 `New()`, `Error()`, `Code()` 等方法。支持 `WithDetails` 等动态扩展。
- **依赖:** Step 1 & Step 2。
- **注意:** 这是 Service 层唯一允许引用的错误对象。
- [ ] **Step 4: `internal/pkg/app/options.go`** - **定义响应配置模式**
- **核心职责:** 定义 `type Option func(*Response)` 及常用的 Option 实现(如 `WithTraceID`)。
- **依赖:** 无(或仅依赖标准库)。
- **注意:** 先于 `response.go` 实现,以便主逻辑直接使用配置项,符合“开闭原则”。
- [ ] **Step 5: `internal/pkg/app/response.go`** - **实现 HTTP 响应封装**
- **核心职责:** 定义 `Response` 结构体,封装 `New`, `Success`, `Error` 方法。处理 JSON 序列化、TraceID 注入、以及将 `error` 接口清洗为 `ecode` 的逻辑。
- **依赖:** Step 3 (`ecode`), Step 4 (`options`), `Gin Context`
- **注意:** 需实现“双层信息架构”日志记录原始错误HTTP Body 返回安全文案。
- [ ] **Step 6: internal/pkg/app/responder.go** - **定义 Responder 接口**
- **核心职责:** 定义 `Responder` 接口,解耦具体实现,方便未来 Mock 测试。
- **依赖:** `app/response.go` (实现关系)。