98 lines
6.0 KiB
Markdown
98 lines
6.0 KiB
Markdown
# 定时任务模块体验优化 (F-CRON-OPT)
|
||
|
||
> 本文档覆盖定时任务(Scheduled Tasks / Cron)模块的两项体验优化:对话头部入口的「空态收敛」,以及任务列表页「创建入口」的双路径化(手动创建 / 对话创建)。
|
||
> 面向新读者:定时任务是 AionUi 中让助手按计划自动执行的能力,用户可在「定时任务」列表页集中管理,也可在对话内由助手协助创建。
|
||
|
||
---
|
||
|
||
## 背景与名词
|
||
|
||
- **对话头部入口**:每个对话页面左上角的一个时钟图标(组件 `CronJobManager`),用于提示当前对话是否关联了定时任务,并提供跳转。
|
||
- **定时任务列表页**:路由 `#/scheduled`,集中展示用户的所有定时任务,右上角有「创建」按钮。
|
||
- **创建弹窗**:列表页点击创建后弹出的表单(`CreateTaskDialog`),用户在其中手动配置频率、执行模式、助手等。
|
||
- **首页**:路由 `#/guid`,新建对话的起始页,中部有输入框(sendbox)。
|
||
- **助手记忆**:首页会自动恢复用户上一次选择的助手(assistant)及其相关配置,这是已有行为。
|
||
|
||
---
|
||
|
||
## (F-CRON-OPT-01) 对话头部入口空态收敛
|
||
|
||
**想解决的问题**
|
||
|
||
当前对话页面左上角,即便用户从未创建过任何定时任务,只要该对话加载了 cron 技能,就会显示一个**灰色时钟图标**,hover 弹出「立即创建」气泡。这个灰色图标对绝大多数没有定时任务诉求的用户是干扰——它占据标题栏视觉位置,却不对应任何已存在的对象。
|
||
|
||
**期望行为**
|
||
|
||
- **无关联定时任务时**:不显示任何图标(无论该对话是否加载了 cron 技能)。
|
||
- **有关联定时任务时**:保持现状——显示彩色状态图标(绿色=运行中 / 橙色=已暂停 / 红色=出错),点击跳转到该任务的详情页。
|
||
|
||
**改动前后对比**
|
||
|
||
| 场景 | 改动前 | 改动后 |
|
||
| --------------------- | -------------------------------- | -------------------------------- |
|
||
| 无任务 + 无 cron 技能 | 不显示 | 不显示 |
|
||
| 无任务 + 有 cron 技能 | 灰色图标 + hover「立即创建」气泡 | **不显示** |
|
||
| 有任务 | 彩色状态图标,点击跳详情 | 彩色状态图标,点击跳详情(不变) |
|
||
|
||
**验收标准**
|
||
|
||
- [ ] 一个全新对话(未关联任务)的标题栏左上角不出现时钟图标
|
||
- [ ] 当对话关联的任务被创建后,标题栏出现对应状态色的图标
|
||
- [ ] 点击该图标跳转到 `#/scheduled/:job_id` 详情页
|
||
- [ ] 任务暂停 / 出错时图标颜色相应变化
|
||
- [ ] 子对话(由定时任务派生)仍能通过 `cron_job_id` 正确显示来源任务图标
|
||
|
||
---
|
||
|
||
## (F-CRON-OPT-02) 列表页创建入口双路径化
|
||
|
||
**想解决的问题**
|
||
|
||
定时任务的配置项较多(频率、cron 表达式、执行模式、助手、模型、工作空间),手动填表对新用户有门槛。AionUi 已具备「让助手在对话中帮你创建定时任务」的能力,但列表页的「创建」按钮只通向手动弹窗,用户感知不到对话创建这条更轻量的路径。
|
||
|
||
**期望行为**
|
||
|
||
列表页右上角的单一「创建」按钮,改为一个**分体下拉按钮(split button)**:
|
||
|
||
- **主按钮区域**:默认动作 = **对话创建(Create via chat)**。点击后跳转到首页,并自动在输入框填入一段定时任务创建提示词,用户可直接发送或修改后发送,由助手完成创建。
|
||
- **下拉箭头区域**:展开两个选项
|
||
- **Create via chat**(对话创建):同主按钮动作。
|
||
- **Create manually**(手动创建):保持现状,弹出 `CreateTaskDialog` 表单。
|
||
|
||
**对话创建路径的细节**
|
||
|
||
- 跳转到首页后,输入框预填提示词,内容沿用现有的默认提示词文案(i18n key `cron.status.defaultPrompt`),不改动文案。
|
||
- **助手沿用首页既有逻辑**:本功能只负责填入提示词,不指定 / 不重置助手。首页默认恢复用户上一次选择的助手,符合「轻量引导、尊重用户上下文」的预期。
|
||
- 预填发生在首页挂载时:首页原本会在挂载时清空输入框草稿,新增逻辑为——若本次跳转携带了预填提示词,则填入提示词而非清空。
|
||
|
||
**验收标准**
|
||
|
||
- [ ] 列表页右上角显示分体下拉按钮,主区域文案为「对话创建」
|
||
- [ ] 点击主区域 → 跳转首页,输入框自动填入默认提示词
|
||
- [ ] 跳转后首页选中的助手与用户上一次使用的一致(未被强制重置)
|
||
- [ ] 展开下拉 → 显示「对话创建」「手动创建」两项
|
||
- [ ] 点击「手动创建」→ 弹出创建表单(与原「创建」按钮行为一致)
|
||
- [ ] 点击「对话创建」(下拉项)→ 与主区域动作一致
|
||
- [ ] 预填后,首页其他草稿状态(文件、工作空间)按既有规则处理,不被预填逻辑破坏
|
||
|
||
---
|
||
|
||
## 国际化
|
||
|
||
- 复用:`cron.status.defaultPrompt`(对话创建预填的提示词)。
|
||
- 新增:分体下拉两项的文案
|
||
- 「对话创建」label
|
||
- 「手动创建」label
|
||
- 覆盖语言:与 cron 模块现有 i18n 一致的全部语言。
|
||
|
||
---
|
||
|
||
## 影响范围(供技术参考)
|
||
|
||
| 模块 | 文件 | 改动性质 |
|
||
| -------------- | ------------------------------------------ | ------------------------------------ |
|
||
| 对话头部入口 | `pages/cron/components/CronJobManager.tsx` | 移除无任务时的灰色入口分支 |
|
||
| 列表页创建入口 | `pages/cron/ScheduledTasksPage/index.tsx` | 单按钮改分体下拉,新增 via chat 跳转 |
|
||
| 首页预填 | `pages/guid/GuidPage.tsx` | 挂载时按 location.state 预填提示词 |
|
||
| 文案 | cron 模块 i18n 资源 | 复用 1 + 新增 2 |
|