已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】React 18 + Vite 5 的 B 端中台,自研上报链路(错误 + 性能 + 用户行为三类事件),前端用 IndexedDB 做本地队列,navigator.sendBeacon / fetch 上行,服务端落 ClickHouse。目标是弱网 / 离线时事件不丢,恢复后补发,且同一事件在服务端只计一次。
【现象 / 卡点】上线后出现两种相反的问题:
【已尝试】
【期望的答案形态】希望拿到:①一个可复现的幂等 key 设计(哪些字段进 key、uuid 在哪一步生成并如何持久化、pending/sent 状态机怎么落 IndexedDB);②sendBeacon vs fetch 在补发场景的选择与"不可取消"怎么兜底;③去重窗口到底该开多大、放客户端还是服务端、如何与"离线时长不可控"兼容;④最好带线上量化数据(重复率 / 丢失率 / 补发延迟 P95)。