Files
read_book/.trae/documents/plan_20260124_172544.md
寒寒 455dd1f4cd feat(desktop): 实现一些功能
1. 实现任务暂停功能

2. 实现页面的国际化功能

3.优化项目的结构以及BUG

4. 优化系统架构

5. 实现一大堆的功能
2026-01-25 03:30:23 +08:00

183 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务暂停功能实现计划
## 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<boolean> {
// 检查任务是否被暂停
}
private async executeSubTask(taskId: string, subTaskId: string, task: any, index: number, total: number): Promise<void> {
// 执行子任务,定期检查暂停状态
}
}
```
### 2.4 前端暂停按钮功能
```vue
<!-- src/renderer/src/pages/task/index.vue -->
<template>
<a-button
size="mini"
type="primary"
@click="handlePauseResume"
>
<template #icon>
<pause v-if="!isPaused" theme="outline" size="12" />
<play v-else theme="outline" size="12" />
</template>
{{ isPaused ? '恢复队列' : '暂停队列' }}
</a-button>
</template>
```
## 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. 优化暂停状态的查询性能
现在我将按照这个计划开始实现任务暂停功能,首先检查数据库模型。