feat(web): unify history and account states

This commit is contained in:
lingniu
2026-07-20 04:25:46 +08:00
parent adf92ecd17
commit 04ec00d4be
7 changed files with 290 additions and 21 deletions

View File

@@ -249,3 +249,47 @@
- 第二轮生产截图确认车辆空结果、轨迹紧凑证据和运维成功状态遵循同一套 Semi UI 结构,未发现 P0、P1 或 P2 视觉与交互问题。
final result: passed
## 历史证据与账号治理次级状态 Semi UI Design QA
- source visual truth: ECS 生产端历史数据与账号管理工作台
- implementation screenshots:
- users filtered empty state: `/Users/lingniu/.codex/audits/2026-07-20-semi-history-users/04-users-filter-empty-after.jpg`
- users restored directory: `/Users/lingniu/.codex/audits/2026-07-20-semi-history-users/05-users-cleared-after.jpg`
- history initial workspace: `/Users/lingniu/.codex/audits/2026-07-20-semi-history-users/06-history-desktop-after.jpg`
- history export jobs: `/Users/lingniu/.codex/audits/2026-07-20-semi-history-users/07-history-secondary-after.jpg`
- viewport and state:
- desktop `1440 × 900`
- 管理员权限、生产数据、空筛选与有效历史查询状态
### Fidelity Ledger
| Surface | Required fidelity | Implementation evidence | Result |
| --- | --- | --- | --- |
| Secondary state consistency | 趋势、导出、证据和账号筛选不能继续使用彼此不同的原始 Empty、Spin。 | 历史与账号页面移除直接 Empty、Spin统一使用共享 `PanelEmpty``PanelLoading`。 | Improved. |
| Recovery path | 可恢复错误和无匹配结果必须提供明确且唯一的下一步。 | 趋势与导出失败提供对应重试;账号无匹配提供“清除筛选”;授权车无匹配提供“清除车辆筛选”。 | Passed. |
| Semantic meaning | 加载、引导、提醒与失败状态应在同一结构下保持可辨认。 | 使用 primary、success、warning、danger 语义 tone 和真实 Semi Icon不增加装饰性插图。 | Passed. |
| History continuity | 状态迁移不能破坏趋势查询、证据读取、异步导出和原查询条件。 | 生产查询返回 6 条历史记录、1 辆车、2 个来源;趋势展开显示桶点,导出侧栏显示 4 个已完成任务。 | Preserved. |
| Account continuity | 清除账号筛选后必须恢复原目录,不改变账号与车辆权限数据。 | 输入不存在账号后显示语义空状态,点击“清除筛选”恢复 5 个客户账号。 | Preserved. |
| Responsive density | 次级状态不能在窄屏撑高列表或遮挡主要操作。 | 共享状态使用 compact 契约,并在 `680px` 断点收敛趋势、账号与授权车状态高度。 | Passed by responsive rule and component regression coverage. |
| Production readiness | 源码、构建产物和生产服务需要指向同一个可追溯版本。 | 全量 371 项测试、生产构建和 Web build gate 通过ECS 当前版本为 `semi-history-users-states-20260720041714`。 | Passed. |
### Interaction And Accessibility Checks
- 状态外层继续使用 `role="status"``aria-live="polite"`;失败状态沿用共享告警语义;
- 趋势重试、导出重试、清除账号筛选和清除车辆筛选均有明确的可访问名称;
- 账号无结果不再形成无操作的大块白色画布,恢复动作位于状态说明之后;
- 历史初始引导、趋势加载、趋势无点、导出任务和证据选择使用同一内容层级;
- 生产端账号清筛、历史趋势展开和导出任务侧栏均完成实际点击验证;
- 本轮未把浏览器视口覆盖能力作为移动端视觉认证依据,窄屏结论来自共享组件回归测试与 CSS 断点审查。
### Comparison History
#### Pass 1 — fixed
- 原历史次级区域混用裸 Semi Empty、Spin语义、间距与恢复动作不一致账号筛选无结果没有直接恢复路径。
- 迁移后两页复用已经在车辆、轨迹和运维页面验证过的语义状态组件,只为各自业务补充图标、说明和动作。
- 首轮测试发现趋势与主表同时加载时会正确产生两个独立 live region测试随后改为针对趋势状态的精确断言。
- 生产复核确认账号清筛和历史导出主流程可用,桌面布局没有新增裁切、覆盖或不可达操作。
final result: passed