fix: 假单打乱时间比较统一为 timezone-aware

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-28 18:37:14 +08:00
parent 22f1781ea2
commit b152f95ef8

View File

@@ -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