5.0 KiB
5.0 KiB
数据与操作范围规则
当任务涉及数据集合、查询结果、操作范围、忙碌范围、保存结果或流程连续性时读取;视觉呈现由对应界面规则负责。
先明确范围
实现交互前明确:
| 范围 | 必须回答 |
|---|---|
| 对象 | 当前查看或修改哪个业务对象? |
| 数据 | 使用完整可选集合、当前可见集合还是搜索结果? |
| 操作 | 本次动作影响单项、选中项、当前集合还是全局? |
| 忙碌 | 哪个最小区域需要防止重复操作? |
| 提交 | 修改即时生效、自动保存、统一提交还是临时预览? |
| 结果 | 成功后更新原对象、导航到哪里、保留什么上下文? |
范围无法明确时先提问;无法提问时不猜测全局范围,只按最小可验证范围实施并声明假设。
数据集合完整性
- 浏览集合可以分页;资源选择器必须获得完整可选集合,或提供覆盖完整集合的服务端搜索。
- 禁止把浏览页当前分页结果直接当作工作流的全部可选资源。
- 已选资源暂时不在当前分页或筛选结果中时,仍要保留可识别的当前值。
- 区分
empty(资源集合本身为空)、filtered-empty(筛选或搜索无结果)和error(数据加载失败);具体文案仍应说明是筛选还是搜索未匹配,并提供对应恢复动作。 - 筛选和搜索只改变当前视图,不得悄悄改变已保存的业务关系。
查询视图一致性
远程筛选、搜索、排序或分页触发集合变化时,区分用户刚发出的查询与当前已经展示的已提交查询快照。
- 列表、结果总数、分页范围和已提交查询必须来自同一次响应,并在同一更新边界内生效。
- 新查询返回前可以保留旧快照,但触发控件或集合容器必须明确表达
refreshing;不得把旧内容无标记地解释为新查询结果。 - 查询控件可以立即显示用户刚选择的条件,但必须同时显示
refreshing,直到对应结果提交;否则继续显示旧的已提交条件。 - 请求失败时保留旧快照和查询上下文,并就近显示失败;不得用
empty或新查询的0覆盖仍然可用的旧结果。 - 用户连续改变条件时只提交最新查询的结果,过期响应不得覆盖新的查询上下文。
操作与忙碌范围
- 单项请求只锁定该项及其直接操作,不阻塞无关对象、页面或导航。
- 局部上传、保存、重试和删除不得复用无法区分对象的全局 busy。
- 批量操作默认只作用于当前可见选择;存在隐藏选择时,清除隐藏选择或明确显示数量和作用范围。
- 筛选变化后不得静默操作用户看不见的对象。
- 并发操作必须分别表达状态,不能让一个请求覆盖另一个请求的结果。
- 异步结果返回时确认对象和上下文仍匹配,避免旧请求覆盖用户的新选择。
动作真实性
每个可见动作必须对应以下至少一项:
- 持久化的数据变化;
- 明确的临时预览;
- 可观察的任务状态变化;
- 导航或详情展开;
- 可观察的本地或平台结果,例如复制到剪贴板、下载、导出或播放;
- 可恢复的错误处理。
禁止:
- 展示没有持久化能力的编辑、保存、批准或删除;
- 自动保存已经生效时继续显示虚假的未保存状态或重复保存按钮;
- 只修改内存却用已完成文案暗示数据已经保存;
- 成功后复制第二套对象,导致后续阶段维护不同来源;
- 用禁用按钮长期占位解释当前状态。
临时预览必须明确其范围;失败时保留用户已经输入的内容和当前位置。
示例与兜底数据
- 示例、演示和兜底数据必须与真实资源明确区分。
- 没有真实写入能力时隐藏编辑、删除、发布等写操作。
- 兜底数据只能保证流程可理解,不能伪造已经成功持久化的状态。
- 真实数据恢复后,兜底对象不得继续参与选择、统计或批量操作。
流程连续性
- 对象身份和生命周期未改变时,跨阶段继续更新原对象,不复制成第二套状态源。
- 动作确实生成独立版本、发布记录或产出资源时可以创建新对象,但必须明确关联来源,不能复制并继续维护同一份状态。
- 上一步选择和输入自动带入下一步。
- 关闭详情或编辑器后返回原位置,并显示最新状态。
- 操作完成后不要求用户重新搜索、重新选择或重复确认同一对象。
检查
- 选择器的数据是否覆盖全部可选资源?
- 查询条件、列表、总数和分页是否属于同一个已提交查询快照?
- 单项请求是否错误锁定了无关区域?
- 筛选后批量操作是否包含不可见对象?
- 每个编辑、保存和确认是否真实改变状态?
- 自动保存和显式保存是否重复?
- 示例数据是否被误当成真实可写资源?
- 操作完成后是否继续更新原对象并保留上下文?