## 开发交付流程 每次实施/开发完功能后,必须按以下步骤执行: ### Step 1: 代码评审 - 检查变更是否符合现有代码模式(schema、service、controller、module 的结构一致性) - 检查是否有未使用的变量、import、参数 - 检查命名规范是否与项目一致 - 检查是否有重复代码或可复用逻辑 ### Step 2: 安全评审 - **注入防护**:检查所有外部输入(请求 body、query、params)是否有注入风险(HTML、Shell、NoSQL) - **认证/授权**:检查端点是否正确地加了 JWT guard 或 `@Public()`;管理端接口是否有 AdminGuard - **并发安全**:检查所有修改用户额度/积分的操作是否使用原子操作(`findOneAndUpdate + $inc`),而非 read-modify-write - **敏感信息**:检查是否误将密钥、凭据、token 暴露到响应或日志中 - **XSS/CSRF**:检查用户内容输出到 HTML/PDF 时是否做了转义 ### Step 3: 性能优化 - 检查是否有 N+1 查询(循环内查数据库),应使用批量查询或聚合 - 检查大表查询是否有索引覆盖 - 检查是否有不必要的 `.lean()` 缺失(读操作用 `exec()` 但不需要 mongoose document 方法时应加 `.lean()`) - 检查是否有内存泄漏风险(如 puppeteer browser 未在 finally 中 close) - Throttler/限流是否合理 ### Step 4: 完整测试 ```bash # 构建检查 cd /root/opencode-workspace/zhiyin/backend && npx nest build 2>&1 # 单元测试 npm test -- --forceExit --detectOpenHandles 2>&1 # 如果有变更的模块,验证关键 endpoint curl 可访问 ``` ### Step 5: 同步修复 - 上述步骤发现的问题必须修复后再发布 - 修复后重新执行 Step 4 验证构建通过 ### Step 6: 部署到生产 ```bash # 构建 cd /root/opencode-workspace/zhiyin/backend && npx nest build # 同步到生产目录 cp -rf dist/* /www/wwwroot/server/yzr-yhl/backend/dist/ # 复制证书(postbuild 替代) cp -r certs /www/wwwroot/server/yzr-yhl/backend/dist/src/certs # 重启 pm2 restart yhl-backend # 验证 sleep 3 && curl -s http://localhost:3002/api/share/visit/test?visitorId=v ```