Files
lingniu-vehicle-ingest/vehicle-data-platform/docs/design/event-history-continuity-20260722
2026-07-27 16:46:15 +08:00
..

事件中心 → 历史证据连续工作流

目标

让值守人员从事件详情进入历史数据时,不再重新选择车辆、协议与时间。事件中心会把事件车辆、来源协议、事件时间和事件标识带入历史数据;历史页始终保留来源事件上下文,并可返回同一事件详情。

设计与实现证据

  • history-event-context-concept.pngImage Gen 生成的 1440 × 900 完整工作区概念。
  • history-event-context-desktop.png:真实 React / Semi UI 页面在 1440 × 900 的浏览器渲染,已选中事件时刻对应的历史记录并打开证据详情。
  • history-event-context-mobile.png390 × 844 移动端事件上下文与历史列表。
  • history-event-detail-mobile.png390 × 844 移动端证据详情抽屉。
  • notification-to-event-desktop.png1440 × 900 通知审计详情,展示可追溯的“查看事件”入口。
  • notification-event-route-desktop.png1440 × 900 从通知进入原事件后的 URL 深链与选中态。
  • notification-event-route-mobile.png390 × 844 同一事件深链在移动端恢复为 bottom sheet。
  • notification-shareable-detail-desktop.jpg1440 × 900 通知第 2 页、50 条分页尺寸与指定送达详情由 URL 直接恢复。
  • notification-shareable-detail-mobile.jpg390 × 844 移动端指定通知详情;主要动作固定在底部导航上方。
  • notification-stale-detail-mobile.jpg390 × 844 失效通知链接的明确说明与一键清理动作。
  • event-detail-error-desktop.png / event-detail-error-mobile.png:事件深链失败后的稳定恢复面板,包含重试和返回事件流。
  • history-validation-desktop.png / history-validation-mobile.png:超过 5 台车辆时的提交前校验与禁用状态。
  • event-list-error-desktop.png / history-list-error-desktop.png:事件流与历史明细请求失败时的单一错误语义;不会再叠加“暂无数据”或业务空结果。
  • event-shareable-page-desktop.png:事件筛选、第 3 页与 50 条分页尺寸由 URL 恢复后的真实工作区。
  • history-shareable-evidence-desktop.png:历史第 2 页、20 条分页尺寸与指定证据行由 URL 直接恢复并展开详情。
  • history-stale-evidence-desktop.jpg1440 × 900 失效 rowId 的明确说明与恢复动作;主表和当前查询上下文继续保留。
  • history-stale-evidence-mobile.jpg390 × 844 同一失效证据状态在移动端详情抽屉中的等价呈现。

实现约束

  • 历史查询默认使用事件前后 3 分钟、事件车辆、原协议与原始报文。
  • 时间按 Asia/Shanghai 写入查询参数,避免 UTC 事件时间造成窗口偏移。
  • 来源事件参数在历史页修改查询条件后继续保留;返回时按 eventId 重新打开原事件详情。
  • 事件页签、已应用筛选和当前事件以 URL 为单一事实来源;通知、自动化运行、浏览器前进/后退和分享链接统一进入同一事件。
  • 历史页在组件不卸载的同路由跳转中同步 URL 查询范围,避免地址栏、筛选表单和结果数据失步。
  • 事件详情只有在首次成功加载后才开启 5 秒自动同步;失败时保持稳定错误状态,避免错误与加载状态闪烁。
  • 历史查询拒绝超过 5 台车辆、缺失时间和结束时间不晚于开始时间的范围,不再静默截断或把错误推迟到接口层。
  • 列表状态遵循“加载 → 失败 → 空结果 → 数据”的互斥优先级;事件筛选有结果为空时提供一键清空筛选。
  • 事件与历史分页写入 offset / limit;历史选中证据写入 rowId。刷新、分享链接和同路由跳转可以恢复到相同工作位置。
  • 数据总量缩减导致页码越界时自动退回最后一个有效页,并同步修正 URL避免停留在虚假的空页。
  • 指定证据仍在恢复时显示加载态、查询失败时保留重试入口、当前页不存在时解释链接失效并允许一键清理;桌面 inspector 与移动端详情抽屉语义一致。
  • 通知页的搜索、阅读状态、分页尺寸、页码和选中详情写入独立 URL 参数;刷新、前进/后退和分享链接均可恢复同一审计位置。
  • 通知搜索明确限定为当前页并真实覆盖事件标题、正文、事件号、车牌、VIN、收件人、协议和渠道搜索隐藏当前详情时同步清理失效选中态。
  • 午夜后第一分钟内若“今天”形成零长度区间,默认回退到有效的近 24 小时窗口,避免页面初次打开即出现时间校验错误。
  • 不改变既有 API、权限、导出、字段设置、分页、质量判读或响应式模型。
  • 移动端只保留事件标题与返回动作,车辆、来源和时间仍保存在查询范围与详情中,避免挤压首屏。

Fidelity ledger

检查项 概念要求 实现结果
来源上下文 蓝色轻量事件返回轨道 已实现;事件、车辆、协议、发生时间和返回动作同屏
查询范围 车辆、事件时间窗、原始报文、原协议 已实现;进入页面即应用,无需二次输入
信息密度 连续查询、统计、表格和详情 已实现;无卡片墙,桌面首屏可见分页与详情
详情连续性 选中行不离开结果列表 已实现;桌面常驻 inspector移动端 bottom sheet
视觉系统 真白、冷灰、克制蓝、细边框 已实现;沿用平台令牌,无渐变光晕或装饰图像
响应式 1440 × 900 与 390 × 844 已验证;无横向页面溢出,关键动作可见
键盘与语义 行可键盘打开、上下文可读 已实现;事件上下文有 region 标签,返回为原生链接
路由连续性 通知、事件、历史可往返且可分享 已实现;事件选中/关闭同步 eventId,前进/后退恢复页签与详情
异常恢复 深链失败不伪装为空态或无限加载 已实现;明确加载、错误、手动重试和返回动作,桌面/移动一致
输入边界 车辆与时间范围提交前可理解 已实现;超限数量和非法时间即时说明,查询动作同步禁用
状态优先级 失败不能同时伪装为空结果 已实现;事件表格内建空占位静默,事件与历史错误均保留当前范围和重试入口
工作位置恢复 分享链接恢复页码、分页尺寸与证据详情 已实现;事件分页、历史分页和 rowId 均由 URL 驱动并经过越界归一化
失效证据恢复 过期或跨页链接不能静默留白 已实现;加载、读取失败、当前页不存在和正常证据四态互斥,均可关闭或恢复
通知审计位置 通知筛选、分页和详情可恢复且不产生幽灵选中态 已实现;notifySearchnotifyReadnotifyOffsetnotifyLimitnotificationId 由 URL 驱动

有意差异

  • 概念图包含小型趋势条;真实实现打开的是“原始报文”,该数据类型按产品语义不生成聚合趋势,因此保留现有“原始报文不生成趋势”规则,避免制造错误趋势。
  • 实现继续使用既有三项结果轨道,不新增无法由当前 API 准确提供的“异常总数”。
  • 实现保留经过验证的字段、导出和工具入口,而不是完全照抄概念图中的工具排列。
  • 错误和校验文案是概念图未展示但真实工作流必需的状态文案;仅在对应异常发生时出现,不改变正常首屏。
  • 通知搜索文案改为“筛选当前页事件、车辆或收件人”,“全部标为已读”改为“本页标为已读”;这是对真实作用范围的必要澄清,避免暗示跨页操作。

验证

  • 事件领域、历史领域、共享状态、事件中心、历史页相关测试5 个文件 / 76 个测试通过。
  • 浏览器核心路径:通知审计 → 查看原事件 → URL 恢复筛选和选中态 → 后退通知 → 前进原事件 → 关闭详情移除 eventId;历史证据往返路径继续通过。
  • 异常路径:事件详情失败 → 稳定错误面板 → 手动重试 → 返回事件流;历史页输入 6 台车辆 → 明确说明 → 查询禁用。两条路径均在 1440 × 900 和 390 × 844 验证。
  • 列表失败路径:事件流与历史明细均验证为单一 alert,错误时没有业务空结果;事件重试成功返回空集合后才展示空结果和“清空筛选”。桌面 1440 × 900 使用真实浏览器截图,移动端共享错误面板与原生 390 × 844 断点证据复核通过。
  • 可恢复工作位置:浏览器直接打开事件 offset=100&limit=50 后恢复第 3 页,上一页同步为 offset=50;打开历史 offset=20&limit=20&rowId=QA-HISTORY-row 后恢复第 2 页并展开证据,关闭详情移除 rowId,下一页同步为 offset=40
  • 失效证据路径:浏览器直接打开不存在的 rowId,桌面 1440 × 900 和移动端 390 × 844 均说明失效原因;点击“清除失效链接”后 URL 移除 rowId,详情面板同步关闭。查询失败重试和午夜默认范围另有组件回归测试。
  • 通知审计路径:浏览器直接打开 notifyOffset=50&notifyLimit=50&notificationId=18 后恢复第 2 页和送达详情;按收件人搜索只保留匹配行,搜索无结果时自动清理 notificationId;移动端失效通知清理后详情与 URL 同步关闭。
  • 概念图与桌面、移动端实现图均以原始分辨率检查。