diff --git a/backend/python/app/api/admin/im_bot_admin.py b/backend/python/app/api/admin/im_bot_admin.py index 0985e75..7b0cb9f 100644 --- a/backend/python/app/api/admin/im_bot_admin.py +++ b/backend/python/app/api/admin/im_bot_admin.py @@ -21,8 +21,8 @@ _TZ_BEIJING = timezone(timedelta(hours=8)) def _beijing_now(): - """返回 naive 北京时间(容器 UTC 时区下,需显式转)""" - return datetime.now(_TZ_BEIJING).replace(tzinfo=None) + """返回带时区的北京时间(aware datetime,存 PG timestamptz 不误解)。""" + return datetime.now(_TZ_BEIJING) from typing import Optional from fastapi import APIRouter, Depends, HTTPException, Query diff --git a/backend/python/app/api/im_bot_user.py b/backend/python/app/api/im_bot_user.py index 3932d49..816504d 100644 --- a/backend/python/app/api/im_bot_user.py +++ b/backend/python/app/api/im_bot_user.py @@ -40,8 +40,13 @@ TZ_BEIJING = timezone(timedelta(hours=8)) def _beijing_now() -> datetime: - """返回北京时间的 naive datetime(去掉 tzinfo 以便直接存入 MySQL DATETIME)。""" - return datetime.now(TZ_BEIJING).replace(tzinfo=None) + """返回带时区的北京时间(aware datetime)。 + + #977 关键修复:平台已全量迁 PG(时间列均为 timestamp with time zone), + 必须返回 aware datetime。此前 .replace(tzinfo=None) 返回 naive,PG 按 UTC + 误解导致错位 8 小时(如北京时间 13:53 存成 13:53 UTC → 前端显示 21:53)。 + """ + return datetime.now(TZ_BEIJING) # ============================================================ # iLink 协议常量(腾讯官方 iLink Bot HTTP API,直连免 AppID)