Files
diary-news/backend
xiaji 5eb331bf2d fix(api_push): naive published_at 改当 Asia/Shanghai,不再当 UTC
症状: 财联社/微信等中国源推 ingest 时,payload published_at 通常不带 tz
(naive 字符串),含义是北京时间的墙上时间。
后端之前用 .replace(tzinfo=timezone.utc) 强行当 UTC,导致入库后:
  '2026-06-15 19:58:42' (naive,真意=北京 19:58) →
  PG 存 2026-06-15 19:58:42+00 = 渲染成 2026-06-16 03:58:42+08

前端 dayjs(...).fromNow() 算到当前 +08 时间 20:55 → 显示 '7 小时内'(未来时间)

根因: 中国源给的 naive 字符串实际就是 Asia/Shanghai,不该被当 UTC

修法:
- 新增 zoneinfo + settings.tz 依赖
- naive → settings.tz(默认 Asia/Shanghai),再 astimezone(UTC) 入库
- aware → astimezone(UTC) 归一

注意: 只修未来的新数据;已入库的错位数据需要 backfill(见 PR 后讨论)
2026-06-15 21:01:45 +08:00
..