feat(desktop): 实现一些功能

1. 实现任务暂停功能

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

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

4. 优化系统架构

5. 实现一大堆的功能
This commit is contained in:
2026-01-25 03:30:23 +08:00
parent 3f7347427e
commit 455dd1f4cd
88 changed files with 13451 additions and 581 deletions

View File

@@ -0,0 +1,183 @@
# 任务暂停功能实现计划
## 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. 优化暂停状态的查询性能
现在我将按照这个计划开始实现任务暂停功能,首先检查数据库模型。