Task Center previously separated task approvals from their tasks and showed an empty approval section. Associated approvals now appear with allow-once and deny actions inside task cards, and those tasks appear under Active. Only unassociated approvals retain a separate section; no approval section or badge is shown when there are no pending requests. Release note: Review and handle pending approvals directly in their Task Center cards. Tasks awaiting approval appear under Active, while requests without a matching task remain separately accessible.
151 lines
7.6 KiB
Markdown
151 lines
7.6 KiB
Markdown
# Task Center PRD
|
||
|
||
## 文档信息
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| 状态 | Scheduled Task 与项目范围跟随已实现;Goal/Event Task 与完整操作待实施 |
|
||
| 版本 | 0.4 |
|
||
| 日期 | 2026-09-10 |
|
||
| 依赖 | [Task 与 Job 统一领域模型](./task-and-job-model.md) |
|
||
| 界面归属 | [通用助手工作栏与执行空间](../assistant-workbar/prd.md) |
|
||
|
||
## 1. 产品定义
|
||
|
||
Task Center 是工作栏中的单实例 Task 索引,默认跟随当前项目。它不是 Automation Center,
|
||
也不复制 Conversation 内容。点击条目打开其关联 Conversation,并定位或展开对应 Task。
|
||
|
||
每个 Task 只关联一条 Conversation;一条 Conversation 可以关联零个、一个或多个 Task。
|
||
Conversation 不因为关联 Task 而改变对象类型。
|
||
|
||
“单实例”和“项目范围”是两个独立属性:应用内只有一个 Task Center Tab,但该 Tab 默认展示
|
||
当前项目的 Task。用户可以在同一 Tab 内切换到“所有项目”,不能为每个项目创建
|
||
独立 Task Center 实例。
|
||
|
||
## 2. 收录边界
|
||
|
||
收录:
|
||
|
||
- 用户明确创建或确认的 Task。
|
||
- Scheduled Task、Event Task 和 Goal Task。
|
||
- 未来由用户确认创建的其他顶层 Task。
|
||
|
||
不收录:
|
||
|
||
- 没有显式 Task 关联的普通 Conversation。
|
||
- 普通模型请求或工具调用产生的内部执行记录。
|
||
- Job、Subjob、Run、工具步骤或 Subagent。
|
||
- Smart Heartbeat 配置、报告和建议。
|
||
- 仅用于审计的活动记录。
|
||
|
||
当前产品 UI 的对象层级止于 Task。Task Center、左侧会话列表和 Conversation 任务区都不显示
|
||
Job/Subjob/Run 树、独立详情或路由。
|
||
|
||
## 3. 列表信息
|
||
|
||
每条 Task 至少显示:
|
||
|
||
- 名称和所属项目;无项目时标注“未绑定项目”。
|
||
- 关联 Conversation 标题。
|
||
- Task 类型和触发来源。
|
||
- Ask / Execute 模式。
|
||
- 当前聚合状态。
|
||
- 最近一次面向用户的进展。
|
||
- 最近活动时间。
|
||
- 等待审批、失败或需要关注状态。
|
||
- 下次计划时间(如适用)。
|
||
|
||
Task 行只显示聚合后的用户状态,不要求用户理解内部 Job/Run。
|
||
|
||
## 4. 范围
|
||
|
||
范围控件提供:
|
||
|
||
- `当前项目`:默认值,跟随活动项目变化,只显示 `projectId` 匹配的 Task。
|
||
- `所有项目`:显示当前用户可见的项目 Task 和没有 `projectId` 的历史 Task,后者标注“未绑定项目”。
|
||
|
||
没有活动项目时,“当前项目”显示明确空状态,并允许切换到“所有项目”;系统不
|
||
自动改变用户已经选择的范围。范围模式作为工作栏公开偏好持久化,但“当前项目”模式不保存
|
||
具体项目 ID;重启后继续跟随届时的活动项目。旧布局保存的 `global` 范围在 UI 恢复时映射为
|
||
`all-projects`,后续保存使用新值;不修改任务数据或后端项目绑定规则。
|
||
|
||
## 5. 交互
|
||
|
||
- 点击条目打开关联 Conversation,并定位到该 Task。
|
||
- 状态筛选仅保留进行中、暂停、已结束,默认选择进行中。
|
||
- 进行中包含 `idle`、`queued`、`running`、`waiting_approval`、`failed` 和 `interrupted`;
|
||
暂停对应 `paused`,已结束包含 `completed` 和 `cancelled`。分类只影响列表筛选,
|
||
不改变任务状态语义;任务行保留具体状态、错误信息和原有操作。
|
||
- 关联当前范围内顶层任务的审批直接显示在任务卡内,可拒绝或仅此次允许;有待审批的任务
|
||
归入“进行中”,审批随任务卡参与状态筛选,不再重复显示独立审批分类或区域。
|
||
- 普通会话或无法关联到当前范围内任务的审批保留独立处理区域,不受任务状态筛选影响;
|
||
该区域仅在存在此类审批时显示。没有审批时不显示审批标题、空提示或徽标。
|
||
- 审批徽标统计当前项目范围内全部待审批请求,不受状态筛选影响。
|
||
- 支持立即运行、暂停、恢复、取消、编辑和删除。
|
||
- 后台变化更新状态和徽标,不自动抢占当前页面。
|
||
- 立即运行、重试和恢复在 UI 上都是 Task 操作,内部 Job/Run 不单独显示。
|
||
- 完整消息留在 Conversation;工具、审批和错误可以在活动或 Runtime 中按 Task 查看;
|
||
独立交付物在成果中查看。
|
||
|
||
## 6. 左侧 Conversation Task 列表
|
||
|
||
左侧最近会话列表承担轻量 Task 发现,不替代 Task Center:
|
||
|
||
```text
|
||
▾ 产品发布讨论 10:24
|
||
|
||
每周进度总结 每周 · Execute · 等待中 ●
|
||
发布前检查 单次 · Execute ✓
|
||
```
|
||
|
||
- 无 Task 的 Conversation 保持现有单行样式。
|
||
- 有 Task 时在行最左侧显示独立展开按钮;父会话行不重复显示任务标签或数量。
|
||
- 更新时间默认靠近行右侧,更多操作按钮不常驻占位;悬停会话行时,按钮替换右侧时间显示。
|
||
键盘焦点进入会话行或操作菜单展开时,按钮仍保持可见。会话标题溢出时保持右侧区域固定,
|
||
并在自身裁切区域内横向滑动展示完整名称。未溢出标题不滑动,减少动态效果偏好下使用完整
|
||
标题提示而不产生位移。
|
||
- 展开后每个 Task 子项左侧显示名称,右侧显示本地化的模式、计划和状态标记,与父会话
|
||
更新时间对齐;已完成使用带勾成功点并将文案保留给辅助技术。列表不显示 Job、Subjob、
|
||
Run 或工具步骤。
|
||
- 点击 Conversation 标题打开聊天;点击 Task 打开同一 Conversation 并定位该 Task。
|
||
- 新建 Task 后首次自动展开;用户手动折叠后保持选择。
|
||
- 后台状态变化不强制展开;Task 状态持续显示在展开后的子项和 Task Center 中。
|
||
- 默认最多显示 3 个 Task;“查看全部 N 个任务”打开该 Conversation 的完整任务区。
|
||
|
||
## 7. Conversation 任务区
|
||
|
||
包含 Task 的 Conversation 顶部显示可折叠任务区:
|
||
|
||
```text
|
||
本会话有 2 个任务
|
||
[每周进度总结] [发布前检查] [管理任务]
|
||
```
|
||
|
||
选择 Task 后显示名称、模式、聚合状态、计划、下次执行、最近结果和 Task 级操作。工具、审批、
|
||
错误和成果通过 Task 关联显示,但不暴露 Job/Run 层级。
|
||
|
||
模式来源遵循[Scheduled Task 的执行时配置](./scheduled-task-prd.md#62-执行时配置):
|
||
未运行计划跟随会话当前有效模式,已执行 Task 保留实际模式;计划旧值不得覆盖展示。
|
||
|
||
## 8. 删除关系
|
||
|
||
- 删除 Schedule 只停止后续触发,不删除 Task、Conversation 或历史。
|
||
- 删除 Task 停止其计划并移除关联,默认保留 Conversation 和既有消息。
|
||
- 删除最后一个 Task 后,左侧 Conversation 的展开按钮消失。
|
||
- 删除 Conversation 前必须显示关联 Task 数量,并先停止或结算活动执行。
|
||
|
||
## 9. 验收标准
|
||
|
||
- [x] Task Center 只展示产品级 Task。
|
||
- [x] 一条 Conversation 可以关联并展开多个 Task。
|
||
- [x] 点击 Task 打开正确 Conversation 并定位到对应 Task。
|
||
- [x] 左侧会话列表通过独立展开按钮显示带任务图标和本地化摘要的 Task 子项。
|
||
- [x] 当前 UI 不显示 Job/Subjob/Run 树或独立页面。
|
||
- [x] Scheduled Task 显示下次时间,但每次触发不新增 Task 条目。
|
||
- [x] 普通模型请求和工具调用不会误显示为 Task。
|
||
- [ ] 删除 Task 默认保留 Conversation 和既有消息。
|
||
- [x] Smart Heartbeat 不进入 Task Center。
|
||
- [x] Task Center 默认只显示当前项目的 Task,切换项目后在同一 Tab 更新列表。
|
||
- [x] 仅提供“当前项目”和“所有项目”;后者保留无项目 Task,并标注“未绑定项目”。
|
||
- [x] 范围切换不创建第二个 Task Center Tab;任务中心保持默认存在且不可关闭。
|