# 把当前操作做完整

根据当前动作的实际后果补全交互，不强制所有控件拥有同样数量的状态，也不预设网站要有哪些业务页面。

## 顺着一次操作检查

用户如何发现入口，操作前需要满足什么条件，执行后会发生什么？结果在哪里能确认，是否还需要下一步？这些问题用于检查当前动作，不要求做成固定数量的页面或步骤。

区分即时的本地变化与需要等待的请求。只有发生等待时才显示等待状态；没有真实进度时不伪造百分比。失败时说明可知原因与可行恢复方式，不把所有问题都写成一句“操作失败”。

## 处理真实存在的分支

- 根据动作是否可重复、可取消、可撤销或有后果，决定是否需要阻止重复、确认、取消和恢复。
- 提交前后保留有价值的输入，避免因失败让用户重新填写；哪些字段需要清除，应由隐私和任务决定。
- 切换筛选、页面或项目时，较早请求不能覆盖较新的选择；异步结果需要对应当前上下文。
- 多处展示相同数据时，同步列表、详情、数量与操作状态，不能只让按钮看起来成功。
- 空结果、尚未开始、权限不足和加载失败是不同情况，有需要时分别处理。

不是每个动作都有以上所有分支。按实际风险与行为选择，不为了凑状态而制造额外流程。

## 给不同操作方式保留路径

入口有可理解的名称与语义，键盘用户能找到并执行。打开浮层、移除项目或切换视图后，焦点应到达可理解的位置。需要拖动、悬停或手势时，检查是否还需要点击或键盘替代方式。

反馈不能只靠颜色或动画。减少动效后，结果和操作路径仍需清楚；提示外观与动效参数由项目自行决定。

## 说明数据边界

演示状态不代表已经保存、上传或通过审批。接入真实数据时，让界面反馈对应真实结果；登录与权限等还需结合实际服务确认，不能仅靠隐藏按钮充当授权。

没有后端时可以提供明确标注的演示数据或接入接口，但要说明已经验证什么、还有什么需要联调，不让模拟成功冒充真实业务完成。
