TapDB 同意闸 follow-ups:desktop 会话边界同意语义与若干加固项(源自 #387 review)
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
PR #387 review 第五轮遗留的延期项,均不阻塞该 PR 合入。按优先级:
## 1. desktop 登出/会话边界是否撤销机器级同意(需产品拍板)
desktop 的 privacyConsentAccepted 是机器级事实记录,登出不清除。共享一台电脑的场景下:非 SSO 用户 A 同意 → 登出 → 用户 B 走企业 SSO 登录(协议门豁免,B 从未同意)→ auth 监听把 B 的账号 ID 绑进 TapDB。这与 PR #387 声明的「企业 SSO 用户不会被采集」在共享机器场景下矛盾。
mobile 已按「登出撤销同意、保留 enabled override」处理(理由:登出后设置页不可达)。desktop 有游客模式、登出后设置页仍可达,消费口径不同,是否对齐 mobile 需要产品决定——对齐会同时改变「登出后登录页 device 级统计」的口径。
## 2. desktop opt-out SDK 侧失败后无主动重试
optOutTracking() 抛出(如 localStorage 不可用)时,#387 已保证本模块自发事件立即停(fail closed)+ 同值广播重试;但 SDK 自身 autoTrack 的 page_show 在下一次设置广播或重启前会继续发。可考虑失败后本地定时重试或直接禁用 SDK 侧 page_show 路径。
## 3. desktop init 后置步骤失败不重试
initSdk 成功但 setSuperProperties / 首个 pvEvent / setUser 抛出时,状态已提交为 applied,后续同值广播不再补发,影响该进程的启动/留存指标质量(非隐私问题)。可把后置步骤完成度单独跟踪。
## 4. useAnalyticsSettings 写入响应与广播的竞态(纯显示)
多窗口同时写开关时,先发窗口的 invoke 响应可能晚于更新的广播到达并短暂覆盖显示;下一次广播自愈。可让写入路径不 setState、统一依赖广播。
来源:#387 第五轮 bot review(codex connector / greptile),经人工复核定性。
Contributor guide
Research direction
Start with PR #387's fifth-round review, then trace privacyConsentAccepted, the auth listener, optOutTracking(), initSdk, page_show, and useAnalyticsSettings. The work is not ready for implementation until the product decision on desktop logout semantics is made; done would mean applying the agreed retry, initialization, and broadcast behavior across the listed follow-ups.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- analytics, authentication, desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100