Files
MailUI4Agents/server/internal/handler
JianFeeeee 7e5b11392f fix(push): session_id 非空时必须是合法 UUID —— 它此前静默接受任意字符串,真 bug 就是这么活下来的
dsh(f07daac1 之后的 5fab8734)报:客户端一度把这个字段填成**服务器地址**
(`AccountInfo.server` = `https://…/api/v1`),而这里只 TrimSpace、不看格式 ⇒
不 400、不影响收信、不进日志;而**投递路径也不看它**(通知里的 session_id 来自
邮件自己,见 notify/mail.go;dispatch 只用 token 的 Provider/Token)。
两条路都不看 ⇒ 存了假值没有任何机制会报警,可它存在的唯一目的就是
「点通知回到那条会话」。

改动只有一条校验(非空才校验,空串仍合法 —— 契约允许"客户端还没进任何会话"),
400 文案自带药方(写明"要么 UUID、要么留空")。

判据 `TestPushTokenSessionIDMustBeUUID` 四个用例:服务器地址顶替 / 随便一个词 /
空串 / 真 UUID。**变体验证两个方向**:
  · 去掉校验(连 import 一起去)⇒ 「非法」两条当场红(实际 200);
  · 把判断写反(`err == nil` 才报错)⇒ 合法的真 UUID 也红 ⇒ 证明它不是"恒 400"。
恢复后 `go test ./...` 全绿、`go vet` 干净。

取舍:老客户端带旧值上报会吃 400,按契约 400 归静默 ⇒ 不打扰用户、只是那次不上报。
`push_tokens` 现为 0 行,**没有历史脏值要清**。
2026-09-17 19:42:41 +08:00
..