Files
iofficeai--aionui/docs/prds/cron/cron-entry-optimization.md
2026-07-13 13:20:22 +08:00

98 lines
6.0 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.
# 定时任务模块体验优化 (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 |