fix(store): 邮件日期统一 UTC 存储,修复混合时区偏移导致 Web/IMAP 排序错乱
根因:date 列在 SQLite 中是文本,历史数据混存 +08:00/-04:00/+00:00 等时区偏移,ORDER BY date DESC 变成字符串字典序而非时间序: - Web 列表最新邮件排不到最前(如 22:21+08 的邮件排在 20:03+08 后面) - IMAP 序号与客户端按日期排序的视图不一致 修复: - mailStore.Create 统一 msg.Date = msg.Date.UTC()(所有写入路径 共用:SMTP/IMAP APPEND/Web/外发回执),新数据字典序即时间序 - 生产数据一次性迁移为 UTC 格式(130 条,Python 全量解析转换) - 验证:kevin INBOX 排序 172→170→166→164…(严格最新在前)
This commit is contained in:
@@ -52,6 +52,13 @@ func newMailStore(database *gorm.DB) MailStore {
|
||||
|
||||
// Create inserts a new message record.
|
||||
func (s *mailStoreGorm) Create(msg *db.Message) error {
|
||||
// 日期统一为 UTC 存储:date 列在 SQLite 中是文本,混合时区偏移
|
||||
// (+08:00/-04:00 等)会让 ORDER BY date 变成错误的字典序(Web 列表
|
||||
// 排序错乱、IMAP 序号与客户端日期视图不一致)。统一 UTC 后字典序
|
||||
// 即时间序,所有排序路径(Web/IMAP/seqOf)全链路一致。
|
||||
if msg != nil {
|
||||
msg.Date = msg.Date.UTC()
|
||||
}
|
||||
return s.db.Create(msg).Error
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user