From 872dbedb6ef3e5b0ab2b934d31186cedc0d9c153 Mon Sep 17 00:00:00 2001 From: XingQue Date: Sun, 28 Jun 2026 18:23:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=81=87=E5=8D=952=E5=88=86=E9=92=9F?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=86=85=E5=9B=BA=E5=AE=9A=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E5=88=B7=E6=96=B0=E5=8D=B3=E5=8F=98?= =?UTF-8?q?=E5=BA=8F?= 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 | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/orders/services/fake_order_pool.py b/orders/services/fake_order_pool.py index 364d771..e3bc7ed 100644 --- a/orders/services/fake_order_pool.py +++ b/orders/services/fake_order_pool.py @@ -50,10 +50,10 @@ def _random_display_time_str(): def _resolve_shuffle_epoch(): """ - 全用户共用一条打乱状态(id=1): - - 距上次打乱 >= IntervalSeconds:更新 LastShuffleTime,进入新打乱窗口 - - 否则:沿用上次打乱时刻,本窗口内顺序不变 - 返回用于固定顺序的 epoch 时间戳;若应使用库表顺序则返回 None。 + 全用户共用 id=1 一条记录: + - 已满 IntervalSeconds(默认120秒):更新 LastShuffleTime + - 未满:不更新,沿用上次时刻 + 同一窗口内所有用户用相同 seed,刷新不会变顺序。 """ now = timezone.now() with transaction.atomic(): @@ -69,23 +69,12 @@ def _resolve_shuffle_epoch(): if created or elapsed >= interval: state.LastShuffleTime = now state.save(update_fields=['LastShuffleTime', 'UpdateTime']) - return int(state.LastShuffleTime.timestamp()) - return None + return int(state.LastShuffleTime.timestamp()) def _order_fake_rows(rows, shuffle_epoch): - """shuffle_epoch 有值:按全局 epoch 固定打乱;None:按库表 SortOrder/CreateTime。""" - items = list(rows) - if shuffle_epoch is None: - items.sort( - key=lambda r: ( - -(r.SortOrder or 0), - r.CreateTime or timezone.datetime.min.replace(tzinfo=timezone.utc), - r.id or 0, - ), - ) - return items - base = sorted(items, key=lambda r: (r.id or 0, r.OrderID or '')) + """按全局 epoch 固定打乱;2 分钟内所有人顺序一致。""" + base = sorted(list(rows), key=lambda r: (r.id or 0, r.OrderID or '')) rng = random.Random(shuffle_epoch) rng.shuffle(base) return base