# 任务暂停功能实现计划 ## 1. 实现顺序 按照Task.md中的优先级顺序,我将按以下步骤实现任务暂停功能: ### 1.1 数据库模型扩展 (PAUSE-001) - 检查ReadingReflectionTaskBatch实体当前定义 - 添加isPaused和pausedAt字段 - 运行数据库迁移 ### 1.2 实现暂停/恢复API (PAUSE-002) - 在task.router.ts中添加pauseBatch和resumeBatch方法 - 实现暂停和恢复任务的业务逻辑 ### 1.3 任务执行器改进 (PAUSE-003) - 在TaskExecutor中添加任务状态检查 - 实现任务执行的中断和恢复机制 - 确保任务执行过程中能响应暂停命令 ### 1.4 前端暂停按钮功能 (PAUSE-004) - 为暂停按钮添加点击事件处理 - 实现暂停/恢复状态的切换逻辑 - 调用后端API实现暂停和恢复操作 ### 1.5 暂停状态视觉反馈 (PAUSE-005) - 添加暂停状态的视觉提示 - 实现按钮样式和文字的动态变化 - 显示暂停原因和预计恢复时间 ### 1.6 任务队列管理 (PAUSE-006) - 实现任务队列管理系统 - 支持暂停/恢复整个队列 - 处理队列中任务的状态管理 ### 1.7 持久化暂停状态 (PAUSE-007) - 确保暂停状态能持久化保存 - 应用重启后恢复暂停状态 - 处理断电等异常情况 ## 2. 技术实现细节 ### 2.1 数据库模型扩展 ```typescript // src/main/db/entities/ReadingReflectionTaskBatch.ts @Entity('reading_reflection_task_batches') export class ReadingReflectionTaskBatch { // 现有字段... @Column({ type: 'boolean', default: false }) isPaused!: boolean @CreateDateColumn({ type: 'datetime', nullable: true }) pausedAt!: Date | null } ``` ### 2.2 实现暂停/恢复API ```typescript // src/rpc/router/task.router.ts export const taskRouter = router({ // 现有方法... /** * 暂停任务批次 */ pauseBatch: publicProcedure .input(z.object({ batchId: z.string() })) .mutation(async ({ input }) => { // 暂停任务逻辑 }), /** * 恢复任务批次 */ resumeBatch: publicProcedure .input(z.object({ batchId: z.string() })) .mutation(async ({ input }) => { // 恢复任务逻辑 }) }) ``` ### 2.3 任务执行器改进 ```typescript // src/main/manager/taskExecutor.ts export class TaskExecutor { // 现有方法... private async checkPauseStatus(taskId: string): Promise { // 检查任务是否被暂停 } private async executeSubTask(taskId: string, subTaskId: string, task: any, index: number, total: number): Promise { // 执行子任务,定期检查暂停状态 } } ``` ### 2.4 前端暂停按钮功能 ```vue ``` ## 3. 预期效果 1. **暂停功能**:用户可以通过暂停按钮暂停正在执行的任务 2. **恢复功能**:用户可以恢复被暂停的任务 3. **状态反馈**:界面会显示当前任务的暂停状态 4. **持久化**:任务暂停状态会被持久化保存 5. **队列管理**:支持暂停/恢复整个任务队列 ## 4. 测试计划 1. **功能测试**: - 验证暂停按钮能正常触发暂停操作 - 验证恢复按钮能正常恢复任务 - 验证暂停状态能正确显示 2. **边界测试**: - 测试同时暂停多个任务 - 测试应用重启后暂停状态是否保持 - 测试暂停状态下的任务进度更新 3. **性能测试**: - 测试大量任务时的暂停/恢复响应时间 - 验证暂停状态下的系统资源占用 ## 5. 风险评估 1. **任务中断风险**:任务执行过程中中断可能导致数据不一致 2. **性能影响**:频繁检查暂停状态可能影响性能 3. **并发冲突**:多个任务同时暂停/恢复可能导致冲突 4. **持久化失败**:断电等异常情况可能导致暂停状态丢失 ## 6. 解决方案 1. **任务中断处理**:实现事务机制,确保任务中断时数据一致性 2. **性能优化**:合理设置暂停状态检查频率,避免频繁查询数据库 3. **并发控制**:使用锁机制确保任务状态更新的原子性 4. **持久化保障**:使用事务确保暂停状态能可靠保存 ## 7. 代码规范 - 遵循项目现有的代码风格和命名规范 - 确保类型安全,使用TypeScript严格模式 - 添加必要的注释和文档 - 编写单元测试确保功能正确性 ## 8. 交付标准 1. 所有暂停功能按优先级实现完成 2. 代码通过TypeScript类型检查 3. 没有语法错误和运行时错误 4. 功能测试通过 5. 代码符合项目的质量标准 ## 9. 后续优化 1. 添加任务暂停的原因记录 2. 实现自动恢复功能 3. 支持基于时间的暂停计划 4. 添加暂停状态的日志记录 5. 优化暂停状态的查询性能 现在我将按照这个计划开始实现任务暂停功能,首先检查数据库模型。