# 历史数据查询入口审计 审计日期:2026-07-23 ## 结论 - 原入口只提供车牌/VIN 自由文本框,首次查询依赖用户记忆车辆标识;空状态的“选择车辆并查询”实际没有车辆选择能力。 - 新入口直接查询账号授权车辆,支持车牌/VIN 模糊搜索与最多 5 辆多选;相同 VIN 的多个协议合并为一个候选,数据源与车辆查询共用 `api.vehicles`。 - 批量粘贴仍然保留,点选候选会规范化为 VIN,避免同一车辆以车牌和 VIN 重复进入查询。 - 修改车辆、时间、数据类型或协议后,下方结果继续保留但明确标记为上次查询结果,并提供“恢复已应用条件”,避免把旧数据误认为新条件的结果。 - 移动端候选列表在筛选面板内独立滚动,固定底栏的“应用并查询”始终可见。 ## 证据 1. `01-before-history-start-desktop.png`:优化前首次查询状态,1440 × 900。 2. `02-before-history-results-desktop.png`:优化前已有结果状态,1440 × 900。 3. `03-after-history-vehicle-picker-desktop.png`:已有结果上展开授权车辆候选,1440 × 900。 4. `04-after-history-draft-notice-desktop.png`:添加第二辆车后,旧结果与未应用条件被明确区分,1440 × 900。 5. `05-after-history-picker-mobile.png`:移动端候选列表与固定应用按钮,390 × 844。 6. `06-after-history-start-picker-desktop.png`:优化后首次查询即可选择授权车辆,1440 × 900。 7. `07-before-after-history-entry-comparison.jpg`:同视口首次查询状态前后并排比较。 ## 验证 - `HistoryPage.test.tsx`:42/42。 - Web 正式测试:506/506。 - Go API:`go test ./...` 全部通过。 - 生产构建:`web_build_gate=ok`,开放平台前端及三个 Go 二进制同时构建通过。 - 真实交互:直接添加第二辆授权车辆后,查询条件提示出现且原 36 条结果保持可辨识;恢复后第二辆车和提示均消失。 ## 无障碍边界 - 车辆输入保留显式文本标签,并通过 `aria-expanded`、`aria-controls` 与 `listbox` / `option` 语义暴露候选状态。 - 未应用条件提示使用 `role="status"`,恢复动作是可聚焦按钮;移动端主要操作保持在固定底栏。 - 本轮通过 DOM 无障碍快照、语义角色与可达控件检查;尚未执行独立读屏软件的端到端人工朗读测试。