Files
zn-ai/Cron-Development-Plan.md
2026-04-11 23:17:54 +08:00

449 lines
13 KiB
Markdown
Raw 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.

# zn-ai 定时任务Cron功能开发计划
## 项目概述
基于ClawX项目的定时任务功能分析制定zn-ai项目的功能迁移开发计划。目标是在zn-ai项目中实现类似的定时任务管理功能保持核心功能一致性同时适配zn-ai的技术栈Vue 3 + Element Plus + Pinia + Tailwind CSS
## 核心目标
1. **实现定时任务管理**:创建、编辑、删除、启用/禁用定时任务
2. **支持调度配置**预设调度和自定义Cron表达式
3. **提供基础交付模式**:至少支持"仅应用内"模式
4. **集成现有架构**与zn-ai现有状态管理、API通信、国际化系统集成
5. **保持UI一致性**使用Element Plus和现有设计模式
## 技术约束
- **前端框架**Vue 3 Composition API
- **状态管理**Pinia
- **UI组件库**Element Plus + Tailwind CSS
- **国际化**Vue I18n
- **API通信**:现有`hostApiFetch` IPC机制
- **后端集成**:需评估现有任务调度能力,必要时实现简化版本
## 开发原则
1. **分阶段实施**:优先核心功能,逐步增强
2. **渐进式增强**:先实现基本功能,再添加高级特性
3. **代码复用**:尽可能复用现有组件和工具函数
4. **类型安全**使用TypeScript确保类型安全
5. **测试驱动**:关键功能编写单元测试
## 阶段一:基础架构与类型定义
### 目标
建立定时任务功能的基础架构包括类型定义、状态管理和API接口。
### 任务清单
#### 1.1 创建类型定义文件
- **文件**`src/lib/cron-types.ts`
- **内容**
- 复制并适配ClawX的`CronJob``CronJobCreateInput``CronJobDelivery`等核心类型
- 根据zn-ai需求调整类型定义如简化交付配置
- 添加必要的工具类型和类型守卫
- **依赖**:无
- **预估工时**2小时
#### 1.2 创建Pinia Store
- **文件**`src/store/cron.ts`
- **内容**
- 定义store状态`jobs``loading``error`
- 实现操作:`fetchJobs``createJob``updateJob``deleteJob``toggleJob``triggerJob`
- 使用现有`hostApiFetch`进行API调用
- 添加适当的错误处理和状态管理
- **依赖**`cron-types.ts``hostApiFetch`
- **预估工时**4小时
#### 1.3 创建API接口占位
- **文件**更新现有API服务或创建`src/lib/cron-api.ts`
- **内容**
- 定义API端点常量
- 创建API函数包装器如果现有`hostApiFetch`不足)
- 添加模拟数据用于开发测试
- **依赖**`hostApiFetch``cron-types.ts`
- **预估工时**3小时
#### 1.4 创建国际化文件
- **文件**`src/i18n/locales/{zh,en,ja}/cron.json`
- **内容**
- 翻译ClawX的cron.json文件
- 适配zn-ai的翻译键命名约定
- 确保所有UI文本都有翻译键
- **依赖**ClawX翻译文件
- **预估工时**2小时
#### 1.5 更新国际化配置
- **文件**`src/i18n/constants.ts``src/i18n/index.ts`
- **内容**
- 添加cron命名空间到`NAMESPACES`数组
- 确保翻译文件正确加载
- **依赖**:国际化文件
- **预估工时**1小时
### 交付成果
- 完整的类型定义系统
- 可工作的Pinia store带模拟数据
- 国际化支持
- 基础API接口层
### 阶段验收标准
- TypeScript编译无错误
- Store基本操作可通过模拟数据工作
- 国际化文件正确加载
- 代码符合项目代码规范
## 阶段二核心UI组件开发
### 目标
开发定时任务功能的核心用户界面组件。
### 任务清单
#### 2.1 创建主页面组件
- **文件**`src/pages/cron/index.vue`
- **内容**
- 页面布局和结构
- 集成统计卡片区域
- 任务列表展示区域
- 空状态处理
- 加载状态和错误显示
- 创建任务按钮
- **依赖**Cron store、国际化
- **预估工时**6小时
#### 2.2 创建任务卡片组件
- **文件**`src/pages/cron/components/CronJobCard.vue`
- **内容**
- 任务信息展示(名称、调度、消息预览)
- 状态指示器(启用/禁用)
- 操作按钮(运行、编辑、删除)
- 最后运行状态显示
- 下次运行时间显示
- 悬停和交互效果
- **依赖**Cron store、国际化、Element Plus组件
- **预估工时**5小时
#### 2.3 创建任务对话框组件
- **文件**`src/pages/cron/components/CronTaskDialog.vue`
- **内容**
- 表单布局和字段(名称、消息、调度、交付模式等)
- 预设调度选择器
- 自定义Cron表达式输入
- 表单验证和错误提示
- 调度预览(下一次运行时间)
- 提交和取消按钮
- **依赖**Element Plus表单组件、Cron store、国际化
- **预估工时**8小时
#### 2.4 创建统计卡片组件
- **文件**`src/pages/cron/components/CronStats.vue`(或复用现有模式)
- **内容**
- 总任务数卡片
- 活跃任务卡片
- 暂停任务卡片
- 失败任务卡片
- 响应式布局
- **依赖**Cron store、国际化、Tailwind CSS
- **预估工时**3小时
#### 2.5 创建工具函数
- **文件**`src/pages/cron/utils.ts`
- **内容**
- Cron表达式解析和格式化函数
- 下一次运行时间预估函数
- 时间格式化辅助函数
- 交付模式处理函数
- **依赖**`cron-types.ts`
- **预估工时**4小时
### 交付成果
- 完整的用户界面组件
- 响应式布局和设计
- 基本的用户交互
- 表单验证和反馈
### 阶段验收标准
- 所有组件可独立渲染
- 表单验证正常工作
- 响应式设计适配不同屏幕尺寸
- 与现有设计风格一致
## 阶段三:功能集成与数据绑定
### 目标
将UI组件与store和API集成实现完整的功能流程。
### 任务清单
#### 3.1 集成Store到主页面
- **内容**
- 连接主页面与Cron store
- 实现数据加载和状态管理
- 添加刷新功能
- 处理空状态和错误状态
- **依赖**:阶段一和二的成果
- **预估工时**3小时
#### 3.2 实现任务操作集成
- **内容**
- 连接任务卡片操作按钮到store方法
- 实现启用/禁用切换
- 实现立即触发功能
- 实现删除功能(带确认)
- **依赖**Cron store、Element Plus MessageBox
- **预估工时**4小时
#### 3.3 实现对话框表单提交
- **内容**
- 连接对话框表单到store创建/更新方法
- 实现表单数据验证
- 添加提交状态反馈
- 处理成功/失败场景
- **依赖**Cron store、Element Plus表单验证
- **预估工时**5小时
#### 3.4 实现调度预览功能
- **内容**
- 实时计算并显示下一次运行时间
- 支持预设调度和自定义Cron表达式
- 添加时间格式化
- **依赖**Cron工具函数
- **预估工时**3小时
#### 3.5 添加加载状态和反馈
- **内容**
- 全局加载状态管理
- 操作反馈(成功/错误toast
- 网络错误处理
- 数据缓存策略
- **依赖**Element Plus反馈组件、Cron store
- **预估工时**3小时
#### 3.6 集成路由和导航
- **文件**`src/router/index.ts`
- **内容**
- 添加定时任务页面路由
- 更新侧边栏菜单(如果需要)
- 添加路由守卫(如果需要)
- **依赖**:主页面组件
- **预估工时**2小时
### 交付成果
- 完整的功能流程
- 实时数据绑定
- 用户操作反馈
- 错误处理和恢复
### 阶段验收标准
- 可以完整执行创建、编辑、删除任务流程
- 所有操作有适当的反馈
- 数据实时同步
- 错误场景得到妥善处理
## 阶段四:测试、优化与完善
### 目标
确保功能质量,优化性能,添加高级特性。
### 任务清单
#### 4.1 编写单元测试
- **文件**`tests/unit/cron-store.test.ts``tests/unit/cron-utils.test.ts`
- **内容**
- Store逻辑单元测试
- 工具函数单元测试
- 组件逻辑单元测试
- **依赖**Vue Test Utils、Vitest
- **预估工时**6小时
#### 4.2 添加集成测试
- **文件**`tests/e2e/cron.spec.ts`
- **内容**
- 完整用户流程测试
- 表单验证测试
- 错误场景测试
- **依赖**Playwright或Cypress
- **预估工时**5小时
#### 4.3 性能优化
- **内容**
- 虚拟滚动(如果任务数量多)
- 数据缓存优化
- 减少不必要的重新渲染
- 代码分割和懒加载
- **预估工时**4小时
#### 4.4 可访问性改进
- **内容**
- 添加ARIA属性
- 键盘导航支持
- 屏幕阅读器优化
- 颜色对比度检查
- **预估工时**3小时
#### 4.5 高级功能增强
- **内容**
- 任务导入/导出功能
- 批量操作支持
- 任务执行历史查看
- 高级调度选项(时区支持等)
- **预估工时**8小时可选
#### 4.6 文档编写
- **内容**
- 组件API文档
- 用户使用指南
- 开发指南
- **预估工时**3小时
### 交付成果
- 完整的测试覆盖
- 优化后的性能
- 可访问性支持
- 可选的高级功能
### 阶段验收标准
- 关键路径测试覆盖率达到80%以上
- 性能指标符合要求
- 通过可访问性检查
- 代码质量通过审查
## 时间总览
| 阶段 | 任务数 | 预估工时 | 累计工时 |
|------|--------|----------|----------|
| 阶段一 | 5 | 12小时 | 12小时 |
| 阶段二 | 5 | 26小时 | 38小时 |
| 阶段三 | 6 | 20小时 | 58小时 |
| 阶段四 | 6 | 29小时 | 87小时 |
| **总计** | **22** | **87小时** | **87小时** |
*注阶段四的高级功能增强为可选如不包括则总工时为79小时*
## 风险与缓解措施
### 技术风险
#### 风险1后端调度引擎缺失
- **描述**zn-ai可能没有现成的任务调度引擎
- **影响**:核心功能无法实现
- **概率**:中
- **缓解措施**
1. 评估现有`electron/process/`目录中的任务执行能力
2. 实现简化版的Node.js调度器使用`node-cron``node-schedule`
3. 与Gateway功能解耦设计可插拔的后端接口
#### 风险2频道系统不兼容
- **描述**zn-ai的频道系统与ClawX的频道系统完全不同
- **影响**:交付功能无法直接迁移
- **概率**:高
- **缓解措施**
1. 阶段一评估现有频道系统能力
2. 先实现"仅应用内"模式
3. 设计适配器层,未来集成现有频道系统
4. 简化交付配置,仅支持基本功能
#### 风险3Cron表达式复杂性
- **描述**Cron表达式解析和验证复杂
- **影响**:用户输入错误导致任务不执行
- **概率**:低
- **缓解措施**
1. 使用成熟的Cron解析库`cron-parser`
2. 提供预设调度选项,减少用户直接输入
3. 添加实时验证和预览
### 资源风险
#### 风险1开发时间不足
- **描述**:预估工时可能低估
- **影响**:项目延期
- **概率**:中
- **缓解措施**
1. 优先实现核心功能(阶段一至三)
2. 阶段四作为后续迭代
3. 定期进度评估和调整
#### 风险2技能匹配问题
- **描述**开发人员对Vue 3或Element Plus不熟悉
- **影响**:开发效率低下
- **概率**:低
- **缓解措施**
1. 提供代码示例和参考实现
2. 复用现有组件模式
3. 代码审查和结对编程
## 成功标准
### 功能成功标准
1. 用户可以创建、编辑、删除定时任务
2. 任务可以按预定调度执行
3. 用户界面直观易用
4. 系统稳定可靠,错误处理得当
### 技术成功标准
1. 代码质量高,符合项目规范
2. 测试覆盖关键功能路径
3. 性能满足要求
4. 可维护性和可扩展性好
### 业务成功标准
1. 功能满足用户需求
2. 用户体验良好
3. 与现有系统集成顺畅
4. 为未来扩展奠定基础
## 下一步行动
1. **需求确认**:与相关方确认功能范围和优先级
2. **技术评估**:详细评估后端调度能力
3. **环境准备**:设置开发环境和测试数据
4. **开始实施**:按照阶段一任务开始开发
## 附录
### A. 文件结构规划
```
src/
├── lib/
│ ├── cron-types.ts # 类型定义
│ └── cron-api.ts # API接口可选
├── store/
│ └── cron.ts # Pinia store
├── pages/
│ └── cron/
│ ├── components/
│ │ ├── CronJobCard.vue
│ │ ├── CronTaskDialog.vue
│ │ └── CronStats.vue
│ ├── utils.ts # 工具函数
│ └── index.vue # 主页面
└── i18n/
└── locales/
├── zh/
│ └── cron.json
├── en/
│ └── cron.json
└── ja/
└── cron.json
```
### B. 依赖库评估
1. **Cron解析**`cron-parser`成熟、稳定、TypeScript支持
2. **时间处理**使用原生Date对象或`day.js`(如果项目已使用)
3. **UI组件**Element Plus项目已使用
4. **状态管理**Pinia项目已使用
### C. 与现有系统集成点
1. **用户认证**:使用现有用户会话
2. **API通信**:使用现有`hostApiFetch`机制
3. **错误处理**:集成现有错误处理系统
4. **主题系统**:支持现有明暗主题
5. **路由系统**:集成现有路由配置
---
*本计划将根据实际情况进行迭代更新。建议每阶段结束后进行回顾和调整。*