# 迷毂智能调度平台 · 设计系统 (MASTER) > 由 ui-ux-pro-max skill 推导生成 (v1)。本文档是项目的**单一设计真理**。 > 页面级覆盖请放在 `design-system/pages/.md`,覆盖优先级高于本 MASTER。 --- ## 1. 产品定位 (Product Identity) | 维度 | 取值 | |---|---| | **产品类型** | B2B 工业 SaaS · AGV 智能调度平台 · 实时监控仪表板 | | **行业** | 智能制造 / 物流自动化 / 仓储机器人 | | **匹配 reasoning rule** | `Autonomous Drone Fleet` (id=97) 主匹配 / `Logistics-Delivery` (id=25) + `Smart Home/IoT Dashboard` (id=54) + `SaaS Dashboard` (id=19) 辅助 | | **目标用户** | 现场调度员、运维工程师、车队管理员、平台管理员 | | **使用环境** | 桌面端为主 (1920×1080 / 2560×1440)、长时间在线、信息密集 | --- ## 2. 设计模式与风格 (Pattern & Style) | 维度 | 主选 | 辅助 | |---|---|---| | **Landing/页面模式** | Real-Time + Feature-Rich | Bento Grid (主体布局) | | **核心 UI 风格** | Real-Time Monitoring + Data-Dense Dashboard | Glassmorphism (卡片层级) + Dimensional Layering (z-轴层级) | | **可选风格元素** | HUD/Sci-Fi FUI 微元素 (装饰用,不主导) | — | ### Real-Time Monitoring 必备特征 - 实时状态指示器(脉动 dot / pulsing badge) - 流式图表(数值平滑过渡而非跳变) - 告警通知层级(critical → warning → info) - 连接状态/自动刷新指示 - 数值用 `font-variant-numeric: tabular-nums` 防抖动 ### Data-Dense Dashboard 必备特征 - 多 widget 并排(KPI 行 + 主图 + 列表) - 紧凑 padding(卡片 12-18px、KPI 项 10-12px) - 高效栅格布局(CSS Grid) - 表头常驻 hover tooltip - 列表行 hover 高亮 + 平滑过渡 --- ## 3. 颜色系统 (Color System) ### 3.1 状态色(项目级强约束 · 跨主题保持语义) > **关键原则**:状态色与品牌色解耦。不要把品牌紫色当 "执行中"、把品牌橙色当 "警告"。 | Token | 浅色主题 (light) | 深色主题 (dark) | 语义 | |---|---|---|---| | `--mg-status-success` | `#16A34A` | `#22C55E` | 正常 / 成功 / 已完成 | | `--mg-status-warning` | `#D97706` | `#F59E0B` | 异常 / 警告 / 等待人工 | | `--mg-status-danger` | `#DC2626` | `#EF4444` | 严重故障 / critical / 阻断 | | `--mg-status-info` | `#2563EB` | `#3B82F6` | 信息 / 进行中 / 通信 | | `--mg-status-idle` | `#64748B` | `#94A3B8` | 待执行 / 已暂停 / 静默 | ### 3.2 数据可视化色板 (ECharts / Progress / Chart) 按"冷色→暖色"递进,避免单一色相被多 series 共用: ``` '#3B82F6' 蓝 优先级 1 '#22C55E' 绿 优先级 2 '#A855F7' 紫 优先级 3 (品牌色复用) '#F59E0B' 琥珀 优先级 4 '#EF4444' 红 优先级 5 (告警语义保留时慎用) '#06B6D4' 青 优先级 6 '#EC4899' 粉 优先级 7 '#84CC16' 黄绿 优先级 8 ``` ### 3.3 品牌主色(保留现有 7 套主题) 当前默认 `fame-lavender`(浅紫白主区 + 深紫侧栏)保持不变,所有变量在 `themes.ts` 中维护。 新增的状态色变量在每个主题预设里要补齐。 ### 3.4 文字与对比度 | Context | 浅色主题 | 深色主题 | |---|---|---| | `text-light` (主文字) | `#0F172A` (slate-900) | `#FFFFFF` | | `text-muted` (次要) | `#475569` (slate-600 ≥ 4.5:1) | `rgba(255,255,255,0.72)` | | `text-dim` (装饰) | `#94A3B8` | `rgba(255,255,255,0.50)` | | `text-faint` (占位) | `#CBD5E1` | `rgba(255,255,255,0.35)` | > ⚠ 不要用 `slate-400 (#94A3B8)` 做正文 (light mode) ——对比度不够。 --- ## 4. 字体 (Typography) > 选自 `Minimal Swiss` (Inter) + `Developer Mono` (JetBrains Mono) 组合,Dashboard Data 类目最佳实践。 | 用途 | 字体栈 | 备注 | |---|---|---| | **UI 主字体** | `'PingFang SC', 'Microsoft YaHei', Inter, -apple-system, 'Segoe UI', sans-serif` | 中文优先,英文 fallback Inter | | **数据数字** (KPI/坐标/ID) | `'JetBrains Mono', 'Cascadia Mono', Menlo, Consolas, monospace` | 等宽,`font-variant-numeric: tabular-nums` | | **代码/JSON** | 同数据数字 | — | ### 字号分级 | Token | 用途 | 字号 | |---|---|---| | `text-xs` | 标签/时间戳 | 11-12px | | `text-sm` | 次要说明 | 12.5-13px | | `text-base` | 正文/列表 | 14px | | `text-md` | 卡片标题 | 15-16px | | `text-lg` | 模块标题 | 18-20px | | `text-xl` | 页面标题 | 24-28px | | `text-2xl` | KPI 数值 | 28-32px | | `text-hero` | Hero 标题 | 36-44px | --- ## 5. 间距与圆角 (Spacing & Radius) ### 5.1 间距尺度 (8pt 网格) `4 / 8 / 12 / 16 / 18 / 24 / 32 / 48 / 64` ### 5.2 圆角 | Token | 值 | 用途 | |---|---|---| | `--mg-radius-sm` | 8px | 小标签、按钮、tag | | `--mg-radius` | 14px | 卡片、面板 | | `--mg-radius-lg` | 20px | Hero 区、对话框 | | `--mg-radius-xl` | 24px | 全屏覆盖、巨型卡片 | ### 5.3 卡片层级 (Dimensional Layering) ``` z-0 背景 / orb / 网格 z-1 body 主区 z-2 普通卡片 shadow: 0 4px 14px rgba(_, .06) light / 0 12px 30px rgba(0,0,0,.5) dark z-3 浮起卡片 (hover) shadow: 0 8px 24px rgba(_, .10) light / 0 18px 40px rgba(0,0,0,.6) dark z-4 Header / 侧栏 shadow: 0 1px 6px rgba(_, .05) z-5 Dropdown / Toast z-6 Modal / Dialog ``` --- ## 6. 动画 (Motion) | 场景 | 时长 | 缓动 | |---|---|---| | 颜色/边框变化 | 200ms | `ease-out` | | 卡片 hover (transform) | 250ms | `cubic-bezier(.25, .8, .25, 1)` | | 路由切换 | 250ms | 同上 | | 状态脉动 (live dot) | 1.5-2s | `ease-in-out infinite` | | Real-time 数值平滑 | 600-800ms | 同卡片 hover | > ⚠ 严禁 hover 用 `transform: scale()` 引起 layout shift;用 `translateY(-2px)` + `box-shadow` 增强即可。 > ⚠ 必须遵守 `prefers-reduced-motion: reduce` —— 关闭装饰性动画。 --- ## 7. 反模式清单 (Anti-Patterns) 来自 ui-reasoning.csv (Autonomous Drone Fleet + SaaS Dashboard) + Common Rules: | 禁忌 | 原因 | |---|---| | ❌ 把品牌紫当作 "执行中" 状态色 | 状态色与品牌色冲突,扫读时干扰 | | ❌ KPI 数值用变宽字体 | 实时跳动时数字晃动,影响阅读 | | ❌ 浅色主题用 `slate-400` 做正文 | 对比度 < 4.5:1,违反 WCAG AA | | ❌ 侧栏 active 用 4+ 重 box-shadow + text-shadow | 视觉噪音,装饰过度 | | ❌ 硬编码 `#1a0b3d` 等颜色 | 跨主题切换失效 | | ❌ 用 emoji 做 UI icon (🚀⚙️🎨) | 不统一,在不同 OS 渲染差异大 — 用 Heroicons / Element Plus icons | | ❌ 实时图表用 hard refresh (闪一下) | 视觉干扰 — 用 `series.universalTransition` 或 `dataset` 平滑过渡 | --- ## 8. 实施清单 (Pre-Delivery Checklist) 每次发版前对照检查: - [ ] 所有状态色用 `--mg-status-*` token,不直接 hardcode `#22c55e` - [ ] 所有 KPI / 坐标 / ID 数字用 `font-family: var(--mg-font-mono)` + `font-variant-numeric: tabular-nums` - [ ] 卡片/表单 hover 不引起 layout shift - [ ] 浅色主题文字对比度 ≥ 4.5:1 (WCAG AA) - [ ] 浮动元素 (header / aside) 在两套主题下都可见 - [ ] 响应式断点:375 / 768 / 1024 / 1440 / 1920 都过一遍 - [ ] 主题切换时无硬编码色 (grep `#[0-9a-f]{3,6}` in DashboardView/AppShell) --- ## 9. 引用与扩展 - **设计系统生成依据**:`.cursor/skills/ui-ux-pro-max/data/ui-reasoning.csv` (rows 19, 25, 54, 97), `colors.csv` (rows 26, 51, 53), `styles.csv` (rows 28, 31, 39, 46), `typography.csv` (rows 5, 9, 42) - **页面级覆盖**:`design-system/pages/.md` - **变量来源**:`src/styles/theme.css` (CSS 变量声明) + `src/styles/themes.ts` (TS 主题预设) - **Element Plus 适配**:`theme.css` 中 `.mg-content .el-*` 选择器统一管理 --- > **Generated**: ui-ux-pro-max v2.0 推理 + 项目实际代码 cross-check > **Last sync**: 2026-05-24