From b152f95ef83332148814feec2a51d20e5580ccb6 Mon Sep 17 00:00:00 2001 From: XingQue Date: Sun, 28 Jun 2026 18:37:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=81=87=E5=8D=95=E6=89=93=E4=B9=B1?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=AF=94=E8=BE=83=E7=BB=9F=E4=B8=80=E4=B8=BA?= =?UTF-8?q?=20timezone-aware?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- orders/services/fake_order_pool.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/orders/services/fake_order_pool.py b/orders/services/fake_order_pool.py index 968727f..dd6a1aa 100644 --- a/orders/services/fake_order_pool.py +++ b/orders/services/fake_order_pool.py @@ -47,22 +47,28 @@ def _scope_key(club_id, leixing_id): return f'{club_id}|{lid}' +def _ensure_aware(dt): + if dt is None: + return None + if timezone.is_naive(dt): + return timezone.make_aware(dt, timezone.get_current_timezone()) + return dt + + def _parse_shuffle_time(value): if not value: return None if isinstance(value, str): dt = parse_datetime(value) - if dt and timezone.is_naive(dt): - dt = timezone.make_aware(dt, timezone.get_current_timezone()) - return dt - return value + return _ensure_aware(dt) + return _ensure_aware(value) def _display_time_str_for_order(order_id, anchor_dt): """同一假单在打乱窗口内展示时间固定。""" seed = abs(hash(str(order_id))) % (2 ** 32) seconds_ago = 120 + (seed % 181) - base = anchor_dt or timezone.now() + base = _ensure_aware(anchor_dt) or timezone.now() return fmt_datetime(base - timedelta(seconds=seconds_ago)) @@ -99,7 +105,7 @@ def _load_fake_rows_in_saved_order(club_id, leixing_id): stored_ids = list(entry.get('order_ids') or []) last_dt = _parse_shuffle_time(entry.get('last_shuffle_time')) if not last_dt and not created: - last_dt = state.LastShuffleTime + last_dt = _ensure_aware(state.LastShuffleTime) need_reshuffle = ( not stored_ids @@ -129,7 +135,7 @@ def _load_fake_rows_in_saved_order(club_id, leixing_id): state.save(update_fields=['OrderSequence', 'UpdateTime']) stored_ids = valid_ids - anchor_dt = _parse_shuffle_time(entry.get('last_shuffle_time')) or now + anchor_dt = _parse_shuffle_time(entry.get('last_shuffle_time')) or _ensure_aware(now) ordered = [id_to_row[oid] for oid in stored_ids if oid in id_to_row] return ordered, anchor_dt