ACE NestJS Starter - 需求文档
项目概述
打造一个基于 NestJS 的开箱即用、生产级的通用后端 API 脚手架。
使用场景: 通用后端 API 开发 技术栈: NestJS 11 + TypeScript 5.7 + pnpm
功能模块清单
1. 核心基础模块
1.1 配置管理
- [ ] @nestjs/config 集成
- [ ] 环境变量验证 (class-validator)
- [ ] 多环境配置支持 (.env, .env.development, .env.production)
- [ ] 配置类型安全
1.2 数据库
- [ ] 数据库方案选择 (待讨论: TypeORM vs Prisma)
- [ ] 数据库连接池配置
- [ ] 迁移脚本
- [ ] 种子数据 (Seeder)
- [ ] 事务支持
1.3 日志模块
- [ ] 日志框架选择 (待讨论: Winston vs Pino)
- [ ] 分级日志 (error, warn, info, debug)
- [ ] 请求日志中间件
- [ ] 日志文件分割
- [ ] 生产环境日志配置
2. 认证授权模块
2.1 JWT 授权
- [ ] Passport-JWT 集成
- [ ] Access Token + Refresh Token 机制
- [ ] Token 过期刷新
- [ ] 登录/登出接口
- [ ] Token 黑名单 (Redis)
2.2 角色权限管理 (RBAC)
- [ ] 用户-角色-权限模型设计
- [ ] 角色装饰器 (@Roles)
- [ ] 权限守卫 (Guard)
- [ ] 预设角色: Admin, User, Guest
- [ ] 动态权限配置
2.3 社交登录
- [ ] OAuth 2.0 通用框架
- [ ] Google OAuth 集成
- [ ] GitHub OAuth 集成
- [ ] 微信登录集成
- [ ] 社交账号绑定/解绑
- [ ] 多平台账号统一
3. API 功能模块
3.1 Swagger API 文档
- [ ] @nestjs/swagger 集成
- [ ] API 自动文档生成
- [ ] DTO 模型展示
- [ ] JWT 认证集成
- [ ] 多版本 API 文档
3.2 数据验证
- [ ] class-validator 全局验证管道
- [ ] class-transformer 数据转换
- [ ] 自定义验证装饰器
- [ ] 统一错误响应格式
3.3 CORS 跨域配置
- [ ] 开发环境全开放
- [ ] 生产环境白名单配置
- [ ] 预检请求处理
- [ ] 自定义 CORS 选项
4. 性能与安全模块
4.1 缓存 (Redis)
- [ ] @nestjs/cache-manager 集成
- [ ] Redis 连接配置
- [ ] 缓存装饰器
- [ ] 缓存失效策略
- [ ] 分布式缓存支持
4.2 限流
- [ ] @nestjs/throttler 集成
- [ ] IP 限流
- [ ] 用户限流
- [ ] 自定义限流策略
- [ ] Redis 存储限流记录
4.3 健康检查
- [ ] @nestjs/terminus 集成
- [ ] 数据库健康检查
- [ ] Redis 健康检查
- [ ] 磁盘空间检查
- [ ] 自定义健康检查指标
5. 业务扩展模块
5.1 邮件服务
- [ ] NodeMailer 集成
- [ ] SMTP 配置
- [ ] 邮件模板引擎 (待讨论: Handlebars vs EJS)
- [ ] 验证码邮件
- [ ] 异步发送队列 (可选)
5.2 文件上传
- [ ] Multer 集成
- [ ] 本地存储支持 ✅ (优先)
- [ ] 文件类型验证
- [ ] 文件大小限制
- [ ] 第三方存储 (待后续讨论: S3/MinIO/OSS)
5.3 WebSocket (Socket.io)
- [ ] @nestjs/websockets 集成
- [ ] Socket.io 适配器
- [ ] JWT 认证集成
- [ ] 房间管理
- [ ] 广播/私聊消息
5.4 任务调度
- [ ] @nestjs/schedule 集成
- [ ] Cron 定时任务
- [ ] Interval 间隔任务
- [ ] Timeout 延时任务
- [ ] 任务日志记录
6. 开发运维模块
6.1 Docker 支持
- [ ] Dockerfile (生产环境)
- [ ] Dockerfile.dev (开发环境)
- [ ] docker-compose.yml (完整开发环境)
- [ ] 多阶段构建优化
- [ ] .dockerignore 配置
6.2 E2E 测试配置
- [ ] Jest E2E 测试框架
- [ ] Supertest HTTP 测试
- [ ] 测试数据库配置
- [ ] 测试覆盖率
- [ ] CI 集成
6.3 代码质量
- [ ] ESLint 规则优化
- [ ] Prettier 格式化
- [ ] Husky Git Hooks
- [ ] Lint-staged 预提交检查
- [ ] Commitlint 提交规范
技术选型待讨论
高优先级
- 数据库 ORM: TypeORM vs Prisma
- 日志框架: Winston vs Pino
- 邮件模板: Handlebars vs EJS
- 队列系统: 是否需要 Bull/BullMQ
低优先级
- 文件存储扩展: AWS S3 / 阿里云 OSS / MinIO
- 监控方案: Prometheus + Grafana
- 错误追踪: Sentry
- API 版本控制: URI vs Header
非功能性需求
性能
- [ ] 响应时间 < 200ms (P95)
- [ ] 支持 1000+ 并发请求
- [ ] 数据库查询优化
- [ ] Redis 缓存命中率 > 80%
安全
- [ ] Helmet 安全头
- [ ] CSRF 保护
- [ ] SQL 注入防护
- [ ] XSS 防护
- [ ] 敏感信息脱敏
可维护性
- [ ] 清晰的项目结构
- [ ] 完善的代码注释
- [ ] API 文档自动生成
- [ ] 单元测试覆盖率 > 70%
- [ ] 部署文档
项目结构规划
src/
├── common/ # 公共模块
│ ├── decorators/ # 自定义装饰器
│ ├── filters/ # 异常过滤器
│ ├── guards/ # 守卫
│ ├── interceptors/ # 拦截器
│ ├── pipes/ # 管道
│ └── utils/ # 工具函数
├── config/ # 配置模块
├── modules/ # 业务模块
│ ├── auth/ # 认证授权
│ ├── user/ # 用户管理
│ ├── role/ # 角色管理
│ ├── permission/ # 权限管理
│ ├── file/ # 文件上传
│ ├── email/ # 邮件服务
│ ├── websocket/ # WebSocket
│ └── health/ # 健康检查
├── shared/ # 共享模块
│ ├── database/ # 数据库
│ ├── redis/ # 缓存
│ └── logger/ # 日志
└── main.ts # 入口文件交付物
- [x] 完整的源代码
- [ ] README.md (安装、配置、使用说明)
- [ ] API 文档 (Swagger)
- [ ] 环境配置示例 (.env.example)
- [ ] Docker 部署文档
- [ ] 开发指南 (CONTRIBUTING.md)
- [ ] 变更日志 (CHANGELOG.md)
文档版本: v0.1 创建时间: 2025-11-01 最后更新: 2025-11-01