"""审计 created_at 应用侧 UTC 落库口径测试。 DB server_default CURRENT_TIMESTAMP 为服务器本地时区,与序列化追加 Z 的 UTC 口径叠加会使前端显示快 8 小时;Python 侧 default 必须产出 naive UTC。 """ from __future__ import annotations from datetime import datetime, timezone from dms.models import AuditLog def test_created_at_default_produces_naive_utc(): default = AuditLog.__table__.c.created_at.default assert default is not None and default.is_callable # SQLAlchemy 对零参 callable 的包装可能伪造成原签名但实收 ctx,两种形态都兼容 fn = default.arg try: value = fn(None) except TypeError: value = fn() assert isinstance(value, datetime) assert value.tzinfo is None utc_now = datetime.now(timezone.utc).replace(tzinfo=None) assert abs((utc_now - value).total_seconds()) < 60