Files
dingding_hrm/docs/05-coding-rules.md
T

81 lines
2.9 KiB
Markdown
Raw Normal View History

2026-06-22 22:23:17 +08:00
# 编码规则(Coding Rules)
> 每次写代码前先读完本文件。这是让 AI 不跑偏、代码质量稳定的硬约束。
## 0. 黄金法则
1. 不臆造:钉钉字段、接口、依赖、文件,不确定就查证或询问。
2. 守范围:只做当前任务要求的事,不顺手加 V2 功能。
3. 照架构:使用 Go + Gin + SQLite + 原生前端,不擅自换栈。
4. 小步改:一次只解决一个任务,不夹带无关重构。
5. 可验证:改完必须能构建、能测试、对得上验收标准。
## 1. 动手前
- 按链路确认:`vision` -> `requirements` -> `tech-stack` -> `architecture` -> `tasks`。
- 找到本任务对应的验收标准,写之前就知道怎么算做对。
- 先找现有函数、包、SQL、页面和测试,复用优先。
- 如果需求含糊,或改动会偏离 Go + Gin / 原生前端约束,先问。
## 2. 事实来源纪律
- 钉钉接口以 `docs/api.md`、`docs/04-architecture.md` 和实际 OpenAPI 响应为准。
- 新项目技术事实以 `docs/03-tech-stack.md` 为准。
- API 形状以 `docs/api.md` 为准。
- 数据结构变化必须同步更新 `docs/04-architecture.md`、`docs/api.md` 和相关任务。
- 不从旧 JSON 文件中推断未确认的字段含义。
## 3. 范围纪律
- MVP 只做 `02-requirements.md` 中列为 P0 的功能。
- V2 / V3 功能只记录,不实现。
- 不实现登录、权限、定时同步、变更历史,除非任务明确要求。
- 不为将来可能用到提前抽象。
## 4. 架构纪律
- 后端必须用 Gin。
- 前端必须是原生 HTML/CSS/JavaScript。
- Gin 负责托管前端文件和 `/api/*`。
- 不引入 Vue、React、Element Plus、Vite、Webpack。
- 不让浏览器直接调用钉钉 OpenAPI。
- 不把 SQL、钉钉调用和 HTTP 处理混在同一个函数里。
## 5. 代码规范
- Go 标识符使用英文,包名短小清晰。
- UI 文案和文档默认中文。
- 错误必须处理,不吞错。
- HTTP 错误统一返回 `{"error":{"code":"...","message":"..."}}`。
- 注释解释为什么,不复述做了什么。
- Go 代码提交前运行 `gofmt`。
## 6. 测试与验证
完成前至少检查:
- [ ] 构建通过。
- [ ] 相关测试通过。
- [ ] 对得上需求验收标准。
- [ ] 没有夹带无关改动。
- [ ] 涉及文档事实变化时,文档已同步。
- [ ] 回复里如实说明跑了什么命令、结果如何。
目标命令:
```powershell
go test ./...
go build ./...
```
## 7. 绝不
- 绝不把真实 app_key、app_secret、access_token、手机号样本写进代码或文档。
- 绝不为了让测试通过而删除断言、降低验收标准。
- 绝不擅自删除用户已有文件或重置工作区。
- 绝不在没说明的情况下改公共接口、迁移数据结构或升级依赖。
## 8. 拿不准就问
问题要具体,说明卡在哪里、有哪些选项、倾向哪个选项以及原因。