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

@@ -0,0 +1,43 @@
# 通知失败筛选与诊断连续性审计
## 结论
事件中心的通知搜索与送达状态筛选已经从“只过滤当前 20 条”下沉到服务端完整范围。接口在分页前统一执行搜索、阅读状态和送达状态过滤,因此列表、总数、页码与空状态使用同一份结果,不再出现“当前页 0 条、总数仍为 9 条、却提示继续翻页”的矛盾。
生产存储也不再把通知统一映射为“已送达”:数据库中的 `failed` 会保留为失败,其余站内通知按可见投递结果归一为已送达。失败详情明确说明当前只提供诊断与刷新,不会自动重发;事件、收件人和服务商证据继续保留,并提供关联事件入口。后端尚无通知重发接口和幂等键,因此本轮没有伪造不安全的“重试”动作。
## 交互步骤与证据
1. **失败筛选基线(不健康)**
选择“仅发送失败”后,旧实现只过滤当前页,页面同时显示“本页 0 条”和“共 9 条”,但分页已经是 `1/1`
![旧版失败筛选矛盾状态](./01-before-failed-filter-desktop.png)
2. **完整范围失败筛选(健康)**
同一桌面尺寸下,服务端返回完整范围的真实结果:空状态、`共 0 条 · 本页 0 条``1/1` 完全一致,并提供“查看全部通知”恢复入口。
![新版完整范围失败筛选](./02-after-failed-filter-desktop.png)
3. **移动端恢复入口(健康)**
390 × 844 下,搜索、阅读状态、送达状态与恢复入口保持单列可触达,没有横向滚动或被固定导航遮挡。
![移动端失败筛选](./03-after-failed-filter-mobile.png)
4. **完整范围搜索(健康)**
搜索“氢”由服务端返回 1 条结果,列表与 `共 1 条 · 本页 1 条` 同步,证明搜索不是当前页二次过滤。
![服务端完整范围搜索](./04-after-server-search-desktop.png)
5. **前后视觉对照(健康)**
相同 1440 × 900 状态下,对照确认总数与空状态的逻辑断层已消失。
![失败筛选前后对照](./05-before-after-failed-filter-comparison.jpg)
## 验证
- 事件中心专项43 项通过。
- Web 正式套件78 个测试文件、508 项通过。
- API`go test ./...` 全量通过。
- 生产构建TypeScript、Vite 构建与发布资产门禁通过。
- 浏览器1440 × 900 桌面、390 × 844 手机真实本地前后端联调通过。
## 无障碍与证据边界
- 搜索框、阅读状态、送达状态、恢复按钮和分页保留可访问名称;移动端主要触控目标可完整触达。
- 当前 Mock 数据没有真实服务商失败样本,所以截图证明的是完整范围筛选、可信计数和恢复入口;失败详情的“只读诊断、不会重发”、关联事件与刷新动作由组件回归测试覆盖。
- 本轮未执行屏幕阅读器或真实键盘全流程测试,不能把 DOM 语义检查等同于辅助技术验收。