
- 实现完整的邮件发送服务类,支持重试机制和错误处理 - 集成5种邮件模板(激活、密码重置、欢迎、通知、密码修改) - 创建Elysia邮件服务插件,支持便捷方法调用 - 添加完整的TypeScript类型定义和配置文件 - 编写全面的测试用例,覆盖所有功能 - 支持SMTP连接池、健康检查和状态监控 关联M2基础用户系统开发任务
517 lines
14 KiB
Markdown
517 lines
14 KiB
Markdown
# M2 - 基础用户系统 - 开发任务计划
|
||
|
||
## 📋 任务概览
|
||
|
||
基于接口设计文档和开发PRD,本计划将M2基础用户系统开发分为4个阶段,共70+个详细子任务,预计4周完成。
|
||
|
||
### 🎯 总体目标
|
||
- 完成70+个详细开发子任务
|
||
- 建立完整的RBAC权限体系
|
||
- 实现安全的用户认证系统
|
||
- 构建可扩展的系统基础架构
|
||
|
||
### 📊 任务统计
|
||
- **总任务数**:70+ 个子任务
|
||
- **P0核心任务**:35个 (必须完成)
|
||
- **P1重要任务**:25个 (优先完成)
|
||
- **P2优化任务**:10个 (时间允许时完成)
|
||
|
||
## 📅 第一阶段:数据库设计与基础服务 (第1周,5天)
|
||
|
||
### 🗄️ 数据库表结构设计 (第1-2天)
|
||
**预估工时**:16小时
|
||
|
||
#### 核心任务:
|
||
- [x] **创建用户表 sys_users** `(4h)`
|
||
- 设计字段、索引、约束
|
||
- 支持软删除、乐观锁
|
||
|
||
- [x] **创建角色表 sys_roles** `(3h)`
|
||
- 支持树形结构、权限快照
|
||
|
||
- [x] **创建权限表 sys_permissions** `(3h)`
|
||
- 支持层级权限、资源权限
|
||
|
||
- [x] **创建关联表** `(3h)`
|
||
- user_roles、role_permissions、user_organizations等
|
||
|
||
- [x] **创建系统表** `(2h)`
|
||
- 字典表、标签表、日志表
|
||
|
||
- [x] **编写数据库迁移脚本和基础数据** `(1h)`
|
||
|
||
### 🔧 基础服务配置 (第3天)
|
||
**预估工时**:8小时
|
||
|
||
#### 核心任务:
|
||
- [x] **完善数据库连接配置** `(2h)`
|
||
- 连接池、事务管理
|
||
|
||
- [x] **优化Redis配置** `(2h)`
|
||
- 缓存策略、session管理
|
||
|
||
- [x] **完善JWT配置** `(2h)`
|
||
- 密钥管理、过期时间、RefreshToken
|
||
|
||
- [x] **集成邮件发送服务** `(1h)`
|
||
- SMTP配置、邮件模板
|
||
|
||
- [x] **集成验证码服务** `(1h)`
|
||
- 图形验证码生成、验证
|
||
|
||
### 🔐 用户注册功能 (第4天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现注册参数验证** `(1h)`
|
||
- 用户名格式、邮箱格式、密码强度
|
||
|
||
- [ ] **实现唯一性检查** `(1h)`
|
||
- 用户名唯一、邮箱唯一
|
||
|
||
- [ ] **实现密码加密** `(1h)`
|
||
- bcrypt加密、盐值生成
|
||
|
||
- [ ] **实现激活机制** `(2h)`
|
||
- 生成激活令牌、Redis存储
|
||
|
||
- [ ] **实现注册邮件发送** `(2h)`
|
||
- 激活邮件模板、异步发送
|
||
|
||
- [ ] **编写注册功能测试** `(1h)`
|
||
|
||
### 🎫 用户激活与登录功能 (第5天)
|
||
**预估工时**:8小时
|
||
|
||
#### 激活功能子任务:
|
||
- [ ] **实现激活令牌验证** `(1h)`
|
||
- Redis查询、过期检查
|
||
|
||
- [ ] **实现用户状态更新** `(1h)`
|
||
- 激活状态、数据库更新
|
||
|
||
- [ ] **发送欢迎邮件** `(1h)`
|
||
- 欢迎邮件模板、用户引导
|
||
|
||
- [ ] **编写激活功能测试** `(1h)`
|
||
|
||
#### 登录功能子任务:
|
||
- [ ] **实现多种登录方式** `(1h)`
|
||
- 用户名登录、邮箱登录
|
||
|
||
- [ ] **实现密码验证** `(1h)`
|
||
- bcrypt验证、用户状态检查
|
||
|
||
- [ ] **实现JWT生成** `(1h)`
|
||
- AccessToken、RefreshToken生成
|
||
|
||
- [ ] **实现登录失败限制** `(1h)`
|
||
- 失败次数统计、账号锁定
|
||
|
||
## 📅 第二阶段:用户管理与安全功能 (第2周,5天)
|
||
|
||
### 🛡️ JWT认证中间件 (第6天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现JWT令牌验证** `(2h)`
|
||
- 签名验证、过期检查
|
||
|
||
- [ ] **实现用户信息提取** `(2h)`
|
||
- 从Token解析用户ID、角色
|
||
|
||
- [ ] **实现Token黑名单** `(2h)`
|
||
- Redis黑名单、退出登录处理
|
||
|
||
- [ ] **开发JWT中间件** `(2h)`
|
||
- 请求拦截、权限注入
|
||
|
||
### 🔄 Token管理功能 (第7天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现RefreshToken验证** `(2h)`
|
||
- Redis验证、用户状态检查
|
||
|
||
- [ ] **实现新Token生成** `(2h)`
|
||
- AccessToken刷新、RefreshToken轮转
|
||
|
||
- [ ] **实现Token撤销** `(2h)`
|
||
- 加入黑名单、清除RefreshToken
|
||
|
||
- [ ] **实现缓存清除** `(2h)`
|
||
- 用户缓存、权限缓存清理
|
||
|
||
### 👤 用户信息管理 (第8天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现基本信息查询** `(2h)`
|
||
- 用户基本信息、状态信息
|
||
|
||
- [ ] **实现角色信息查询** `(2h)`
|
||
- 用户角色、权限信息
|
||
|
||
- [ ] **实现组织信息查询** `(1h)`
|
||
- 用户组织、职位信息
|
||
|
||
- [ ] **实现用户信息缓存** `(2h)`
|
||
- Redis缓存、缓存更新策略
|
||
|
||
- [ ] **编写用户信息API测试** `(1h)`
|
||
|
||
### 📋 用户列表与CRUD (第9天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现分页查询** `(2h)`
|
||
- 页码参数、分页算法、数据返回格式
|
||
|
||
- [ ] **实现多条件筛选** `(2h)`
|
||
- 状态筛选、角色筛选、时间范围
|
||
|
||
- [ ] **实现关键词搜索** `(1h)`
|
||
- 用户名、邮箱、手机号、昵称搜索
|
||
|
||
- [ ] **实现排序功能** `(1h)`
|
||
- 创建时间、最后登录、用户名排序
|
||
|
||
- [ ] **实现用户CRUD操作** `(2h)`
|
||
- 创建用户、更新信息、软删除
|
||
|
||
### 🔒 密码管理功能 (第10天)
|
||
**预估工时**:8小时
|
||
|
||
#### 密码修改子任务:
|
||
- [ ] **实现原密码验证** `(1h)`
|
||
- 当前密码检查、权限验证
|
||
|
||
- [ ] **实现新密码规则** `(1h)`
|
||
- 密码强度、确认密码检查
|
||
|
||
- [ ] **实现密码更新** `(1h)`
|
||
- bcrypt加密、数据库更新
|
||
|
||
- [ ] **实现密码修改后处理** `(1h)`
|
||
- 清除所有Token、发送通知
|
||
|
||
#### 密码重置子任务:
|
||
- [ ] **实现重置申请邮箱验证** `(1h)`
|
||
- 邮箱存在性、用户状态检查
|
||
|
||
- [ ] **实现验证码验证** `(1h)`
|
||
- 图形验证码检查、防刷机制
|
||
|
||
- [ ] **实现重置令牌生成** `(1h)`
|
||
- 6位数字码、Redis存储、过期时间
|
||
|
||
- [ ] **实现重置邮件发送** `(1h)`
|
||
- 邮件模板、发送频率限制
|
||
|
||
## 📅 第三阶段:角色权限系统 (第3周,5天)
|
||
|
||
### 🏷️ 角色管理功能 (第11-12天)
|
||
**预估工时**:16小时
|
||
|
||
#### 角色基础功能:
|
||
- [ ] **实现角色树形结构** `(3h)`
|
||
- 父子关系、层级路径、深度计算
|
||
|
||
- [ ] **实现角色基本操作** `(3h)`
|
||
- 创建、更新、删除、查询
|
||
|
||
- [ ] **实现角色权限分配** `(4h)`
|
||
- 权限选择、继承检查
|
||
|
||
- [ ] **实现权限快照** `(3h)`
|
||
- JSON存储、快照更新策略
|
||
|
||
- [ ] **实现权限继承** `(3h)`
|
||
- 上下级权限合并、继承规则
|
||
|
||
### 🔐 权限验证中间件 (第13-14天)
|
||
**预估工时**:16小时
|
||
|
||
#### 权限验证核心:
|
||
- [ ] **实现认证检查** `(2h)`
|
||
- JWT验证、用户状态检查
|
||
|
||
- [ ] **实现RBAC权限检查** `(4h)`
|
||
- 角色权限查询、权限匹配
|
||
|
||
- [ ] **实现权限缓存** `(3h)`
|
||
- Redis缓存用户权限、缓存刷新
|
||
|
||
- [ ] **实现数据权限过滤** `(4h)`
|
||
- 基于角色的数据范围控制
|
||
|
||
- [ ] **实现用户角色分配** `(3h)`
|
||
- 角色添加、移除、有效期设置
|
||
|
||
### 🧪 权限系统测试 (第15天)
|
||
**预估工时**:8小时
|
||
|
||
#### 测试任务:
|
||
- [ ] **权限验证准确性测试** `(3h)`
|
||
- [ ] **角色继承测试** `(2h)`
|
||
- [ ] **权限缓存测试** `(2h)`
|
||
- [ ] **性能压力测试** `(1h)`
|
||
|
||
## 📅 第四阶段:系统完善与优化 (第4周,5天)
|
||
|
||
### 🏢 组织架构模块 (第16天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现组织树形结构** `(2h)`
|
||
- 父子关系、层级路径、深度管理
|
||
|
||
- [ ] **实现组织CRUD** `(2h)`
|
||
- 创建、更新、删除、查询组织
|
||
|
||
- [ ] **实现用户组织关系** `(2h)`
|
||
- 用户加入、离开、职位设置
|
||
|
||
- [ ] **实现组织权限** `(2h)`
|
||
- 组织级数据权限、层级权限
|
||
|
||
### 📚 字典标签系统 (第17天)
|
||
**预估工时**:8小时
|
||
|
||
#### 字典管理:
|
||
- [ ] **实现字典类型管理** `(2h)`
|
||
- 字典类型CRUD、系统字典保护
|
||
|
||
- [ ] **实现字典项管理** `(2h)`
|
||
- 字典项CRUD、排序、状态管理
|
||
|
||
- [ ] **实现字典缓存策略** `(2h)`
|
||
- Redis缓存、懒加载、缓存刷新
|
||
|
||
- [ ] **实现字典前端API** `(2h)`
|
||
- 字典数据接口、国际化支持
|
||
|
||
### 🏷️ 标签系统 (第18天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现标签CRUD** `(2h)`
|
||
- 标签创建、更新、删除、查询
|
||
|
||
- [ ] **实现标签分类** `(2h)`
|
||
- 标签类型、颜色管理、分组显示
|
||
|
||
- [ ] **实现标签使用统计** `(2h)`
|
||
- 使用次数统计、热门标签排行
|
||
|
||
- [ ] **实现标签推荐** `(2h)`
|
||
- 基于使用频率的标签推荐算法
|
||
|
||
### 📋 日志审计系统 (第19天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **实现操作日志中间件** `(2h)`
|
||
- 自动记录用户操作、请求参数
|
||
|
||
- [ ] **实现操作日志查询** `(2h)`
|
||
- 日志列表、筛选、搜索功能
|
||
|
||
- [ ] **实现日志统计分析** `(2h)`
|
||
- 操作频率、用户行为分析
|
||
|
||
- [ ] **实现安全监控** `(2h)`
|
||
- 敏感操作监控、异常行为告警
|
||
|
||
### 🚀 性能优化与部署 (第20天)
|
||
**预估工时**:8小时
|
||
|
||
#### 详细子任务:
|
||
- [ ] **数据库性能优化** `(2h)`
|
||
- 索引优化、查询优化、慢查询分析
|
||
|
||
- [ ] **缓存策略优化** `(2h)`
|
||
- 缓存命中率优化、缓存更新策略
|
||
|
||
- [ ] **API响应优化** `(2h)`
|
||
- 响应时间优化、并发处理优化
|
||
|
||
- [ ] **部署准备** `(2h)`
|
||
- 生产环境配置、监控配置、文档完善
|
||
|
||
## 📊 详细任务优先级分类
|
||
|
||
### 🔴 P0 - 核心功能 (必须完成,35个任务)
|
||
**数据库基础**:
|
||
- 用户表、角色表、权限表、关联表创建
|
||
- 基础服务配置
|
||
|
||
**认证核心**:
|
||
- 用户注册、激活、登录
|
||
- JWT认证中间件
|
||
- Token管理
|
||
|
||
**用户管理**:
|
||
- 用户信息管理、列表查询
|
||
- 基本CRUD操作
|
||
|
||
**权限控制**:
|
||
- 角色管理、权限分配
|
||
- 权限验证中间件
|
||
|
||
### 🟡 P1 - 重要功能 (优先完成,25个任务)
|
||
**安全功能**:
|
||
- 密码重置、验证码系统
|
||
- 登录失败限制
|
||
|
||
**角色权限**:
|
||
- 权限继承、权限缓存
|
||
- 用户角色管理
|
||
|
||
**系统管理**:
|
||
- 组织架构、字典管理
|
||
- 标签系统
|
||
|
||
### 🟢 P2 - 优化功能 (时间允许时完成,10个任务)
|
||
**增强功能**:
|
||
- 操作日志、安全监控
|
||
- 性能优化
|
||
- 高级搜索功能
|
||
|
||
## 🔗 任务依赖关系图
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[数据库表设计] --> B[基础服务配置]
|
||
B --> C[用户注册功能]
|
||
B --> D[验证码系统]
|
||
C --> E[用户激活功能]
|
||
D --> F[用户登录功能]
|
||
F --> G[JWT认证中间件]
|
||
G --> H[Token管理]
|
||
G --> I[用户信息管理]
|
||
I --> J[用户列表查询]
|
||
J --> K[角色管理]
|
||
K --> L[权限验证中间件]
|
||
L --> M[组织管理]
|
||
M --> N[字典标签系统]
|
||
N --> O[日志审计]
|
||
O --> P[性能优化]
|
||
```
|
||
|
||
## 📈 详细质量标准
|
||
|
||
### 代码质量指标
|
||
- [ ] **TypeScript严格模式**:无any类型,严格类型检查
|
||
- [ ] **ESLint检查**:0警告,代码风格统一
|
||
- [ ] **单元测试覆盖率**:> 80%,核心业务逻辑100%
|
||
- [ ] **集成测试**:完整业务流程端到端测试
|
||
|
||
### 性能质量指标
|
||
- [ ] **API响应时间**:P95 < 200ms,P99 < 500ms
|
||
- [ ] **数据库查询**:无N+1问题,慢查询 < 100ms
|
||
- [ ] **Redis缓存**:命中率 > 90%,内存使用合理
|
||
- [ ] **并发支持**:1000+并发用户,无性能退化
|
||
|
||
### 安全质量指标
|
||
- [ ] **密码安全**:bcrypt成本因子12,强密码策略
|
||
- [ ] **JWT安全**:安全密钥,合理过期时间
|
||
- [ ] **输入验证**:所有输入严格校验,防止注入攻击
|
||
- [ ] **权限控制**:RBAC模型正确实现,无权限绕过
|
||
|
||
## 🚨 详细风险控制
|
||
|
||
### 技术风险及应对
|
||
| 风险项 | 风险等级 | 影响 | 应对策略 |
|
||
|--------|----------|------|----------|
|
||
| 数据库性能瓶颈 | 中 | 高 | 提前压力测试,索引优化,读写分离准备 |
|
||
| JWT安全性问题 | 低 | 高 | RefreshToken轮转,黑名单机制,安全审计 |
|
||
| 缓存一致性问题 | 中 | 中 | 设计缓存更新策略,版本控制,监控机制 |
|
||
| 权限设计复杂度 | 中 | 中 | 分阶段实现,充分测试,文档完善 |
|
||
|
||
### 进度风险及应对
|
||
| 风险项 | 风险等级 | 影响 | 应对策略 |
|
||
|--------|----------|------|----------|
|
||
| 需求变更 | 中 | 中 | 敏捷开发,版本控制,需求冻结期 |
|
||
| 技术难点 | 低 | 中 | 技术预研,备选方案,专家咨询 |
|
||
| 测试时间不足 | 中 | 高 | 并行开发测试,自动化测试,持续集成 |
|
||
| 第三方服务依赖 | 低 | 中 | 本地Mock,降级方案,多供应商备选 |
|
||
|
||
## 📋 阶段性验收标准
|
||
|
||
### 第一阶段验收 (第1周末)
|
||
**功能验收**:
|
||
- [ ] 用户注册流程完整可用
|
||
- [ ] 邮箱激活功能正常
|
||
- [ ] 用户登录功能稳定
|
||
- [ ] 基础数据库表结构完善
|
||
|
||
**质量验收**:
|
||
- [ ] 单元测试覆盖率 > 70%
|
||
- [ ] 接口响应时间 < 300ms
|
||
- [ ] 无明显安全漏洞
|
||
|
||
### 第二阶段验收 (第2周末)
|
||
**功能验收**:
|
||
- [ ] 用户管理功能完整
|
||
- [ ] 密码管理功能可用
|
||
- [ ] JWT认证机制稳定
|
||
- [ ] 基础权限控制实现
|
||
|
||
**质量验收**:
|
||
- [ ] 单元测试覆盖率 > 75%
|
||
- [ ] 集成测试覆盖主要流程
|
||
- [ ] 接口文档完整准确
|
||
|
||
### 第三阶段验收 (第3周末)
|
||
**功能验收**:
|
||
- [ ] 完整RBAC权限体系
|
||
- [ ] 角色管理功能完善
|
||
- [ ] 权限验证准确无误
|
||
- [ ] 数据权限控制有效
|
||
|
||
**质量验收**:
|
||
- [ ] 单元测试覆盖率 > 80%
|
||
- [ ] 权限测试100%通过
|
||
- [ ] 性能测试达标
|
||
|
||
### 第四阶段验收 (第4周末)
|
||
**功能验收**:
|
||
- [ ] 系统功能完整
|
||
- [ ] 组织架构可用
|
||
- [ ] 字典标签系统完善
|
||
- [ ] 日志审计功能正常
|
||
|
||
**质量验收**:
|
||
- [ ] 所有测试用例通过
|
||
- [ ] 生产环境部署成功
|
||
- [ ] 监控告警正常
|
||
- [ ] 文档完整可用
|
||
|
||
## 📅 每日工作计划建议
|
||
|
||
### 典型工作日安排 (8小时)
|
||
- **09:00-10:30**:核心开发任务 (1.5h)
|
||
- **10:30-10:45**:休息
|
||
- **10:45-12:00**:核心开发任务 (1.25h)
|
||
- **12:00-13:00**:午餐休息
|
||
- **13:00-14:30**:核心开发任务 (1.5h)
|
||
- **14:30-14:45**:休息
|
||
- **14:45-16:15**:开发任务/代码审查 (1.5h)
|
||
- **16:15-16:30**:休息
|
||
- **16:30-17:30**:测试编写/文档更新 (1h)
|
||
- **17:30-18:00**:每日总结/明日规划 (0.5h)
|
||
|
||
### 关键节点提醒
|
||
- **每日**:更新TODO进度,提交代码
|
||
- **每周五**:阶段性总结,风险评估
|
||
- **里程碑**:功能验收,质量检查
|
||
- **每2周**:技术债务清理,重构优化
|
||
|
||
---
|
||
|
||
**预计总工作量**:160工时 (4周 × 40工时/周)
|
||
**项目优先级**:P0 (最高优先级)
|
||
**团队规模建议**:1-2人
|
||
**技术难度评级**:中等偏上
|
||
**成功概率评估**:85% (基于当前技术栈和时间安排) |