2.9 KiB
2.9 KiB
08 工程开发规则
1. Monorepo
推荐 pnpm workspace。
根命令:
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 只能放占位符。
示例:
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. 第三方依赖
新增依赖前:
- 是否真有必要?
- 是否长期维护?
- License 是否可用?
- 是否显著增大 bundle?
- 是否国内网络可获取?
- 能否用现有依赖实现?
避免“为了 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已回写。