# 完整交付检查清单

## 目录

- [项目交付前检查清单](#项目交付前检查清单)
- [代码评审检查清单](#代码评审检查清单)
- [发布前检查清单](#发布前检查清单)
- [安全检查清单](#安全检查清单)

---

## 项目交付前检查清单

### 📋 需求检查

- [ ] 所有需求点已实现
- [ ] 需求变更已记录
- [ ] 边缘情况已处理
- [ ] 用户验收标准已满足

### 🏗️ 架构检查

- [ ] 文件结构符合标准化规范
- [ ] 无冗余目录或文件
- [ ] 依赖关系清晰
- [ ] 模块划分合理

### 💻 代码质量检查

- [ ] TypeScript 类型检查通过 (`tsc --noEmit`)
- [ ] ESLint 检查通过无错误
- [ ] 无未使用的变量或导入
- [ ] 无 `any` 类型滥用
- [ ] 命名清晰符合规范
- [ ] 注释充分且有意义
- [ ] 无重复代码块
- [ ] 函数单一职责（不超过 50 行）
- [ ] 嵌套层级不超过 3 层

### 📦 依赖检查

- [ ] package.json 包含所有依赖
- [ ] 无未使用的依赖 (`depcheck` 验证)
- [ ] 依赖版本稳定（非 alpha/beta/rc）
- [ ] lockfile 已提交
- [ ] 无已知安全漏洞 (`npm audit` 验证)

### 🌍 环境检查

- [ ] .env.example 包含所有配置项
- [ ] 每个配置项有说明注释
- [ ] .env.local 已加入 .gitignore
- [ ] 敏感信息未提交到 git
- [ ] .gitignore 配置正确

### 📖 文档检查

- [ ] README.md 完整
- [ ] README 包含项目介绍
- [ ] README 包含快速开始指南
- [ ] README 包含环境变量说明
- [ ] README 包含部署说明
- [ ] 代码注释清晰易懂
- [ ] API 文档（如有）已更新

### ✅ 功能验证

- [ ] 项目能正常启动
- [ ] 项目能正常构建 (`npm run build`)
- [ ] 主要功能流程可正常执行
- [ ] 错误边界已处理
- [ ] 加载状态有反馈

---

## 代码评审检查清单

### 代码正确性

- [ ] 逻辑正确，无明显 bug
- [ ] 边界条件已处理
- [ ] 错误处理完善
- [ ] 异步操作正确处理
- [ ] 并发问题已考虑

### 代码质量

- [ ] 代码简洁，无冗余
- [ ] 命名清晰，表达准确
- [ ] 函数/类职责单一
- [ ] 无重复代码
- [ ] 无魔法数字/字符串

### 性能考虑

- [ ] 无不必要的重渲染
- [ ] 大数据量场景已优化
- [ ] 内存泄漏风险已检查
- [ ] 网络请求有缓存策略

### 安全性

- [ ] XSS 风险已处理
- [ ] SQL 注入风险已处理
- [ ] 用户输入已验证
- [ ] 敏感信息未日志输出
- [ ] 认证授权逻辑正确

### 可维护性

- [ ] 代码结构清晰
- [ ] 注释充分
- [ ] 符合团队规范
- [ ] 测试用例充分

---

## 发布前检查清单

### 构建检查

- [ ] 生产构建无错误
- [ ] 构建产物大小合理
- [ ] Tree shaking 生效
- [ ] 无用代码已移除

### 配置检查

- [ ] 生产环境配置正确
- [ ] API 端点指向生产
- [ ] Debug 模式已关闭
- [ ] Log 级别配置正确

### 功能检查

- [ ] 冒烟测试通过
- [ ] 核心功能验证通过
- [ ] 回归测试通过
- [ ] 性能指标达标

### 监控检查

- [ ] 错误监控已配置
- [ ] 性能监控已配置
- [ ] 日志收集已配置
- [ ] 告警规则已设置

### 回滚准备

- [ ] 上一版本备份存在
- [ ] 回滚流程已明确
- [ ] 数据库迁移可回滚
- [ ] 配置回滚方案已准备

---

## 安全检查清单

### 认证与授权

- [ ] JWT secret 足够复杂
- [ ] Token 过期时间合理
- [ ] 权限边界清晰
- [ ] 越权访问已防护
- [ ] 登录失败有锁定机制

### 输入验证

- [ ] 所有用户输入已验证
- [ ] 验证在服务端执行
- [ ] 输入长度有限制
- [ ] 特殊字符已处理
- [ ] 文件上传有类型/大小限制

### 输出编码

- [ ] XSS 防护已启用
- [ ] HTML 输出已编码
- [ ] JSON 输出正确
- [ ] 响应头安全配置

### 数据保护

- [ ] 密码已加密存储（bcrypt/argon2）
- [ ] 敏感数据传输使用 HTTPS
- [ ] 数据库连接信息加密
- [ ] 日志不含敏感信息
- [ ] PII 数据有保护措施

### 依赖安全

- [ ] 定期运行 `npm audit`
- [ ] 高危漏洞已修复
- [ ] 不使用已废弃的包
- [ ] 依赖来源可信
- [ ] 有依赖更新机制

---

## 自动检查脚本使用说明

### 运行全部检查

```bash
# 进入项目目录
cd your-project

# 运行质量扫描
bash scripts/quality-scan.sh
```

### 单独运行检查

```bash
# TypeScript 类型检查
npx tsc --noEmit

# ESLint 检查
npx eslint . --ext .ts,.tsx

# 依赖检查
npx depcheck

# 安全漏洞检查
npm audit

# 构建检查
npm run build
```

### 检查结果判定

| 检查项 | 通过标准 |
|--------|---------|
| TypeScript | 0 errors |
| ESLint | 0 errors, warnings 可接受但尽量少 |
| depcheck | 0 unused dependencies |
| npm audit | 0 critical, 0 high |
| build | 成功完成无错误 |

---

## 常见问题排查

### 依赖安装失败

1. 检查 Node.js 版本是否符合要求
2. 删除 lockfile 和 node_modules 重新安装
3. 检查网络连接和 npm 源配置
4. 尝试降级有问题的依赖版本

### 类型检查失败

1. 检查类型定义是否完整
2. 检查 import 路径是否正确
3. 检查 tsconfig.json 配置
4. 必要时使用 `// @ts-ignore` 但要加注释说明

### 构建失败

1. 检查环境变量是否配置完整
2. 检查是否有未使用的导入
3. 检查路径别名配置是否正确
4. 查看详细错误日志定位问题

---

## 检查清单使用指南

### 如何高效使用

1. **提前使用** - 不要等到交付前才检查，开发过程中逐项确认
2. **自动化优先** - 能自动化的检查项全部做成脚本自动运行
3. **结对验证** - 重要项目让另一个人过一遍清单
4. **持续改进** - 根据实际情况更新清单内容

### 不同项目的裁剪

- **小型工具项目** - 可跳过部分架构和性能检查
- **核心业务项目** - 必须通过全部检查项
- **开源项目** - 额外增加文档和示例代码检查
- **安全敏感项目** - 重点关注安全检查清单

---

*本清单基于 Harness Engineering 质量门禁理念制定*
