feat: expand vehicle data platform capabilities
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 通知失败幂等重试审计
|
||||
|
||||
日期:2026-07-23
|
||||
范围:事件中心 → 通知记录 → 失败送达详情与人工重试
|
||||
|
||||
## 健康度
|
||||
|
||||
已从“失败只读诊断、外部渠道不可见”提升为可审计的受控恢复链路。核心权限、幂等、尝试上限、客户车辆范围与真假送达语义均有服务端约束。外部渠道的真实服务商投递仍由仓库之外的发送工作进程负责,因此本轮只承诺重新入队,不承诺已经送达。
|
||||
|
||||
## 发现与修复
|
||||
|
||||
1. 生产查询原先固定筛选 `in_app`,短信、邮件和企业通讯失败无法进入通知中心;现在返回全部渠道,并支持按送达状态、阅读状态和关键字做完整范围筛选、分页与总数统计。
|
||||
2. 站内通知原先长期停留在 `created`,前端只能显示“发送中”;现在持久化写入即形成 `sent` 证据,外部渠道继续保持真实的 `reserved / failed / sent` 状态。
|
||||
3. 数据表原先缺少尝试次数、服务商消息 ID、失败原因、最近尝试与重试操作者;迁移 `034_alert_notification_retry.sql` 补齐送达元数据和不可变重试审计。
|
||||
4. 新增失败通知安全重试:需要当前尝试序号、原因与幂等键,最多三次;相同幂等键只返回原回执,不重复入队。
|
||||
5. 重试权限仅开放给管理员和操作员;客户通知查询和已读写入均按授权 VIN 隔离。阅读状态只属于站内信,外部渠道明确显示“不适用”。
|
||||
6. 详情侧栏新增服务商证据、尝试次数、恢复提示、送达时间线和最近 20 条重试审计;确认窗在写入前展示渠道、收件人、尝试变化和不可提前标记成功的边界。
|
||||
7. 桌面侧栏初次视觉复核发现恢复卡的文案被三枚操作按钮挤成窄列,已改为“证据说明 + 独立操作行”,移动端使用 42px 以上操作目标并保持单列滚动。
|
||||
|
||||
## 证据
|
||||
|
||||
- 改造前,失败筛选没有可见记录:`01-before-failed-notification-empty.png`
|
||||
- 桌面失败详情与修正后的恢复操作:`02-after-failed-notification-detail-desktop.png`
|
||||
- 桌面安全重试确认:`03-after-retry-confirmation-desktop.png`
|
||||
- 390 × 844 移动端详情与恢复操作:`04-after-failed-notification-mobile.png`
|
||||
|
||||
## 验证
|
||||
|
||||
- `go test ./...`:通过
|
||||
- Web 正式套件:78 个测试文件、518 项测试通过
|
||||
- 事件中心专项:45 项测试通过
|
||||
- 生产构建:Web、开放门户与 Go 二进制全部通过
|
||||
- 真实浏览器:1440 × 900 与 390 × 844;确认窗只做视觉检查,没有提交真实重试
|
||||
|
||||
## 无障碍与限制
|
||||
|
||||
- 失败详情、恢复区域、审计区和确认窗具有明确 landmark、可访问名称与状态提示;主要动作均可由键盘聚焦,提交按钮会在原因不足时禁用。
|
||||
- 移动端底部导航与详情固定说明之间没有横向溢出,长内容保持单一侧栏滚动。
|
||||
- 本轮未执行屏幕阅读器人工走查,也未覆盖第三方短信、邮件或企业通讯服务商的生产凭据、限流、死信与回调;这些仍需在真实发送工作进程中验证。
|
||||
Reference in New Issue
Block a user