Files
Starlight_Lancher/.agents/skills/oil-frontend/references/interaction-and-editing-contract.md

111 lines
6.1 KiB
Markdown

# 展示、编辑与表单规则
> 当任务涉及展示与编辑切换、表单、行内编辑、批量工作表或选择流程时读取;纯浏览结构由列表与详情规则负责。
## 展示态与编辑态
资源列表和只读详情使用文字、资源身份、图片和状态组件。表单控件、上传区及保存操作只在用户明确开始修改、选择,或进入以批量配置为核心的工作表后出现。
禁止:
- 用只读或禁用的表单控件展示普通信息;
- 让资源列表、卡片和只读详情默认处于编辑态;
- 为每个字段长期显示选择器、保存按钮或第二排操作;
- 同时显示字段值和负责修改该值的完整控件;
- 把多个字段的编辑器塞进资源列表组件。
## 行内编辑门槛
普通资源列表只有同时满足以下条件才使用行内编辑:
- 高频修改;
- 只影响一个字段;
- 输入短且验证简单;
- 不依赖其他字段;
- 结果可立即理解;
- 失败或撤销不影响其他步骤。
不满足任一条件时,从行末进入单行编辑器、工作流弹窗或详情页。一次只让正在编辑的区域进入编辑态。
## 表单克制
表单是完成一次数据提交的输入结构,不是为了显得完整而增加的工作流。
- 只收集完成当前任务必需且无法可靠获得的数据。
- 系统已经知道、上一步已经提供、能够继承或可靠推导的信息直接带入;只有字段属于当前任务对象且当前表单负责修改时才允许编辑,否则展示来源并使用负责维护这份数据的页面或共享编辑器修改。
- 相关字段使用一个清楚的提交边界;禁止逐字段编辑和逐字段保存。
- 简单任务不拆成多步骤表单;高级设置仅在影响当前任务且用户主动需要时展开。
- 不默认增加自动保存、草稿、重置、预览、步骤条、字符计数或第二套确认。只有任务状态、错误代价或字段依赖明确需要时才增加。
- 优先使用输入约束、候选范围和合理默认值防止无效输入,不用更多操作步骤代替防错。
- 错误在可修正的位置说明,提交失败保留已输入内容,不清空表单或要求重新开始。
表单复杂度只由字段依赖、错误代价和提交边界决定,不由已有数据库字段数量决定。
## 可编辑工作表
当前任务本身是连续配置多个同类任务时,可以让多行持续处于编辑态,但必须同时满足:
- 行代表同一种任务对象,字段和保存语义一致;
- 用户需要跨行比较并连续填写相同字段;
- 修改即时生效或拥有统一提交边界,不要求每行重复保存;
- 单元格只放当前阶段的高频字段,复杂依赖、完整预览和高级设置进入单行编辑器;
- 控件高度、主次信息、状态位置和操作位置在所有行保持一致;
- 横向滚动只发生在表格容器内,关键身份列和操作列保持可见。
不要因为页面里出现多个输入框就判定交互错误。先判断它是资源列表,还是用户明确进入的批量工作台。
## 组件分工
| 当前任务 | 使用组件 |
| --- | --- |
| 识别和比较资源 | 资源身份、图片、文字、状态 |
| 选择资源 | 展示当前值的触发器 + 按需打开的资源选择器 |
| 修改单个简单字段 | 明确触发的局部编辑器 |
| 修改多个相关字段 | 表单弹窗、单行编辑器或详情编辑模式 |
| 浏览详情 | 展示组件;提供一个明确的“编辑”入口 |
资源列表中的选择器关闭后恢复为资源身份展示;可编辑工作表的选择触发器可以持续可见,但展开选项仍按需出现。
## 数据归属
先确定字段属于哪个业务对象,再决定编辑入口:
- 负责维护这份数据的页面或共享编辑器负责修改完整数据;
- 使用这份数据的页面默认展示来源对象和当前值;
- 使用这份数据的页面可以选择本次任务需要的子集,但不得复制来源对象的完整编辑表单;
- 需要修改来源数据时,打开同一个共享编辑器或前往负责维护这份数据的页面;
- 返回原页面后保留当前位置、任务数据和最新值。
禁止在多个页面分别维护同一字段的编辑逻辑、校验和保存入口。
## 选择与候选
- 存在明确默认选择时,先按 [资源识别规则](resource-recognition-contract.md#已选结果) 展示当前选择,通过“更改选择”按需打开选择器;展开候选后隐藏只读摘要,禁止同时重复显示同一批对象。
- 只有“比较并选择”是当前主要任务时,才默认展开选项列表。
- 候选集合默认用于识别、比较和选择,不把每个候选渲染成完整表单。
- 选择候选与编辑候选是两个状态;一次只打开一个候选编辑器。
- 批量接受无需修改的候选,不强迫用户逐个进入编辑。
## 删除重复操作
- 选择结果已经即时生效时,不再要求额外保存。
- 存在显式保存时,修改只提交一次;不要再增加同义确认。
- 可撤销的普通操作不增加确认弹窗。
- 危险或不可恢复操作只确认一次。
不得为同一次决定增加多个同义确认步骤。只有动作分别改变不同业务状态时才能同时存在。
跨步骤数据带入、返回位置和原对象更新统一遵循 [数据与操作范围规则](scope-and-state-integrity-contract.md#流程连续性)。
## 审查
- 用户尚未表达修改意图时,为什么会看到表单控件?
- 这个控件是在展示值,还是确实允许当前步骤修改值?
- 能否用一次点击替代“选择 → 确认 → 保存”?
- 同一动作是否同时存在于卡片、单元格、页脚和弹窗?
- 是否展示或要求填写了系统已经知道、能够继承或可靠推导的信息?
- 是否因为“可能有用”增加了字段、步骤、预览、保存或确认?
- 表单复杂度是否来自真实字段依赖和错误代价,而不是数据库字段数量?
- 普通列表的行内编辑是否满足门槛?批量工作表是否满足本文件列出的条件?
- 编辑结束后是否仍能快速跨行比较?