Files
lehuo/docs/08_ENGINEERING_RULES.md
T
2026-08-12 14:35:12 +08:00

186 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 08 工程开发规则
## 1. Monorepo
推荐 pnpm workspace。
根命令:
```bash
pnpm install
pnpm lint
pnpm typecheck
pnpm test
pnpm build
```
必须保证 CI 与本地命令一致。
---
## 2. 包管理
- 锁定 package manager 版本;
- 提交 lockfile;
- 不混 npm/yarn/pnpm;
- 国内开发可配置可靠 npm 镜像,但源码不得依赖私有个人镜像;
- CI 应支持官方源回退。
---
## 3. TypeScript
- strict: true
- 禁止大面积 any
- 禁止 `@ts-ignore` 掩盖错误;特殊情况写原因
- API contracts 明确类型
- 日期统一 ISO 8601
---
## 4. Git
分支:
- main
- develop(可选)
- feature/*
- fix/*
- chore/*
Commit 建议 Conventional Commits。
每个 PR:
- 变更摘要
- 测试结果
- 截图(UI)
- migration 说明
- 风险
- 回滚方案
---
## 5. 环境变量
`.env.example` 只能放占位符。
示例:
```env
APP_ENV=development
DATABASE_URL=
REDIS_URL=
WECHAT_APP_ID=
WECHAT_APP_SECRET=
COS_BUCKET=
COS_REGION=
COS_SECRET_ID=
COS_SECRET_KEY=
SESSION_SECRET=
FIELD_ENCRYPTION_KEY=
```
真实密钥不得入 Git。
---
## 6. 数据库 Migration
规则:
- 每次 schema 修改一份 migration;
- migration 可审查;
- 生产不允许 ORM 自动 `synchronize=true`;
- 大表变更考虑锁;
- destructive migration 分阶段。
---
## 7. 代码质量
函数:
- 单一职责;
- 复杂度高就拆;
- 业务规则命名表达含义;
- 不写 1000 行 service;
- 不复制粘贴权限逻辑。
必须有:
- lint
- format
- typecheck
- unit test
- integration test
---
## 8. 错误处理
后端:
- 业务错误使用统一 Domain/Application Error;
- 未预期错误不把 stack 返回用户;
- requestId 贯穿。
前端:
- 业务错误直接友好提示;
- 网络错误可重试;
- 401 统一重新登录;
- 403 明确无权限;
- 5xx 提供 requestId。
---
## 9. 第三方依赖
新增依赖前:
1. 是否真有必要?
2. 是否长期维护?
3. License 是否可用?
4. 是否显著增大 bundle?
5. 是否国内网络可获取?
6. 能否用现有依赖实现?
避免“为了 10 行代码引入一个包”。
---
## 10. Codex 禁止行为
- 不读文档直接重构;
- 看到旧代码就全量重写;
- 为通过测试删除测试;
- 用 mock 替代真实功能后宣称完成;
- 注释掉权限;
- 关闭类型检查;
- `catch {}` 吞错误;
- 生产环境 hardcode;
- 把敏感值写 fixtures;
- 删除 migration 历史;
- 改 API 不更新前端和 contracts;
- 自己决定产品删减。
---
## 11. Definition of Done
一个任务只有同时满足以下条件才算完成:
- 功能实现;
- 正常路径测试;
- 异常路径测试;
- 权限测试;
- 数据 migration 完成;
- 文档更新;
- lint 通过;
- typecheck 通过;
- test 通过;
- build 通过;
- 无新 High/Critical 漏洞;
- `10_TASK_STATE.md` 已回写。