# 任务页面先列出这个人自己的工作，在列表旁边打开任务，创建的任务都有所属的地方

> 汇集多个地方任务的页面有 Mine 和 All；默认视图是按这个人和每个任务的关系分组的列表；可以选择任务，配一个浮动的工具栏；任务作为页面这一行的一列打开；New task 带一个频道字段；没有完成控件。

Source: https://raft-design.botiverse.build/zh/decisions/0045-the-tasks-page. Translated from https://raft-design.botiverse.build/decisions/0045-the-tasks-page.md; where the two differ, the English page is right.

## 背景
Raft Chat 原来的任务页面列出服务器里所有的频道任务：桌面端是按状态分栏的看板，手机上是按状态分组的列表，上面有三个筛选，任务详情在居中的对话框里。设计系统原来写的是这个页面没有创建按钮，因为任务属于一个地方；[决策 0042](https://raft-design.botiverse.build/zh/decisions/0042-tasks-as-a-to-do-list.md) 则在每个任务行和卡片的开头放了一个圆形的完成控件。

有了任务对话以后，大部分工作由 Agent 来做，人主要是把工作交出去、做决定、接受工作成果。打开这个页面的人会按这个顺序问：有没有什么在等我，我交出去的工作进展如何，其他人手上都有什么工作。状态对这几个问题都回答得不好：谁负责一个任务、它有没有推进，说明得更多。

Noel 在 2026-11-09 到 2026-11-10 期间，于 #wg-task-v2（消息列 8a7ae237）重新设计了这个页面，stdrc 在一个用 raft-ui 搭的、可点击的高保真设计稿（Artifact 4ijP1hMNwQm5MtV6dmVhkc，v16）上审阅了每一步；Noel 随后在 slock #13852 里把它做了出来，放在 task v2 功能开关后面。线上的任务面板已经有 New task 和 "3 / 12" 这样的计数，而设计系统没有写到它们。

## 决定
- 页面有两个标签页，Mine 和 All。Mine 是默认的，先列出指派给这个人的任务，然后是这个人发起的、由别人负责或没有人负责的任务。已经结束的任务不列出，但第二个分区保留最近一天内完成的任务。All 是一个平铺的列表。两者都不按状态分组。
- 列表是默认视图，桌面端和手机上都一样；按状态分栏的看板，按一下就能切过去。看板上只有 Closed 默认收起。一栏里的卡片按页面的排序排列，所以一栏是一个放置目标。
- 每个筛选（Channel、Status、Creator、Assignee）和排序在两个标签页里都能用。有筛选或搜索缩小列表时，计数写成 "3 / 12"。在手机上，筛选在一行里横向滚动。
- 行可以选择，选中的任务用选中消息时用的那个 SelectionToolbar 批量修改。悬停和按下时铺满整行，选择复选框在填充里面。
- 任务在页面这一行的一列里打开，列表就是这一行的对话，宽度、裁切、Expand 和 Esc 都和消息列一样。在手机上，它是推入页面。
- 页面有 New task，它的 Create task 会问是哪个频道。
- 页面上的行和卡片没有完成控件。

stdrc 在 2026-11-10 批准了这个设计（「按设计来」），并在当天同一个消息列里给出了关于页面这一行、任务那一列、Expand、换行和看板放置目标的规则。2026-11-09，stdrc 问为什么任务前面还有一个复选框，于是完成控件从这个页面的设计里去掉了。

## 影响
- 规则写在[任务](https://raft-design.botiverse.build/zh/patterns/tasks.md#a-page-of-tasks)、[Raft Chat — 任务](https://raft-design.botiverse.build/zh/products/raft-chat/tasks.md)、[响应式布局](https://raft-design.botiverse.build/zh/patterns/responsive.md#the-tasks-pages-row)、[拖放](https://raft-design.botiverse.build/zh/patterns/drag-and-drop.md#where-it-will-land)和任务组件的文档里。
- 任务详情有两种形式：从一个地方的视图（频道的 Tasks 分区、一条消息、一个引用）打开的居中对话框，以及任务页面上这一行的一列。频道的 Tasks 分区保留对话框：分区就在频道的对话旁边，而任务有自己的讨论，所以不是放在那段对话旁边读的。
- 决策 0042 的完成控件仍然是一个地方的视图里的规则。slock 和移动 App 都还没有把它做出来。
- 每个任务仍然属于一个地方：页面上的 Create task 没有频道就不能提交，页面也没有快速添加。
- 没有开启任务对话的服务器，保留以前的任务面板。
- 撤销这个决定：把状态分组放回列表，把看板恢复为桌面端的默认视图，页面上的任务改回用对话框打开。其余部分（Mine 和 All、筛选、选择）各自独立成立。

## 考虑过的其他方案
- **把页面分成三块：在等你的，你交出去的（在推进的、卡住的、你上次来过之后完成的），以及按人列出的每个人在做的。** stdrc 觉得这几块的名字和说明难读，最后一块也没什么用（2026-11-10）。两个标签页保留了前两个回答，其余的由筛选和排序给出。
- **给管理员的第二个标签页，列出没有负责人的任务和最久没有更新的任务。** stdrc 起初要求第二个标签页是管理员的视图（2026-11-10）。All 有了所有筛选和排序以后，把 Assignee 设为 Unassigned、按最久未更新排序，就能得到同样的列表，所以 All 对每个人都显示，和以前的页面一样。
- **桌面端默认用看板。** 看板按状态排列，而状态是人们来这里要看的信号里最弱的一个。
- **和别处一样，任务在居中的对话框里打开。** 这个页面没有自己的对话需要留在视野里，而对话框会挡住人们要回去找下一个任务的列表。一列能同时留住两者，用起来就像聊天里的消息列。
- **按设计系统原来的写法，不放创建按钮。** 以前的页面有创建按钮，stdrc 要求这个页面不丢掉它能做的任何事。Create task 里的 Channel 字段让每个任务都属于一个地方。
- **在选择复选框前面放圆形的完成控件。** 一行开头的两个框，一个圆一个方，看起来很像，作用却不同。

## 相关
- [任务](https://raft-design.botiverse.build/zh/patterns/tasks.md)
- [0042](https://raft-design.botiverse.build/zh/decisions/0042-tasks-as-a-to-do-list.md)
- [Raft Chat — 任务](https://raft-design.botiverse.build/zh/products/raft-chat/tasks.md)
