团队在任务看板、列表和日历之间切换查看同一批任务时,筛选条件丢失、分组被打乱、位置跳回默认,是常见的体验断点。解决思路是把筛选条件、分组字段与排序、当前定位抽成一份与视图无关的“视图上下文”,由统一切换入口携带和还原。本文按方案设计、落地步骤、角色分工、场景走查和验收清单展开,适用于自研或配置工作项视图的团队;ONES 等平台可作为承载工作项视图的示例方向,具体支持范围需按实际版本核验。
要点总览(TL;DR)
- 把筛选条件、分组字段与排序、当前定位抽成一份与视图无关的视图上下文,由统一切换入口读取和写回,是跨看板、列表、日历保留筛选与分组的关键。
- 筛选与分组在切换时原样传递,定位按视图换算:看板落到列与卡片,列表落到行,日历落到日期格,无日期任务单独归集。
- 落地按五步推进:定义筛选字段与取值口径、确定分组与排序、定义定位标识与换算规则、在切换入口统一序列化与还原、设置空结果与失效定位的降级提示。
- 产品负责人定口径、研发做传递与换算、团队负责人确认使用习惯、测试覆盖边界场景,字段字典和换算规则是共同交接基准。
- 验收以筛选一致、分组排序一致、定位可映射、空结果与失效定位有提示、刷新后可恢复为阻断项,不满足即视为未完成。
核心做法:把筛选、分组和定位抽成视图上下文
跨视图切换能否保留筛选与分组,取决于系统是否把“看什么”和“怎么看”分开管理。筛选条件、分组字段与排序属于“看什么”,在三种视图间应当原样传递;当前定位属于“怎么看”,需要按视图各自换算。把这两类信息统一收进视图上下文,切换入口只做一次读取和写回,就能避免每个视图各自维护一套状态导致口径漂移。
视图上下文建议包含三组字段,字段清单如下:
| 组成部分 | 字段示例 | 切换时的处理规则 |
|---|---|---|
| 筛选条件 | 状态、负责人、标签、迭代/版本、日期范围、关键字;每个条件含字段、运算符、取值 | 原样传递,三种视图使用同一份条件集合与同一取值口径 |
| 分组字段与排序 | 分组字段(如状态、负责人、优先级)、组内排序字段与方向 | 原样传递;视图只决定呈现形式,不改变分组口径 |
| 当前定位 | 工作项ID、日期、列键(看板列标识) | 按视图换算:看板落到列与卡片,列表落到行,日历落到日期格 |
传递规则有三条。第一,筛选与分组在切换时不做二次解释,直接沿用上下文中的值,避免某个视图默认追加“仅显示未完成”之类的隐式条件。第二,定位按视图换算:从列表切到看板时,用工作项ID找到其所在列与卡片;从看板切到日历,用该工作项的截止日期落到对应日期格;没有日期的工作项归入单独的“无日期”区域。第三,切换入口统一读取和写回上下文,任何视图内的筛选或分组调整都要回写到同一份上下文,而不是只存在当前视图的局部状态里。
无法映射时需要降级而不是静默重置。常见情形包括:定位对象已关闭、已改期、被移出当前筛选范围,或日历视图缺少对应日期。此时应落到最接近的可见位置,例如列表定位到原工作项相邻行、日历定位到其新截止日期或所在周,并给出简短提示说明“原定位对象已变更,已定位到最近位置”。降级规则要写进上下文规范,作为切换逻辑的一部分实现。
操作步骤:从定义字段到接入切换入口
落地可以按五步推进,每步都有明确输入、动作、输出和完成标志,便于研发与业务侧对齐进度。
第一步:定义筛选字段与取值口径
输入是团队日常跟踪任务时实际使用的筛选维度,通常包括状态、负责人、标签、迭代或版本、日期范围。动作是逐项确认字段名称、可选运算符和取值来源,例如“负责人=我”取当前登录人,“日期范围”明确按截止日期还是创建日期。输出是一份筛选字段字典,标注每个字段的取值口径和默认值。完成标志是:任意两个视图对同一筛选条件的解释一致,且不存在某视图私自追加的隐藏条件。
第二步:确定分组字段与排序规则
输入是第一步的字段字典和团队查看习惯。动作是选定分组字段(如按状态分组)和组内排序规则(如按优先级降序、同优先级按截止日期升序),并约定各视图的呈现方式:看板以列表达分组,列表以分组标题加行表达,日历以日期格为主、分组作为格内排序或颜色标识。输出是分组与排序规范。完成标志是:同一上下文在三种视图中分组数量、组名和组内顺序一致。
第三步:定义定位标识与换算规则
输入是工作项数据模型和视图结构。动作是确定定位标识的优先级:优先用工作项ID,其次用日期,再次用列键;并写出换算表,说明列表行、看板卡片、日历日期格之间如何互相推导。输出是定位换算规则文档。完成标志是:给定一个工作项ID,能推导出它在三种视图中的目标位置;给定一个日期,能推导出日历格与对应任务集合。
第四步:在切换入口统一序列化与还原上下文
输入是前三步的字段字典、分组规范和换算规则。动作是在视图切换入口实现统一的上下文序列化(把当前筛选、分组、定位写成一份可传递的数据)与还原(目标视图读取后重建自身状态),并确保视图内的筛选调整回写同一份上下文。输出是切换入口的上下文读写逻辑。完成标志是:从任一视图切到另一视图,筛选与分组不变,定位按规则落到目标位置;在视图内修改筛选后切走再切回,修改仍然生效。
第五步:设置无匹配结果时的降级与提示
输入是第四步的切换逻辑和已知的失效场景清单。动作是为空结果、定位对象关闭、定位对象改期、日期缺失分别定义降级目标与提示文案,提示要说明发生了什么以及用户可执行的下一步。输出是降级规则与提示文案表。完成标志是:上述每种场景都能复现出“落到最近可见位置并出现提示”的行为,且不会静默跳回默认视图。
角色分工与各环节交付物
这套方案涉及口径定义、实现和验收三类工作,角色边界清晰可以减少返工。产品侧负责“口径是什么”,研发负责“怎么传递和换算”,团队负责人确认“是否符合使用习惯”,测试负责“边界是否兜住”。
| 角色 | 主要职责 | 交付物 | 交接点 |
|---|---|---|---|
| 产品/需求负责人 | 定义筛选字段、取值口径、分组字段与排序,明确优先级和默认值 | 筛选字段字典、分组与排序规范 | 交付给研发作为实现依据,交付给测试作为用例来源 |
| 研发 | 实现上下文序列化与还原、视图间定位换算、降级与提示逻辑 | 切换入口逻辑、定位换算规则文档、降级规则实现 | 提测时附带换算规则与已知限制说明 |
| 团队负责人或项目管理员 | 确认分组口径与团队日常查看习惯一致,确认默认视图与默认筛选 | 口径确认意见、默认配置清单 | 在第一步和第二步完成后确认,避免上线后频繁调整 |
| 测试 | 覆盖跨视图切换、空结果、定位失效、刷新恢复等场景 | 跨视图切换测试用例与验收记录 | 验收结论作为上线前置条件 |
交接时建议以字段字典和换算规则为共同基准,避免口头约定。团队负责人的确认应发生在实现之前,测试用例应在实现阶段同步编写,这样降级场景不会等到验收才被发现。
示例:一次跨视图切换的完整走查
以下为演示情景,用于说明上下文在三种视图间的延续方式。设定筛选条件为“本迭代 + 负责人=我 + 未完成”,分组字段为状态,组内按优先级降序排列。
在看板视图,用户看到按状态分列的任务,自己负责的未完成任务分布在“进行中”和“待处理”列,当前定位在“进行中”列的一张卡片上。此时视图上下文记录:筛选三条件、分组=状态、排序=优先级降序、定位=该工作项ID。
切换到列表视图,系统读取同一份上下文,筛选与分组原样生效,列表按状态分组展示,组内顺序与看板一致,并定位到同一工作项所在行,该行高亮或滚动到可视区域。用户在此处修改了筛选,追加“标签=前端”,该修改回写上下文。
切换到日历视图,筛选与分组继续沿用,任务按截止日期落到对应日期格,格内按优先级排序;没有截止日期的任务归入单独的“无日期”区域,并提示数量。定位换算为该工作项的截止日期所在格,若该任务无日期,则定位到“无日期”区域并提示。
返回看板时,系统恢复此前保存的上下文,包括追加的标签筛选,定位回到原卡片。若此时原工作项已被关闭或改期,看板定位到其所在列或相邻卡片,并提示“原定位任务状态已变更”。若筛选结果为空,三种视图都展示空状态说明,并提供“清除部分筛选”的入口,而不是跳回默认视图。
完成检查:判断切换是否真正保留上下文
验收时逐项核对以下清单,任一项不满足即视为未完成,需回到对应步骤修复。这套检查同时适用于自研实现和配置平台能力的核验。
- 筛选条件在三种视图间完全一致:字段、运算符、取值均相同,无视图私自追加隐藏条件。
- 分组字段与排序保持一致:分组数量、组名、组内顺序在视图间可对应。
- 定位在可映射视图间指向同一工作项或同一日期;无日期任务有明确的归集位置。
- 空结果有清晰说明和可操作的下一步,不静默跳回默认视图。
- 定位对象关闭、改期或被移出筛选范围时,落到最近可见位置并出现提示。
- 刷新页面或从其他页面返回后,筛选、分组与定位仍可恢复。
- 在任一视图内修改筛选或分组后切换,修改被保留而非被覆盖。
其中,筛选不一致、分组顺序错乱、失效定位无提示、刷新后上下文丢失属于阻断项,必须修复后才能上线;提示文案的措辞、定位高亮的样式属于可迭代项,可在上线后根据反馈优化。若使用 ONES 这类平台承载工作项视图,建议在选型或配置阶段就用上述清单实际验证跨视图切换、定位换算与刷新恢复行为,确认与团队口径一致后再推广使用。
常见问题
筛选条件里有“负责人=我”这类动态取值,切换视图后如何保证口径不漂移?
动态取值要在筛选字段字典里写明取值来源和计算时机,例如“负责人=我”取当前登录人,在上下文序列化时记录为“当前用户”这一语义,而不是记录某个具体人名。切换视图后由目标视图按同一规则重新解析,这样同一账号在三种视图看到的范围一致。若团队存在代填或转交场景,建议在字段字典中补充“按当前登录人”与“按指定成员”两种口径,并明确默认使用哪一种,避免不同视图各自解释。
看板按状态分列、日历按日期呈现,分组字段在日历视图里怎么体现?
日历视图的主结构是日期,分组字段通常作为格内排序依据或颜色标识来体现,例如格内任务按优先级排序、用颜色区分负责人。关键是分组口径不变:分组字段、组名和组内顺序在三种视图中可对应,只是呈现形式不同。如果团队强依赖按状态分组查看,可以在日历格内按状态排序并显示状态标识,或在日历旁保留一个分组统计区域,让用户切换后仍能判断任务处于哪个分组。
定位对象在切换前被关闭或改了截止日期,系统应该怎么处理?
这类情况属于定位无法映射,处理原则是降级到最接近的可见位置并给出提示,避免静默跳回默认视图。对象已关闭时,看板可定位到其原所在列或相邻卡片,列表定位到相邻行;截止日期变更时,日历定位到新日期所在格或所在周。提示文案要说明发生了什么以及用户可以做什么,例如“原定位任务已改期,已定位到新截止日期”。降级规则应写入上下文规范,作为切换逻辑的一部分实现和测试。
筛选结果为空时,三种视图分别应该展示什么?
三种视图都应展示空状态说明,并保留当前筛选条件的可见信息,让用户知道是条件过严而不是数据缺失。空状态中提供可操作的下一步,例如“清除部分筛选”或“放宽日期范围”,并允许用户直接调整后继续在当前视图查看。需要避免的是空结果时自动跳回默认视图或清空筛选,这会让用户丢失刚刚设定的上下文,也难以判断问题出在哪里。
刷新页面或从其他页面返回后,视图上下文还需要恢复吗?
需要,这是验收清单中的阻断项之一。上下文恢复的范围包括筛选条件、分组字段与排序、当前定位;实现上可以把上下文写入可持久化的位置,在页面加载时读取并重建视图状态。测试时要覆盖直接刷新、从其他页面返回、浏览器前进后退等路径,确认筛选与分组不被重置、定位仍指向同一工作项或日期。若平台能力有限,至少应保证筛选与分组可恢复,并在定位无法恢复时给出提示。
