docs(agents): add design references

This commit is contained in:
2026-08-10 23:34:28 +08:00
parent a2383fc8a1
commit 72a83f5fcd
86 changed files with 8889 additions and 0 deletions

View File

@@ -0,0 +1,159 @@
# 移动端 Design System
## 1. 目标与边界
本规范是 `apps/user_app``apps/service_app` 的移动端视觉单一事实来源。目标是让新增页面默认满足 Material 3、iOS/Android 适配、暗色模式、无障碍和安全业务表达要求,同时避免两端复制主题后独立漂移。
Design System 负责:
- 品牌色、中性色、安全语义色、字体、间距、圆角、尺寸、动效和断点。
- Material 3 主题与无业务状态的展示组件。
- 页面层级、列表、表单、反馈、导航和安全提示的视觉规则。
Design System 不负责:
- 权限判断、任务状态机、金额计算、设备控制结果或风险等级判定。
- API DTO、领域模型、Repository、缓存或离线补传。
- 将尚未落地的业务能力包装成静态成功页面。
实现源位于 `apps/heqi_design_system`。业务 App 的 `ui/core` 仅保留兼容适配或业务专用组件,不得复制公共主题实现。
## 2. 设计原则
1. **安全可信**:红色只用于危险、失败、阻断和破坏性操作;请求成功不能伪装成设备执行成功。
2. **内容优先**:通过字号、留白和对比建立层级,避免依靠 Card 堆叠。
3. **平台原生**:优先使用 Material/Cupertino 可访问控件,支持系统返回、字体缩放和 Safe Area。
4. **语义驱动**:页面使用 `ColorScheme`、TextTheme 和公共组件,不读取裸色值。
5. **渐进披露**:现场作业、注册和退款等复杂流程分组展示,错误紧邻问题并提供恢复入口。
6. **双端一致、品牌有别**:中性色、安全色和组件行为共享;用户端使用安全蓝,服务端使用作业靛蓝。
## 3. Tokens
### 3.1 Color
| Token | Light | 用途 |
| --- | --- | --- |
| `consumerPrimary` | `#2563EB` | 用户端品牌、主要操作 |
| `servicePrimary` | `#4F46E5` | 服务端品牌、主要操作 |
| `success` | `#16875D` | 已通过、已确认、完成 |
| `warning` | `#B86400` | 待处理、未配置、临近风险 |
| `danger` | `#C7352A` | 危险、失败、阻断、删除 |
| `lightBackground` | `#F7F8FA` | 亮色页面背景 |
| `darkBackground` | `#0B1220` | 暗色页面背景 |
| `darkSurface` | `#111827` | 暗色内容表面 |
业务页面不得使用 `Colors.red/green/orange` 或裸 `Color(0x...)` 表达状态。状态必须同时包含文字或图标,不能只依赖颜色。
### 3.2 Typography
不绑定网络字体,使用 iOS/Android 系统中文字体回退。所有页面使用 Material 3 类型角色:
| Role | Size/Line height | Weight | 用途 |
| --- | --- | --- | --- |
| `displaySmall` | 32/40 | 700 | 关键金额与核心结果 |
| `headlineMedium` | 28/36 | 700 | 页面主标题 |
| `headlineSmall` | 24/32 | 700 | 重要状态标题 |
| `titleLarge` | 22/28 | 600 | 区块标题 |
| `titleMedium` | 16/24 | 600 | 列表标题 |
| `bodyLarge` | 16/24 | 400 | 主要正文与表单 |
| `bodyMedium` | 14/22 | 400 | 辅助正文 |
| `labelLarge` | 14/20 | 600 | 按钮与主要标签 |
| `labelSmall` | 12/16 | 500 | 状态与非关键说明 |
必须支持系统字体放大;正文不低于 14sp12sp 仅用于非关键说明。
### 3.3 Spacing、Radius、Size
- 间距:`4 / 8 / 12 / 16 / 20 / 24 / 28 / 32 / 40 / 48dp`
- 圆角:`10 / 12 / 16 / 20 / 24dp`
- 页面横向边距:紧凑屏 20dp宽屏 28dp。
- 内容最大宽度720dp。
- 主要按钮高度52dp。
- 最小触控区48×48dp满足 Android 48dp 与 iOS 44pt 下限。
- 底部导航高度72dp并保留系统安全区。
### 3.4 Motion
- `fast 150ms`:按压、焦点、轻量状态。
- `standard 220ms`:展开、切换、内容替换。
- `emphasized 300ms`:页面级重要状态变化。
- 动效只表达因果和层级,不使用装饰性无限动画。
- 必须尊重系统 Reduced Motion加载动画除外。
## 4. 组件规则
### 4.1 Layout
- `HeqiGutter`:统一页面宽度和自适应边距。
- `HeqiSectionHeader`:区块标题、说明与可选尾部操作。
- `HeqiSurfaceSection`:同组内容容器;普通设置项放入同一个 Section不得每行单独 Card。
- 独立可点击业务实体可以使用 Card但同一屏不宜连续出现超过三个同权重 Card。
### 4.2 Status and feedback
- `HeqiStatusPill`:短状态标签,必须使用语义 tone。
- `HeqiMessageState`:空、错、不可用状态;错误应提供恢复动作。
- 高风险事件、自动关阀和禁止作业应使用独立 Safety Banner包含原因、影响、状态和下一步。
- 超过 300ms 的操作显示加载反馈;提交期间按钮禁用并保持尺寸稳定。
### 4.3 Forms
- 每个字段必须有可见 Label复杂字段提供 Helper Text。
- 错误显示在对应字段附近,说明原因与修复方法。
- 密码字段提供显示/隐藏;手机号、验证码、密码使用对应系统键盘和 Autofill。
- 长表单应保存草稿,离开前确认未保存内容。
### 4.4 Navigation and actions
- Bottom Navigation 只承载 35 个顶层目的地,图标和文字同时存在。
- 每屏只设置一个主要 FilledButton次要操作用 OutlinedButton低权重操作用 TextButton。
- 破坏性操作使用 error 语义色,并与主操作保持至少 20dp 间距。
- 深层页面不得重复创建顶层 AppBar 或 Bottom Navigation。
## 5. 页面模式
### 用户端
- 登录/注册:品牌区 → 表单 → 单一主操作 → 协议与辅助入口。
- 首页:页面介绍 → 当前服务/安全概览 → 内容区块。
- 商城:商品列表为同组 Surface商品是独立 Row价格和购买操作优先于装饰。
- 订单:顶层 Tab 管理分类,子列表使用 embedded 模式,不嵌套 AppBar。
- 我的:身份概览 → 资产概览 → 账户与服务列表 → 独立退出操作。
### 服务端
- 作业前检查:准入总结果 → 检查项列表 → 单一进入/打卡操作。
- 任务列表:岗位概览 → 任务数量 → 可扫描的任务 Row。
- 任务详情:任务状态 → 服务信息 → 主流程操作 → 独立异常操作。
- 现场取证:安全暂存说明 → 完成进度 → 取证项 → 结论 → 提交。
- 我的工作台:人员/在岗状态 → 钱包与草稿 → 作业检查 → 独立退出操作。
## 6. 版本与贡献流程
1. 在设计评审中说明新增 Token/组件解决的跨页面问题,避免为单页创建公共 API。
2. 先修改 `apps/heqi_design_system`,再在两个 App 中验证兼容性。
3. 新组件必须提供亮色、暗色、禁用、加载、错误和大字体状态。
4. 公共组件不接收数据库 ID不包含业务状态机不直接访问网络或存储。
5. 每次变更更新包版本与本规范的“变更记录”。
版本规则:
- MAJOR删除或重命名 Token/组件、改变公共行为。
- MINOR新增兼容 Token、组件或品牌主题。
- PATCH不改变 API 的对比度、布局、语义或缺陷修复。
## 7. 验收清单
- `flutter analyze``flutter test` 在共享包及两个 App 均通过。
- Android、iOS、Web 至少执行对应构建验证;受环境限制未执行的平台必须说明。
- 375px 小屏、横屏、平板宽度均无横向溢出。
- 亮色和暗色分别检查文字、边框、状态和弹层对比度。
- 大字体下无关键文本截断,读屏顺序与视觉顺序一致。
- 所有触控目标至少 48dp固定操作不被系统安全区遮挡。
- 页面中不存在裸状态色、重复主题实现或无解释的禁用操作。
## 8. 变更记录
| 版本 | 日期 | 内容 |
| --- | --- | --- |
| 0.1.0 | 2026-08-10 | 建立共享 Flutter 包、双品牌 Material 3 主题、基础 Token 与布局/状态组件。 |