JianFeeeee
0bced9fcff
跨端: fix(推送客户端) 更正我上一笔的注释:session_id 不是"只写不读",GET 会回给客户端
上一笔 `9404f98` 的代码是对的,但注释里我写了一句**过度概括**:
"服务端对这个字段不做格式校验、而且当前**只写不读**"
后半句错了。`GET /api/v1/me/devices/push-token` 把这个字段**原样回给客户端**:
server/internal/handler/push.go:148 "session_id": t.SessionID,
更正为准确的三条(各自都能复核):
1. 服务端不做格式校验(只 `TrimSpace`、允许为空)⇒ 所以不 400、不影响收信、不进日志;
2. 但 GET 会回给客户端 ⇒ 假值**是可见的**,且 `isRegistered` 的比对口径
(只按 `provider + token_tail`,见 PushContract.ts 那段说明)恰好不看它 ——
两件事合起来意味着:**没有任何机制会因为这个字段错了而报警**;
3. 投递暂不受影响:发通知用的是**邮件自己的** `session_id`
(`notify/mail.go:266` 构造 `push.NewMail{SessionID: m.SessionID}`),
`dispatch` 只用 token 的 `Provider`/`Token`(`push.go:155`)。
⇒ 结论不变但理由更准:**这个字段存在的唯一目的就是"点通知回到那条会话",
而它存的值是错的**;"不会立刻炸"正是它该先修的原因。
写这条注释时我把"投递不读它"顺手写成了"没人读它"——**"不参与这条路径"与"没有读取方"
不是同一件事**,与这两天反复出现的形状同族(把"我没看到"读成"不存在")。