事件中心 → 历史证据连续工作流
目标
让值守人员从事件详情进入历史数据时,不再重新选择车辆、协议与时间。事件中心会把事件车辆、来源协议、事件时间和事件标识带入历史数据;历史页始终保留来源事件上下文,并可返回同一事件详情。
设计与实现证据
history-event-context-concept.png:Image Gen 生成的 1440 × 900 完整工作区概念。history-event-context-desktop.png:真实 React / Semi UI 页面在 1440 × 900 的浏览器渲染,已选中事件时刻对应的历史记录并打开证据详情。history-event-context-mobile.png:390 × 844 移动端事件上下文与历史列表。history-event-detail-mobile.png:390 × 844 移动端证据详情抽屉。notification-to-event-desktop.png:1440 × 900 通知审计详情,展示可追溯的“查看事件”入口。notification-event-route-desktop.png:1440 × 900 从通知进入原事件后的 URL 深链与选中态。notification-event-route-mobile.png:390 × 844 同一事件深链在移动端恢复为 bottom sheet。notification-shareable-detail-desktop.jpg:1440 × 900 通知第 2 页、50 条分页尺寸与指定送达详情由 URL 直接恢复。notification-shareable-detail-mobile.jpg:390 × 844 移动端指定通知详情;主要动作固定在底部导航上方。notification-stale-detail-mobile.jpg:390 × 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.jpg:1440 × 900 失效rowId的明确说明与恢复动作;主表和当前查询上下文继续保留。history-stale-evidence-mobile.jpg:390 × 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 驱动并经过越界归一化 |
| 失效证据恢复 | 过期或跨页链接不能静默留白 | 已实现;加载、读取失败、当前页不存在和正常证据四态互斥,均可关闭或恢复 |
| 通知审计位置 | 通知筛选、分页和详情可恢复且不产生幽灵选中态 | 已实现;notifySearch、notifyRead、notifyOffset、notifyLimit 与 notificationId 由 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¬ifyLimit=50¬ificationId=18后恢复第 2 页和送达详情;按收件人搜索只保留匹配行,搜索无结果时自动清理notificationId;移动端失效通知清理后详情与 URL 同步关闭。 - 概念图与桌面、移动端实现图均以原始分辨率检查。