2.8 KiB
2.8 KiB
1. 基础设施
- 1.1 创建 embedfs/assets/.gitkeep 和 embedfs/frontend-dist/.gitkeep,解决 embedfs 编译阻塞
- 1.2 创建 backend/.golangci.yml 配置文件,启用 13 个 linter 并配置所有规则(forbidigo、errorlint、errcheck、staticcheck、revive、gocritic、gosec、bodyclose、noctx、nilerr、gofumpt、goimports、gocyclo)
- 1.3 配置 .golangci.yml 中测试代码差异化规则(exclude-rules for *_test.go and tests/)
- 1.4 配置 .golangci.yml 排除生成代码(exclude-dirs: tests/mocks, exclude-generated: true)
- 1.5 运行 make backend-lint 验证配置可正常执行(无 embedfs 报错)
- 1.6 创建 lefthook.yml 配置文件,配置 pre-commit hook 仅检查 staged Go 文件
- 1.7 运行 lefthook install 安装 git hooks 并验证 hook 生效
2. 存量代码修复 — 错误比较
- 2.1 修复 internal/handler/model_handler.go 中 4 处 err == sentinel → errors.Is()
- 2.2 修复 internal/handler/provider_handler.go 中 4 处 err == sentinel → errors.Is()
- 2.3 修复 internal/provider/client.go:223 err == io.EOF → errors.Is(err, io.EOF)
3. 存量代码修复 — 忽略错误返回值
- 3.1 修复 internal/conversion/openai/adapter.go 中 3 处 _ = json.Marshal → 正确处理错误
- 3.2 修复 internal/conversion/anthropic/adapter.go 中 2 处 _ = json.Marshal → 正确处理错误
- 3.3 修复 internal/conversion/anthropic/decoder.go 中 1 处 _ = json.Marshal → 正确处理错误
- 3.4 修复 internal/conversion/engine.go:394 _ = json.Marshal → 正确处理错误(fallback 场景)
- 3.5 修复 internal/provider/client.go:144 _ = io.ReadAll → 正确处理错误
- 3.6 为 internal/handler/proxy_handler.go 中 2 处 _ = statsService.Record 添加 //nolint:errcheck 注释(goroutine fire-and-forget 模式)
4. 存量代码修复 — 日志字段
- 4.1 修复 internal/handler/proxy_handler.go 中 zap.String("error", err.Error()) → zap.Error(err)(约 6 处)
- 4.2 修复 internal/provider/client.go:187 zap.String("error", err.Error()) → zap.Error(err)
- 4.3 修复 internal/conversion/engine.go 中 zap.String("error", err.Error()) → zap.Error(err)(约 6 处)
5. 存量代码修复 — 桌面端日志
- 5.1 修复 cmd/desktop/dialog_linux.go 中 2 处 fmt.Fprintf(os.Stderr, ...) → 改用 zap logger
6. 验证与文档
- 6.1 运行 make backend-lint 确认所有 linter 通过
- 6.2 运行 make backend-test 确认所有测试通过
- 6.3 更新 backend/README.md 编码规范部分:补充 zap.Error(err) 优先于 zap.String("error", err.Error()) 的规范
- 6.4 更新 backend/README.md 编码规范部分:补充强制使用 errors.Is/As 而非 == 比较的说明
- 6.5 更新 README.md 添加 lefthook 安装说明(首次克隆项目后需执行 lefthook install)