Skip to content

删除 Sushi ID 账号不会清掉 Iron Tide 榜上的记录 #65

Description

@longmaolab

上线验证时发现的(2026-08-17)。不紧急,但属于隐私承诺的缺口,该补。

现象

删掉一个 Sushi ID 账号,站级榜会级联清空(外键 ON DELETE CASCADE,验证过)。
但 Iron Tide 的 93 张详细榜是另一个数据库,没有任何外键关系——那个人的成绩、
以及我们存下来的 display_name,会继续留在榜上

实测:删号后 Sushi ID 库是 0 users / 0 scores,Iron Tide 库里那条
player_id = sushi:<已删除的账号> 还在,照常显示名字。

为什么算问题

面板里对登录玩家写着「登录用的名字永远不会出现在任何榜上」,这条仍然成立。
但**「我删号了」这个动作没有传导到这里**——玩家会合理地以为删号就删干净了。

匿名档不受影响:面板里的「把我从榜上撤下来」是直接调本服务的,一直有效。

可能的做法

  1. 反向查询(改动最小):定期拿库里所有 kind=sushi 的 player_id 去问 Sushi ID
    还在不在,不在就把这些记录置 hidden。需要 Sushi ID 加一个「这个账号还存在吗」的服务间接口。
  2. 删号时通知:Sushi ID 在 DELETE /auth/account 里回调各计分服务。更及时,但要引入 webhook 和重试。
  3. 不存 display_name,每次渲染榜单时现查。最干净,但每次看榜都要跨服务调用。

倾向 1——它不需要在删号这个关键路径上引入新的失败点,延迟几小时对这个场景可以接受。

相关

  • docs/LEADERBOARD.md 第 3.1 节(隐私)应当在修好之前写明这个限制
  • server-leaderboard/db.jsplayers.display_name
  • Sushi ID: VideoGameTips/sushigamelab api/app.js/internal/runs/:runId(现成的服务间通道)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions