计划模式 (Plan Mode)
MyDeskBot 的计划模式帮助您将复杂的开发任务分解为可执行的小步骤,提高任务完成的质量和效率。
目录
什么是计划模式
计划模式是 MyDeskBot 的高级功能,专门用于处理复杂的开发任务。它会:
- 📋 分析任务需求 - 理解任务的目标和范围
- 🔍 识别依赖关系 - 找出任务间的依赖和顺序
- 📊 生成详细计划 - 创建可执行的步骤清单
- ⏱️ 估算工作量 - 提供时间估算
- 🎯 分步执行 - 引导您一步步完成任务
如何使用
IntelliJ IDEA
- 打开计划模式:
Tools→MyDeskBot→Plan Mode - 或使用快捷键:
Ctrl+Shift+P(Windows/Linux) /Cmd+Shift+P(macOS) - 描述您的任务
- AI 生成详细计划
- 逐步执行每个步骤
VS Code
- 命令面板:
MyDeskBot: Plan Mode - 快捷键:
Ctrl+Shift+P - 描述任务并生成计划
Neovim
vim
:MyDeskBotPlan计划类型
1. 功能开发计划
任务描述:
实现一个用户认证系统,包括:
- 用户注册和登录
- JWT token 认证
- 密码重置功能
- 邮箱验证
- 权限管理生成的计划:
markdown
# 用户认证系统开发计划
## 阶段一:设计阶段(预计 4 小时)
### 1.1 数据库设计(1 小时)
- [ ] 设计用户表结构
- id, email, username, password_hash
- email_verified, email_verified_at
- reset_password_token, reset_password_expires
- created_at, updated_at
- [ ] 设计权限表结构
- roles 表
- permissions 表
- role_permissions 关联表
- [ ] 编写数据库迁移脚本
### 1.2 API 设计(1.5 小时)
- [ ] 定义认证端点
- POST /api/auth/register
- POST /api/auth/login
- POST /api/auth/logout
- POST /api/auth/refresh-token
- POST /api/auth/forgot-password
- POST /api/auth/reset-password
- POST /api/auth/verify-email
- [ ] 定义用户管理端点
- GET /api/users/me
- PUT /api/users/me
- GET /api/users/:id
- PUT /api/users/:id
- [ ] 定义权限管理端点
- GET /api/roles
- POST /api/roles
- PUT /api/roles/:id
- DELETE /api/roles/:id
### 1.3 安全设计(1.5 小时)
- [ ] JWT 策略配置
- Access token: 15 分钟
- Refresh token: 7 天
- 签名算法: RS256
- [ ] 密码策略
- 最小长度: 8 字符
- 必须包含大小写字母、数字
- 使用 bcrypt 加密
- [ ] 防护措施
- 限流(rate limiting)
- 防止暴力破解
- HTTPS 强制
## 阶段二:后端开发(预计 12 小时)
### 2.1 基础设施(2 小时)
- [ ] 安装依赖包
- jsonwebtoken
- bcrypt
- nodemailer
- [ ] 配置环境变量
- JWT_SECRET, JWT_REFRESH_SECRET
- SMTP 配置
- 数据库连接
- [ ] 创建数据库连接模块
### 2.2 数据库实现(2 小时)
- [ ] 运行迁移脚本
- [ ] 创建 User 模型
- [ ] 创建 Role 和 Permission 模型
- [ ] 编写基础 Repository
### 2.3 认证服务(4 小时)
- [ ] 实现注册功能
- 验证邮箱格式
- 检查邮箱是否已存在
- 哈希密码
- 发送验证邮件
- [ ] 实现登录功能
- 验证用户凭证
- 生成 JWT tokens
- 返回用户信息
- [ ] 实现 token 刷新功能
- 验证 refresh token
- 生成新的 access token
- [ ] 实现密码重置功能
- 生成重置 token
- 发送重置邮件
- 验证 token
- 更新密码
### 2.4 用户服务(2 小时)
- [ ] 实现获取当前用户信息
- [ ] 实现更新用户信息
- [ ] 实现用户查询
- [ ] 实现角色检查
### 2.5 权限服务(2 小时)
- [ ] 实现角色 CRUD
- [ ] 实现权限分配
- [ ] 实现权限检查中间件
- [ ] 实现装饰器/注解
## 阶段三:前端开发(预计 10 小时)
### 3.1 UI 组件(3 小时)
- [ ] 创建登录表单组件
- 邮箱输入
- 密码输入
- 记住我选项
- 错误提示
- [ ] 创建注册表单组件
- 邮箱、用户名、密码输入
- 密码强度指示器
- 密码确认
- [ ] 创建忘记密码表单
- [ ] 创建重置密码表单
### 3.2 状态管理(2 小时)
- [ ] 设计认证状态
- isAuthenticated
- user
- tokens
- permissions
- [ ] 实现 Auth Store
- login action
- logout action
- register action
- refresh token action
### 3.3 API 集成(2 小时)
- [ ] 创建认证 API 客户端
- [ ] 实现请求拦截器
- 自动添加 Authorization header
- 自动刷新 token
- [ ] 实现响应拦截器
- 处理 401 未授权
- 自动登出
### 3.4 路由守卫(2 小时)
- [ ] 实现公共路由
- [ ] 实现受保护路由
- [ ] 实现基于权限的路由守卫
- [ ] 处理重定向
### 3.5 页面集成(1 小时)
- [ ] 集成登录页面
- [ ] 集成注册页面
- [ ] 集成密码重置流程
- [ ] 集成用户信息页面
## 阶段四:测试(预计 8 小时)
### 4.1 单元测试(4 小时)
- [ ] 测试认证服务
- 注册测试
- 登录测试
- token 验证测试
- 密码重置测试
- [ ] 测试用户服务
- [ ] 测试权限服务
- [ ] 测试中间件
### 4.2 集成测试(2 小时)
- [ ] 测试认证流程
- [ ] 测试权限控制
- [ ] 测试 token 刷新
### 4.3 端到端测试(2 小时)
- [ ] 测试用户注册流程
- [ ] 测试登录流程
- [ ] 测试密码重置流程
- [ ] 测试权限控制
## 阶段五:部署(预计 2 小时)
### 5.1 部署准备(1 小时)
- [ ] 配置生产环境变量
- [ ] 准备 Docker 镜像
- [ ] 配置数据库
### 5.2 部署上线(1 小时)
- [ ] 部署后端服务
- [ ] 部署前端应用
- [ ] 配置域名和 SSL
- [ ] 验证功能
## 总计
- 预计总时间:36 小时
- 建议分配:4.5 个工作日
- 团队规模:2-3 人
## 依赖关系阶段一(设计) ↓ 阶段二(后端) ↓ 阶段三(前端)←→ 阶段四(测试) ↓ 阶段五(部署)
## 风险和注意事项
- [ ] 邮件服务需要提前配置
- [ ] 生产环境需要 HTTPS
- [ ] 考虑使用现成的认证库(如 Passport.js)
- [ ] 注意 GDPR 和隐私合规2. 代码重构计划
任务描述:
重构用户服务代码,提高可维护性和可测试性。
当前代码存在以下问题:
- 函数过长(超过 100 行)
- 职责不清晰
- 难以测试
- 缺少错误处理生成的计划:
markdown
# 用户服务重构计划
## 分析阶段(1 小时)
### 1.1 代码分析
- [ ] 分析当前 UserService 代码
- [ ] 识别职责(使用单一职责原则)
- [ ] 测量圈复杂度
- [ ] 识别代码重复
### 1.2 依赖分析
- [ ] 绘制依赖关系图
- [ ] 识别紧密耦合
- [ ] 找出可以提取的依赖
## 设计阶段(2 小时)
### 2.1 职责划分
- [ ] 定义新的模块结构
- UserRepository(数据访问)
- UserValidator(验证逻辑)
- UserMapper(数据转换)
- EmailService(邮件发送)
- PasswordService(密码处理)
### 2.2 接口设计
- [ ] 设计各模块接口
- [ ] 定义清晰的契约
## 实施阶段(6 小时)
### 3.1 提取验证逻辑(1.5 小时)
- [ ] 创建 UserValidator 类
- validateEmail()
- validatePassword()
- validateUserData()
- [ ] 编写单元测试
- [ ] 迁移验证逻辑
### 3.2 提取密码处理(1 小时)
- [ ] 创建 PasswordService
- hash()
- verify()
- generateResetToken()
- [ ] 编写单元测试
- [ ] 迁移密码逻辑
### 3.3 提取邮件服务(1 小时)
- [ ] 创建 EmailService
- sendVerificationEmail()
- sendPasswordResetEmail()
- [ ] 编写单元测试
- [ ] 迁移邮件逻辑
### 3.4 简化 UserService(1.5 小时)
- [ ] 重构 UserService 使用新服务
- [ ] 减少方法长度
- [ ] 提高可读性
### 3.5 添加错误处理(1 小时)
- [ ] 定义自定义异常
- UserNotFoundException
- InvalidPasswordException
- EmailAlreadyExistsException
- [ ] 添加异常处理
- [ ] 编写异常测试
## 测试阶段(3 小时)
### 4.1 单元测试
- [ ] 为每个模块编写测试
- [ ] 达到 90% 覆盖率
### 4.2 集成测试
- [ ] 测试服务间协作
- [ ] 测试端到端流程
### 4.3 回归测试
- [ ] 确保原有功能正常
- [ ] 对比重构前后行为
## 文档阶段(1 小时)
### 5.1 更新文档
- [ ] 更新 API 文档
- [ ] 添加架构说明
- [ ] 编写使用示例
## 总计
- 预计时间:13 小时
- 建议分配:1.5 个工作日
## 风险
- 可能引入新 bug
- 需要充分测试
- 考虑使用特性开关逐步发布3. 调试计划
任务描述:
生产环境报错:用户注册时偶尔会超时。
错误日志显示数据库连接池耗尽。生成的计划:
markdown
# 数据库连接池耗尽问题调试计划
## 紧急缓解(30 分钟)
### 1.1 立即措施
- [ ] 检查当前连接池配置
- [ ] 临时增加连接池大小
- [ ] 监控连接使用情况
- [ ] 设置告警
## 根本原因分析(2 小时)
### 2.1 数据库层面
- [ ] 检查数据库连接数
```sql
SELECT count(*) FROM pg_stat_activity;
```- [ ] 检查慢查询sql
SELECT query, mean_exec_time FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10; - [ ] 检查锁等待sql
SELECT * FROM pg_locks WHERE NOT granted;
2.2 应用层面
- [ ] 检查连接池配置
- 最大连接数
- 空闲超时
- 连接泄漏
- [ ] 添加连接池监控
- 记录连接创建/释放
- 记录连接等待时间
- [ ] 分析用户注册代码
- 检查是否有事务未关闭
- 检查是否有连接未释放
2.3 负载层面
- [ ] 分析请求量
- 注册请求频率
- 峰值时间
- [ ] 检查是否有异常流量
- 恶意注册
- 批量操作
解决方案(4 小时)
3.1 短期解决方案(1.5 小时)
- [ ] 优化连接池配置javascript
pool: { max: 20, // 增加最大连接数 min: 5, // 保持最小连接 idle: 30000, // 空闲超时 30 秒 acquire: 60000, // 获取超时 60 秒 } - [ ] 添加连接释放保证javascript
// 使用 finally 确保连接释放 try { // 执行操作 } finally { await connection.release(); } - [ ] 添加注册限流javascript
// 限制单个 IP 每分钟最多注册 5 次 rateLimit({ windowMs: 60 * 1000, max: 5, });
3.2 长期解决方案(2.5 小时)
- [ ] 实现连接池监控告警
- [ ] 优化数据库查询
- [ ] 实现读写分离
- [ ] 考虑连接池代理(如 PgBouncer)
验证阶段(2 小时)
4.1 测试
- [ ] 压力测试
- [ ] 并发注册测试
- [ ] 长时间运行测试
4.2 监控
- [ ] 观察连接池指标
- 活跃连接数
- 等待请求数
- 连接创建/释放速率
- [ ] 观察数据库指标
- 慢查询数量
- 锁等待时间
预防措施(1 小时)
5.1 代码审查清单
- [ ] 确保所有数据库连接都正确释放
- [ ] 检查事务边界是否正确
- [ ] 避免长事务
5.2 监控指标
- [ ] 连接池使用率告警(>80%)
- [ ] 慢查询告警(>1秒)
- [ ] 数据库连接数告警
总计
- 预计时间:9.5 小时
- 紧急缓解:30 分钟
## 最佳实践
### 1. 明确任务目标
使用清晰、具体的任务描述:
❌ 不好:改进代码质量
✅ 好:重构订单处理模块,提高代码可维护性:
- 减少方法平均长度到 50 行以内
- 提高测试覆盖率到 90%
- 移除代码重复
### 2. 提供上下文信息
提供相关的代码、文档和约束:重构订单处理模块
上下文:
- 当前代码:OrderService.java(已提供)
- 使用框架:Spring Boot 3.0
- 数据库:MySQL 8.0
- 团队规范:遵循 SOLID 原则
- 时间限制:2 天内完成
### 3. 按优先级排序
将任务按优先级排序,先完成重要的:
```markdown
## 优先级 P0(必须完成)
- [ ] 核心功能实现
## 优先级 P1(重要)
- [ ] 错误处理
- [ ] 单元测试
## 优先级 P2(可选)
- [ ] 性能优化
- [ ] 文档完善4. 设置检查点
在关键点设置检查点,验证进度:
markdown
## 检查点
### 检查点 1:设计完成(第 1 天结束)
- [ ] 完成架构设计
- [ ] 通过设计评审
### 检查点 2:核心功能完成(第 2 天中午)
- [ ] 核心功能可运行
- [ ] 通过冒烟测试
### 检查点 3:测试完成(第 2 天结束)
- [ ] 所有测试通过
- [ ] 代码审查通过