fix: 假单打乱时间比较统一为 timezone-aware
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user