diff --git a/packages/adapters/sqlalchemy_impl/verification_code_repository.py b/packages/adapters/sqlalchemy_impl/verification_code_repository.py index 6c92fd821..ce2a383c0 100755 --- a/packages/adapters/sqlalchemy_impl/verification_code_repository.py +++ b/packages/adapters/sqlalchemy_impl/verification_code_repository.py @@ -67,13 +67,24 @@ class SQLAlchemyVerificationCodeRepository(VerificationCodeRepository): def _to_entity(model: VerificationCodeModel | None) -> VerificationCode | None: if model is None: return None + + # SQLAlchemy 从数据库读出的 DateTime 是 naive(不带时区), + # 领域模型期望 aware datetime(带 timezone.utc),直接用会报 + # "can't compare offset-naive and offset-aware datetimes" + def _ensure_aware(dt: datetime | None) -> datetime | None: + if dt is None: + return None + if dt.tzinfo is None: + return dt.replace(tzinfo=timezone.utc) + return dt + return VerificationCode( id=model.id, recipient=model.recipient, code=model.code, code_type=model.code_type, - expires_at=model.expires_at, - used_at=model.used_at, + expires_at=_ensure_aware(model.expires_at), + used_at=_ensure_aware(model.used_at), attempts=model.attempts, - created_at=model.created_at, + created_at=_ensure_aware(model.created_at), )