4.9 KiB
4.9 KiB
UI 设计方案
设计目标
界面服务于高风险模型测试操作:优先显示系统状态、当前进度、错误原因和下一步操作,同时保留类 Apple 产品的克制、层次和留白。不用装饰性动画掩盖真实等待,不将密钥或敏感请求数据作为视觉素材。
组件基础
按钮、表单、卡片、表格、标签、弹窗、步骤、进度和空状态统一使用项目现有的 antd。禁止页面自行引入第二套组件库或局部重写组件形状。两套主题只能替换颜色,不得改变组件尺寸、圆角和信息层级。
强制设计令牌
以下令牌定义在 src/styles.css,所有页面必须复用:
| 令牌 | 值 | 用途 |
|---|---|---|
--radius-control |
8px |
Button、Input、Select、Tag 等控件 |
--radius-surface |
16px |
Card、Modal、Alert、Table 等容器 |
--space-card |
24px |
卡片和内容面板内边距 |
--space-section |
24px |
同层内容区块之间的间距 |
禁止在页面样式中新增一次性胶囊圆角(例如 999px)或为相同层级使用不同圆角。Switch、圆形进度和头像等由功能决定形状的组件除外。需要新尺寸时,先扩展全局令牌并补充一致性测试,再在页面使用。
颜色必须来自 src/styles.css 的主题变量或 src/design/theme.ts 的 Ant Design token。普通文字与背景对比度至少为 WCAG AA 4.5:1;大号文字至少 3:1。状态不得只靠颜色表达,必须同时保留文字或图标。
页面布局规则
- Card 内容默认使用
--space-card,同级 Card 或内容区块使用--space-section。 - 页面不得通过负 margin 或相邻零间距制造视觉粘连。
- 同一组标签尺寸、圆角和内边距必须一致;结论只通过语义色、字重和状态点强化。
- 多列内容在 960px 以下收为单列;700px 以下保证导航、表单和统计区可重排。
- 新页面优先复用现有 PageHeader、AsyncState、ReportSummary 和 Ant Design 组件。
两套可切换方案
| 方案 | 用途 | 视觉特征 |
|---|---|---|
blue |
默认安全控制台 | 使用 Ant Design 深色算法,深蓝布局、高对比信息、冷色状态强调,适合长时间监控 |
light |
浅色专业工作台 | 浅灰布局、白色表面、Spark 紫色主操作,适合报告审阅 |
登录页和应用顶栏均提供“切换前端 UI 方案”按钮。选择保存在 localStorage,刷新和重新登录后仍保留。
页面层级
- 登录:品牌与价值主张在左,唯一主任务登录在右;窄屏只保留登录任务。
- 应用框架:侧边栏承载主导航与身份,顶栏显示活跃任务和主题切换,内容区只保留当前业务。
- 数据概览:先显示可行动指标,再显示最近运行,不使用无决策价值的装饰图表。
- 表单:按完成任务的顺序分组,就地校验,主提交操作保持唯一。
- 运行详情:阶段、进度、计数和当前样例位于首屏,结果和报告位于下方标签页。
- 结果卡片:顶部使用统一 Tag 明确标识“类型 / 模式 / 执行状态 / 仲裁结论”,将后端原始值转为中文语义。执行状态和仲裁结论使用两个独立筛选器,不混合
completed/error与pass/fail;执行 ID 搜索与两个筛选器组合生效,并支持忽略大小写的片段匹配。所有标签使用相同的8px圆角;结论只增加字重和状态点。通过为绿色、未通过或错误为红色、待复核为橙色,文字始终保留。 - 结果卡片在 Run 完成或部分错误时提供“重新执行”;使用 Ant Design 确认框说明结果将被替换。提交、运行中状态以按钮文字和信息提示表达,不只依赖颜色;Run 非终态时同 Run 的全部单条重试按钮禁用。重试目标使用信息提示说明跟踪状态并置顶显示,不修改用户已有筛选;提示提供“停止跟踪”按钮。
- Run 详情页在逐条结果筛选栏提供 Markdown 详细报告导出,复用执行状态和仲裁结论筛选,不复制第二组筛选器,也不占用页头运行控制区;非终态保留禁用按钮以说明能力,加载状态使用按钮文字和图标表达。执行 ID 搜索只影响页面结果,不影响导出。
响应式与可访问性
960px 以下将多列卡片收为单列,700px 以下将侧边栏改为页首导航。主题切换和状态不仅依赖颜色,破坏性操作使用文字和确认弹窗。系统尊重 prefers-reduced-motion,所有主要交互均使用语义按钮、表单标签和可见错误文案。
提交门禁
所有 UI 修改提交前必须运行 pnpm check。其中:
tests/unit/design/consistency.test.ts防止圆角、间距和规范文档漂移。tests/unit/design/contrast.test.ts校验双主题标签与主按钮对比度。tests/integration/pages.test.tsx验证全部页面可挂载及关键路由行为。