Files
MailUI4Agents/gateway/internal/db
JianFeeeee 1767953331 fix(db): SQLite 时间绑定改用 sqlite 格式 + UTC 时区
modernc.org/sqlite 在 writeTimeFormat 为空时回落到 t.String(),写出
`2026-09-03 16:45:38.5 +0800 HKT m=+0.009` —— 带单调时钟后缀,
datetime() 返回 NULL,与 NOW() 的字符串比较必然错。

后果是安全 bug:user_sessions.expires_at 无法被 datetime() 解析,
过期令牌照样通过校验 —— 会话永不过期。

修法是一行 DSN(`_time_format=sqlite&_timezone=UTC`)而不是改 40 处
db.Ts() 绑定点:DSN 是全局的、不可能漏,辅助函数要求每个新绑定点都记得调用。

排除 `_time_format=datetime`:它把亚秒截断,会重新引入「同秒插入多封邮件
排序不确定」——「会话里最早那封」(决定联系人身份)与「最后那封」
(决定最新进展)都会取错行。

新增 usersession_time_test.go 5 例。反向验证:摘掉 DSN 修复后 4 个失败,
报文即「过期令牌竟然解析成功 —— 会话永不过期」。
2026-09-03 21:08:23 +08:00
..