feat: expand vehicle data platform capabilities

This commit is contained in:
lingniu
2026-07-27 16:46:15 +08:00
parent e3a1f80f86
commit 3c4bece72c
650 changed files with 62155 additions and 2552 deletions

View File

@@ -1,3 +1,59 @@
# 事件中心生产重构 Semi UI Design QA
## Automation Editor Fidelity Correction — 2026-07-22
- source visual truth: `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/automation-editor-desktop.png`
- implementation evidence: `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/automation-editor-modal-final-desktop.png`
- same-state comparison: `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/compare-automation-editor-modal-final.png`
- viewport/state: desktop `1487 × 1058`, existing enabled automation, sample test successful; modal measured `1068 × 936` with no horizontal overflow.
- correction: replaced the desktop right SideSheet with the selected centered modal, preserved the mobile bottom SideSheet, restored the far-right close control and visible active step, and gated publication on a successful sample event test.
- verification: event-center tests `15 / 15`; TypeScript, Vite production build and artifact verification passed.
- production release: ECS `automation-modal-fidelity-20260722145249`; uploaded archive checksum matched, atomic Web smoke passed, and authenticated health returned the exact release while the platform and both alert evaluator services remained active.
- pass history: user-reported P1 SideSheet mismatch fixed; comparison follow-up found and fixed P2 header/token fidelity issues; no open P0, P1 or P2 remains in this scoped flow.
final result: passed
- selected direction: A「事件收件箱」
- product contract: `Event → Automation → Execution → Delivery`
- protocol scope: `GB32960``JT808``YUTONG_MQTT`
- focused QA ledger: `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/design-qa.md`
- source/implementation comparisons:
- `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/compare-event-inbox.png`
- `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/compare-automation-workspace.png`
- `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/compare-notification-audit.png`
- `/Users/lingniu/project/ai-coding/lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-center-production-20260722/qa/compare-automation-editor-modal-final.png`
- viewport and state: desktop `1487 × 1058`; mobile `390 × 844`; event stream, event detail, automation workspace/editor and notification delivery detail
## Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Event-first IA | Default to event triage while keeping automation and delivery adjacent. | Text tabs, table-led inbox and persistent right inspector match selected direction A. | Passed. |
| Canonical contract | Three protocols must produce one stable event model. | Canonical event type/category, protocol, source ID, dual timestamps, automation and execution state are exposed end to end. | Passed. |
| Automation | Model the workflow as event / condition / action with a verifiable execution. | “当 / 如果 / 就” workspace and four-step editor include sample test and publish. | Passed. |
| Delivery audit | Treat notification as the delivery result of an execution. | Channel, recipient, attempts, provider ID, read state and delivery timeline have an independent audit surface. | Passed. |
| Responsive actions | Core triage actions must never fall below the viewport. | Sticky inspector footer verified at desktop `720px` height and in the `390 × 844` mobile sheet. | Passed. |
| Production gates | Core contract, API and production bundle must be releasable. | Event tests `30 / 30`, Go `go test ./...` and production build/byte gate passed. | Passed. |
## Comparison History
### Pass 1 — fixed
- The prior alert center mixed event, rule, notification and evidence fields in the same scanning surface.
- Direction A separates the four product entities while preserving a continuous operator workflow.
- Source-left/implementation-right composites were inspected at original detail for structure, typography, palette, spacing, state and responsive behavior.
- The first inspector pass could push actions below a `720px` desktop viewport because of the transformed containing block; its calculated height and sticky footer were corrected and re-verified.
- No open P0, P1 or P2 issue remains on the scoped event-center paths.
### Production Release Evidence
- ECS release `event-center-production-20260722120255` replaced `event-center-simplified-20260722102200` through the atomic installer.
- SHA-256 matched before install; all `76` current and `117` compatibility assets passed byte-for-byte smoke checks.
- Authenticated health reported the exact release, and platform API plus both alert evaluators remained active.
- Production returned canonical JT808 and YUTONG_MQTT events, nine automations and enriched delivered notification audit metadata.
final result: passed
# 单车详情移动端 Semi UI Design QA
- source visual truth: 生产版本 `f59148e2``/vehicles/LB9A32A26R0LS1489`
@@ -250,6 +306,261 @@
final result: passed
## 告警自动化库 Semi UI Design QA
- source visual truth: 用户选定的第 2 套“自动化库 + 场景模板”设计方向
- source image: `/Users/lingniu/.codex/generated_images/019f5c60-560a-7550-ba2d-bbaa1dfd6465/exec-c19e8307-3dd1-4e38-841a-cd8715eb5b26.png`
- implementation screenshots:
- desktop automation library: `/tmp/alerts-shortcuts-redesign-20260721/06-implementation-desktop.png`
- mobile automation library: `/tmp/alerts-shortcuts-redesign-20260721/08-implementation-mobile.png`
- mobile automation editor: `/tmp/alerts-shortcuts-redesign-20260721/09-implementation-mobile-editor.png`
- comparison evidence: `/tmp/alerts-shortcuts-redesign-20260721/07-source-vs-implementation.png`
- viewport and state:
- desktop `1280 × 720`
- mobile content viewport `390 × 844`(浏览器同源 iframe 响应式验证)
- 管理员、真实生产规则与最近告警事件
### Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Information architecture | 告警中心首先区分“待处理”和“自动化”,不让事件、规则、通知三套概念竞争焦点。 | 顶部只保留两个主任务页签;通知履历保留深链兼容但退出主导航。 | Passed. |
| Automation library | 每条自动化应像捷径一样可浏览、选择、启停并查看流程。 | 我的自动化使用单行库、真实启停开关、版本号和选中态;桌面展开“当/如果/就/重复”。 | Passed. |
| Recipe gallery | 用户不应先面对复杂表单,应能从常见车辆场景开始。 | 推荐区提供低 SOC、数据源异常、最高氢浓度三类真实字段模板不可用指标按字段目录禁用。 | Passed. |
| Builder | 编辑器应以业务语言表达触发、范围和动作,同时保留后端完整能力。 | 右侧/底部 SideSheet 以“当、如果、就”组织指标、协议、车辆范围、恢复与重复提醒;保存继续调用真实版本化 API。 | Passed. |
| Real activity | 页面不展示伪造的成功次数或通知通道。 | 最近运行来自真实告警事件并 30 秒刷新;短信、邮件、企微明确标注未启用。 | Passed. |
| Typography and palette | 延续现有 Semi UI、品牌蓝、语义红/橙/绿,不新增不一致的装饰体系。 | 使用 Semi Card、Button、Switch、Tag、SideSheet 与官方 Icon密度、圆角和色阶与平台工作台一致。 | Passed. |
| Responsive behavior | 移动端需要单屏看到多条自动化,并以底部编辑器完成配置。 | `390px` 首屏显示 4 条规则;长名称省略、开关与进入箭头不重叠;编辑器切换为可滚动 Bottom SideSheet。 | Passed. |
### Interaction And Accessibility Checks
- 自动化搜索按名称、说明、指标和范围实时过滤;清除后恢复完整规则库;
- 创建自动化与移动端规则行暴露 `aria-haspopup="dialog"` 和正确展开状态;
- 每个启停开关包含规则名称,避免只有视觉位置可辨认;
- 规则库、推荐自动化和最近运行均有命名区域;
- 桌面点击编辑打开右侧 SideSheet移动端点击规则打开底部 SideSheet关闭不保存
- 推荐模板只在字段目录确认 `alertable` 后可操作;
- 全量 Web 回归 `384 / 384` 通过,生产构建与 Web 体积门禁通过;
- 本地浏览器未发现本次页面逻辑异常;开发态仅出现 Semi UI 依赖的 `findDOMNode` StrictMode 警告。
### Comparison History
#### Pass 1 — fixed
- 旧页面把事件、规则和通知并列,默认展示全部事件,用户进入后不清楚应先处置还是先配置。
- 选定方案将信息架构压缩为“待处理 + 自动化”,并用自动化库、场景模板和最近运行串起发现、配置、验证三步。
- 首轮桌面实测确认真实 9 条规则、版本、开关与运行事件均可读;移动端首屏卡片密度和编辑器输入区无横向溢出。
- 与选定参考图并排复核了文案、布局、字体、色板、图标、间距、响应式和交互;现有产品壳层被保留,核心自动化结构达到选定方向。
- ECS 发布版本 `alert-automation-library-20260721145014` 完成资源烟测、真实 9 条规则读取、编辑器打开/关闭、待处理切换和零浏览器运行时错误复核;生产编辑器截图为 `/tmp/alerts-shortcuts-redesign-20260721/10-production-editor.png`
- 未发现 P0、P1 或 P2 视觉与交互问题。
final result: passed
## 共享 Shell 中间断点 Semi UI Design QA
- source visual truth: ECS 生产端客户工作台
- source screenshot: `/tmp/responsive-continuity-20260720/02-monitor-800-baseline.png`
- implementation screenshots:
- monitor: `/tmp/responsive-continuity-20260720/03-monitor-800-local-after.png`
- deployed monitor: `/tmp/responsive-continuity-20260720/11-monitor-800-production-after.png`
- vehicle search: `/tmp/responsive-continuity-20260720/05-vehicles-800-local-after.png`
- track playback: `/tmp/responsive-continuity-20260720/06-tracks-800-local-after.png`
- mileage query: `/tmp/responsive-continuity-20260720/07-statistics-800-local-after.png`
- mobile regression: `/tmp/responsive-continuity-20260720/08-statistics-390-mobile-regression.png`
- full-view comparison evidence: `/tmp/responsive-continuity-20260720/09-monitor-800-comparison.png`
- focused left-edge comparison evidence: `/tmp/responsive-continuity-20260720/10-monitor-left-edge-comparison.png`
- viewport and state:
- compact desktop / tablet `800 × 600`
- breakpoint checks `680`, `681`, `800`, `900`, `901`, `1024px`
- mobile regression `390 × 844`
- authenticated customer, 44 authorized vehicles, live production-backed data
### Findings
- 未发现修复后仍需处理的 P0、P1 或 P2 视觉、交互或响应式问题。
- 对比期间实时车辆状态与今日上报数发生正常轮询变化;布局、账号、筛选和路由状态保持一致,不把动态数值差异视为视觉偏差。
- 本地控制台只出现 Semi UI 依赖内部已有的 StrictMode `findDOMNode` 弃用提示;部署后的生产控制台没有错误或警告。
### Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Shell geometry | `681900px` 必须为 72px 图标轨道保留真实布局空间。 | 新增 `--v2-sidebar-width-compact`,主区固定从 `x=72` 开始并占据剩余宽度。 | Passed. |
| Cross-route continuity | 共享 Shell 修复不能只对监控页生效。 | 监控、车辆、轨迹、里程四个客户路由均在 `800 × 600` 实际切换并截图;页面标题与首个工作区均未被覆盖。 | Passed. |
| Viewport resilience | 680/681 与 900/901 断点不能产生重叠、横向溢出或空白带。 | `680px` 使用 0680px 移动主区;`681900px` 使用 72px 轨道;`901px+` 恢复 228px 完整侧栏,文档宽度始终等于视口。 | Passed. |
| Typography | 页面标题、筛选标签、统计首列和车牌必须保持完整文字层级。 | 修复后“全局监控”“车辆总数”“车辆列表”和完整车牌均可见;原字号、字重与行高未改变。 | Passed. |
| Spacing and layout rhythm | 紧凑桌面不能通过负边距或覆盖换取工作区宽度。 | 主区使用显式宽度计算和左偏移Header、Content、筛选卡、地图和列表共享同一 72px 起点。 | Passed. |
| Colors and tokens | 修复应复用现有 Semi 视觉体系,不引入页面级特例。 | 只新增共享几何 token 与 Shell 响应式规则;状态色、边框、背景和选中态完全保留。 | Passed. |
| Image quality and assets | Logo、地图与导航图标不能因偏移修复被缩放或替换。 | 继续使用真实品牌 Mark、生产高德地图和 Semi 图标;资产比例、清晰度和裁切保持一致。 | Passed. |
| Copy and content | 页面帮助、筛选提示、工作台标题和业务数据必须保持原内容。 | 四路由真实内容与交互未改,仅恢复被侧栏遮挡的信息。 | Passed. |
| Mobile continuity | `≤680px` 必须继续使用底部导航和全宽主区。 | `390 × 844` 里程查询主区 `x=0 / width=390`,底部导航完整,固定车牌和区间总里程列保持可见。 | Passed. |
### Interaction And Accessibility Checks
- 客户账号只显示全局监控、车辆查询、轨迹回放、里程查询四个授权入口;
- 通过真实导航链接依次切换四个路由URL、页面标题、选中图标与工作区同步更新
- `681900px` 的折叠导航仍保留可访问链接名称和原生 Semi Tooltip
- 轨迹页在紧凑宽度自动收起查询栏,主任务“选择车辆”保持可见;
- 里程页固定车牌列、区间总里程列、分页和导出入口均可达;
- `390px` 移动端没有出现左侧空白、横向文档溢出或底部导航错位;
- 共享 Shell 组件测试、响应式源码测试、全量 `380 / 380` 测试和生产构建门禁通过。
- ECS 版本 `compact-shell-ux-20260720170314` 完成 HTTPS、资源哈希和生产 `800 × 600` 复核。
### Comparison History
#### Pass 1 — blocked
- 生产 `800 × 600` 下侧栏已折叠为 72px但主区仍从 `x=0` 开始,被固定侧栏覆盖。
- “全局监控”只显示“监控”,搜索占位首字、车辆总数、车辆列表和第一列车牌均被切掉,属于 P1 跨路由核心信息遮挡。
#### Pass 2 — passed
- 将 72px 折叠宽度提升为共享 token`681900px``.v2-main` 显式保留相同宽度并计算剩余工作区。
- 完整视图和左边缘聚焦对比确认标题、筛选、统计、车辆列表与地图重新对齐,没有新增右侧裁切或文档溢出。
- 四个客户路由、六个边界宽度和移动端回归均通过,没有遗留 P0、P1 或 P2 问题。
### Follow-up Polish
- P3Semi UI 2.101.0 仍会在开发 StrictMode 下记录 `findDOMNode` 弃用提示,属于既有依赖问题,不阻塞本次 Shell 修复。
final result: passed
## 公共登录页短横屏 Semi UI Design QA
- source visual truth: ECS 生产端公共登录页
- source screenshot: `/tmp/full-ui-audit-20260720/04-login-short-landscape.png`
- implementation screenshots:
- short landscape: `/tmp/full-ui-audit-20260720/12-login-short-landscape-final.png`
- deployed production: `/tmp/full-ui-audit-20260720/15-login-short-landscape-production.png`
- small landscape: `/tmp/full-ui-audit-20260720/08-login-small-landscape-after.png`
- wide landscape: `/tmp/full-ui-audit-20260720/09-login-wide-landscape-after.png`
- desktop: `/tmp/full-ui-audit-20260720/10-login-desktop-after.png`
- portrait mobile: `/tmp/full-ui-audit-20260720/11-login-mobile-after.png`
- full-view comparison evidence: `/tmp/full-ui-audit-20260720/13-login-landscape-comparison.png`
- focused form comparison evidence: `/tmp/full-ui-audit-20260720/14-login-form-focus-comparison.png`
- viewport and state:
- short landscape `667 × 375`
- minimum verified landscape `568 × 320`
- wide landscape `844 × 390`
- desktop `1440 × 900`
- portrait mobile `390 × 844`
- public password login, empty form, password field focus
### Findings
- 未发现仍需修复的 P0、P1 或 P2 视觉、交互或响应式问题。
- 本地控制台仅包含 Vite 开发连接与热更新记录;部署后的生产控制台没有错误或警告。
### Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Landscape composition | 短横屏必须使用可用的横向空间,不能把竖屏卡片压成中间窄带。 | 身份区与登录区改为完整双栏,品牌背景贯穿卡片全高,主表单保持单一工作流。 | Passed. |
| Typography | 字段标签和主操作不能因高度不足降到不可读字号。 | 字段标签由 9px 提升至 11px输入文字 14px主按钮 13px品牌标题保持 20px。 | Passed. |
| Touch targets | 用户名、密码和主操作必须保持稳定触控高度。 | `568 × 320``667 × 375``844 × 390` 下输入框和按钮均为 44px。 | Passed. |
| Layout rhythm | 卡片应垂直居中,身份说明、表单、按钮和信任提示之间应形成连续节奏。 | `667 × 375` 下卡片为 `647 × 262`,左右区域全高对齐,移除原底部大块无效空白。 | Passed. |
| Colors and tokens | 登录页必须延续现有品牌蓝、浅灰背景、轻边框和 Semi 状态语义。 | 仅复用既有登录页资产、背景、边框、按钮和焦点样式,没有引入新色板或视觉体系。 | Passed. |
| Image quality and assets | Logo 与图标必须使用产品真实资产和 Semi 图标。 | 继续使用生产品牌 Logo、Semi 用户、锁与密码可见性图标,无临时 SVG、CSS 图形或占位资产。 | Passed. |
| Copy and content | 登录方式、身份说明和权限边界文案必须完整保留。 | “账号密码登录”、管理员开通说明及菜单/车辆/本地缓存隔离提示均完整可见。 | Passed. |
| Responsive regression | 横屏规则不得改变桌面和竖屏既有体验。 | `1440 × 900` 桌面双区 Hero 与 `390 × 844` 竖屏单卡布局均保持原结构,无溢出或裁切。 | Passed. |
### Interaction And Accessibility Checks
- 登录表单继续使用 `aria-label="账号密码登录"`
- 用户名与密码文本框在可访问树中名称唯一,实测均可输入;
- 两个字段填写后“登录工作台”由 disabled 正确切换为可用;
- “显示登录密码”点击后更新为“隐藏登录密码”并返回 pressed 状态;
- 未提交任何测试凭证到生产接口,交互验证结束后清空本地输入;
- 所有五个视口文档宽高均等于视口宽高,没有横向或纵向页面溢出;
- 响应式源码测试、登录组件测试、全量 `378 / 378` 测试和生产构建门禁通过。
### Comparison History
#### Pass 1 — blocked
- 初始横屏改造虽然提高了字号,但左侧品牌背景只覆盖内容中段,卡片上下仍留出断裂白区,属于 P2 布局节奏问题。
#### Pass 2 — blocked
- 扩展左侧区域全高后Semi disabled 主按钮使用不同状态类,原选择器未命中,按钮被 CSS Grid 自动放置到字段上方,属于 P1 核心操作顺序问题。
#### Pass 3 — passed
- 使用稳定的直接子元素选择器覆盖按钮全部状态,并为身份区设置全高网格轨道。
- 最终对比确认登录字段、按钮、信任提示顺序正确;品牌区贯穿卡片,控件尺寸和字号达到横屏基线。
- 额外完成 `568 × 320` 极限横屏、`844 × 390` 宽横屏、桌面和竖屏回归,没有遗留裁切、重叠或不可达操作。
### Follow-up Polish
- P3密码框焦点环继续使用现有浏览器与 Semi UI 组合样式,可在后续全站焦点可视化批次统一微调,不阻塞本次发布。
final result: passed
## 账号目录与权限配置 Semi UI Design QA
- source visual truth: ECS 生产端 `/users`
- source screenshot: `/tmp/account-management-ux-20260720/01-users-before-desktop.png`
- implementation screenshots:
- desktop directory: `/tmp/account-management-ux-20260720/16-users-after-desktop-final.png`
- desktop identity configuration: `/tmp/account-management-ux-20260720/09-users-editor-identity-desktop.png`
- desktop vehicle configuration: `/tmp/account-management-ux-20260720/11-users-editor-vehicles-desktop-pass2.png`
- mobile directory: `/tmp/account-management-ux-20260720/13-users-after-mobile-pass3.png`
- mobile vehicle configuration: `/tmp/account-management-ux-20260720/12-users-editor-vehicles-mobile-pass2.png`
- full-view comparison evidence: `/tmp/account-management-ux-20260720/17-users-desktop-final-comparison.png`
- focused configuration comparison evidence: `/tmp/account-management-ux-20260720/15-users-editor-vehicle-pass1-pass2.png`
- viewport and state:
- desktop `1440 × 900`
- mobile `390 × 844`
- 管理员权限、6 个真实结构账号、1 个停用账号、2 辆授权车配置状态
### Findings
- 未发现仍需修复的 P0、P1 或 P2 视觉与交互问题。
- 控制台仅记录 Semi UI 依赖内部的 `findDOMNode` StrictMode 弃用提示;未出现本轮业务代码异常、请求失败或布局错误。
### Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Directory hierarchy | Web 端账号必须是一行一账号,名称、菜单、车辆、登录时间和状态可横向快速扫描。 | 移除菜单与车辆的嵌套卡片,使用 64px 分隔行、稳定列轨道、明确“配置”动作与停用状态。 | Passed. |
| Mobile density | 移动端必须在不牺牲辨认度的前提下提高单屏账号数量。 | `390 × 844` 下 6 个账号完整可见;每行约 67px名称、账号、菜单数、车辆数和状态均未裁切。 | Passed. |
| Configuration sequence | 登录身份、菜单权限、车辆权限必须形成可理解的配置顺序。 | SideSheet 默认进入登录身份;三个标签增加 13 步骤编号,并保留权限数量提示。 | Passed. |
| Vehicle authorization | 车牌优先、VIN 为辅、授权有效期和移除动作必须在同一视线内完整显示。 | 第二轮将授权车辆从两列改为一辆一行,有效期起止完整展示;桌面和移动端均无横向溢出。 | Passed. |
| Responsive controls | 移动端筛选、配置关闭和保存动作必须可触达。 | 筛选 SideSheet 完整打开和关闭;底部保存按钮为 44px 触控高度、13px 字号并保持吸底。 | Passed. |
| Typography | 标题、正文、元信息和状态应有稳定层级,不依赖过小文字承载主任务。 | 账号名称 1314px、主操作 13px、配置标签 1113px次级元信息 1011px主任务信息不低于 13px。 | Passed. |
| Colors and tokens | 状态颜色应语义化且克制,目录不能被卡片和高饱和色切碎。 | 继续使用 Semi 状态 Tag、品牌蓝与轻边界账号列表改为白底分隔行选中与待完善才使用语义底色。 | Passed. |
| Assets and icons | 品牌、头像与操作图标必须沿用真实产品资产和 Semi 图标。 | 保留生产 Logo、Semi Avatar、Tag、Button、Tabs、SideSheet 和官方图标,无临时 SVG、CSS 图形或占位资产。 | Passed. |
| Copy and content | 页面文本必须说明访问治理目标和权限生效边界。 | “菜单与车辆按最小权限开放,变更最多 30 秒生效”“添加授权车辆”等文案直接说明任务与结果。 | Passed. |
### Interaction And Accessibility Checks
- 账号行继续使用 button 语义,并通过完整可访问名称公布客户、账号、车辆数量和访问状态;
- 选中账号后 `aria-expanded``aria-pressed` 正确更新,关闭配置后恢复目录;
- 三个配置步骤保留 tab / tabpanel 语义,步骤数字不干扰可访问名称;
- 移动端账号筛选可打开、关闭,关闭不会意外应用草稿;
- `1440px``390px` 下文档横向溢出均为 `0px`
- 移动端 6 个账号均位于首屏完整可见区域;
- 账号管理组件测试 `10 / 10`、全量前端测试 `377 / 377` 与生产构建门禁通过。
### Comparison History
#### Pass 1 — blocked
- 桌面授权车辆继承原网格列数,两辆车并排展示,导致第二辆车的有效期信息被截断,属于 P2 信息完整性问题。
- 移动端保存按钮高度仅 40px、字号 9px触控和可读性不足属于 P2 可用性问题。
#### Pass 2 — passed
- 授权车辆列表明确设置为单列每辆车独占一行车牌、VIN、调整、移除和有效期全部完整。
- 移动端保存按钮提升为 44px、13px账号目录保持 6 行首屏密度。
- 全视图与配置局部对比确认没有遗留裁切、重叠、横向溢出或不可达操作。
### Follow-up Polish
- P3Semi UI 仍会输出 `findDOMNode` 弃用提示,可在后续依赖升级批次统一处理,不阻塞本次账号管理发布。
final result: passed
## 跨工作台异步状态 Semi UI Design QA
- source visual truth: ECS 生产端监控、车辆、告警、运维与质量对账工作台