# EasyFlow 交互与动效规范 v1

## 1. 文档目标

本规范用于统一 EasyFlow 的操作反馈、异步流程、状态恢复、键盘可达性与动效系统，确保界面既现代流畅，又稳定可信。

## 2. 交互哲学

EasyFlow 的交互原则是：

- 顺手
- 可预期
- 低打扰
- 可恢复
- 有活力

界面应始终让用户知道：

- 我现在在哪
- 当前发生了什么
- 下一步可以做什么
- 出错了如何恢复

补充：

- Apple HIG 所强调的直接、顺滑、层级清晰的控制感，应成为 EasyFlow 的默认交互目标。
- toB 系统不应因为强调稳定，就牺牲流动感、反馈质量和控件手感。

## 3. 交互优先级规则

### 3.1 主操作稳定

- 同类页面主操作位置尽量固定
- 主操作数量尽量少，避免多个并列主按钮

### 3.2 次级操作退后

- 搜索、筛选、帮助、导出等默认低于主任务
- 危险操作不与主操作并列抢权重

### 3.3 反馈先于装饰

- 任何视觉变化都应优先承担反馈职责
- 不为“好看”增加没有业务意义的动画
- 但也不应因为“稳”而做成死板、僵硬、毫无气息的后台交互

## 4. 表单交互规范

### 4.1 基本要求

- 字段标签清晰
- 帮助信息紧邻字段
- 错误提示就近展示
- 提交后有明确状态反馈

### 4.2 校验策略

- 优先在字段级提示错误
- 文案要能指导修改，而不是只提示“输入有误”
- 对高风险或高成本字段，必要时增加确认步骤

### 4.3 提交流程

表单提交必须覆盖：

- 提交中 loading
- 防重复点击
- 成功提示
- 失败原因
- 保留或恢复用户已填内容

## 5. 列表与批量操作规范

### 5.1 列表交互

- 排序、筛选、分页、搜索需保持稳定顺序
- 列表刷新不应导致明显跳闪
- 行 hover 反馈应轻量但可感知

### 5.2 批量操作

- 进入批量态后，当前选中数量要清楚
- 高风险批量操作必须确认
- 批量完成后需反馈结果摘要

## 6. 状态反馈规范

### 6.1 Loading

- 短操作可用按钮 loading 或局部 skeleton
- 中长操作应提供区域级反馈
- 不要让全页面频繁闪动式 loading 干扰操作

### 6.2 Success

- 成功反馈应简洁明确
- 成功后如果有下一步建议，可轻量提示

### 6.3 Error

- 错误要说明原因，至少说明失败发生在哪
- 可恢复错误必须给出重试路径
- 不可恢复错误也应给出返回或联系支持路径

### 6.4 Empty

- 解释为什么为空
- 提供推荐操作
- 保持视觉克制，不用过重插画制造噪音

## 7. 危险操作规范

以下场景默认视为危险操作：

- 删除
- 清空
- 停用
- 覆盖
- 批量不可逆处理

要求：

- 二次确认
- 文案明确说明影响范围
- 按钮层级清晰，不允许误触
- 完成后提供结果反馈

## 8. 键盘与可访问性

### 8.1 键盘可达性

- Tab 顺序合理
- 对话框支持 Esc 关闭
- 主操作支持 Enter 快捷确认时，要避免误触发

### 8.2 焦点样式

- 必须清晰可见
- 不依赖微弱颜色变化
- 不得被自定义样式覆盖消失

### 8.3 语义结构

- 表单、表格、弹窗、导航使用语义化结构
- 图标按钮必须有可访问名称

## 9. 动效总原则

EasyFlow 的动效关键词固定为：

- 细腻
- 短促
- 稳定
- 不变形

动效作用：

- 帮助理解层级变化
- 帮助理解状态切换
- 帮助降低跳变感
- 帮助界面保持现代、轻盈和有生命力

## 10. 动效时长与缓动

### 10.1 推荐时长

- 微交互：`120ms - 160ms`
- 常规切换：`180ms - 240ms`
- 弹窗 / 抽屉：`220ms - 280ms`

### 10.2 推荐缓动

- 常规：`cubic-bezier(0.2, 0, 0, 1)`
- 进入：`cubic-bezier(0.16, 1, 0.3, 1)`
- 离开：`cubic-bezier(0.3, 0, 1, 1)`

### 10.3 禁止事项

- 弹跳
- 果冻式形变
- 过长动画
- 多段花哨运动
- 与业务无关的常驻装饰动画

## 11. 推荐动效模式

### 11.1 Hover

- 颜色轻微变化
- 背景轻微提亮
- 轻微阴影或轻微上浮
- 导航骨架中的 hover 可以有更明显一点的材质变化，但不应造成大幅跳动

### 11.2 Focus

- 清晰焦点环
- 轻量边框强化

### 11.3 面板出现

- 淡入 + 轻微位移
- 避免大幅滑入造成压迫感
- 顶栏、侧栏、轻浮层可结合轻度模糊和透明度变化，形成更现代的进入感

### 11.4 弹窗 / 抽屉

- 淡入 + 轻微缩放或轻微滑入
- 遮罩过渡应与内容同步，不可明显割裂

### 11.5 列表更新

- 避免整表闪烁刷新
- 局部更新优先于全局重新挂载

## 12. 页面级体验规范

### 12.1 页面切换

- 保持节奏轻，优先稳定而不是显著
- 页面标题、工具栏、内容区切换不应各自动太多

### 12.2 骨架屏与占位

- 骨架屏结构应接近真实布局
- 不要用与实际结构完全不一致的占位图形

### 12.3 响应式行为

- 优先保持信息层级和操作顺序
- 不要简单缩小所有控件到影响手感
- 小屏下优先重排而不是一味压缩

### 12.4 现代工作台感

- 页面切换、导航激活、工具区状态变化应体现“流动感”，而不是生硬闪现。
- 动效应让界面更像一个现代系统工作台，而不是一组静态表单页面之间的硬切换。
- 动效与反馈应帮助用户感知“控制层浮于内容之上”的空间关系，而不是通过硬分隔线提醒区域切换。

## 13. AI 模块交互建议

### 13.1 生成中

- 应让用户知道系统正在做什么
- 若耗时较长，可显示阶段性状态或进度提示

### 13.2 工具调用 / 工作流执行

- 优先呈现当前步骤、结果和异常信息
- 不要让执行过程完全黑盒化

### 13.3 失败恢复

- 失败后提供重试、编辑输入、查看错误原因等恢复路径
- 对话和流程记录尽量保留，避免用户重新来过

## 14. 与当前代码的演进建议

当前设计层已有：

- `transition.css`
- `ui.css`
- 若干组件内联 `transition-*` 规则

建议后续演进：

1. 先统一动效时长和缓动命名
2. 再逐步收敛组件内散落的 transition 写法
3. 最终沉淀为基础动效 token 和少量标准过渡模式

## 15. 交付时必须说明

如果任务涉及交互、状态、表单、浮层或动效改动，交付说明必须补充：

- 交互变化服务了什么任务目标
- 是否补齐了 loading、失败恢复与空状态
- 动效是否符合“细腻、短促、稳定、不变形”
- 是否影响键盘可达性、焦点样式或响应式表现
