feat(generator): откалиброваны доли заказной стороны
- Зачем:
- семь мест обещали калибровку черновых долей «при пересборке
эталонного мира (этап 7)», а пересборки не будет (#192); числа
сверены замером и зафиксированы (#194, хвост этапа 7 — #9).
- Что:
- замер на каноническом мире (28 дней, без транспорта): все доли в
пределах ориентиров; пометки «черновое» сняты, наблюдаемые доли
вписаны в комментарии world.py, fate.md и запись «Что проверено»;
- потеря purchase: наблюдаемых 1,78% при броске 3% — вычеты штатные
(пары склейки, приоритет отмены), принято решением владельца;
ориентир класса B в мастер-спеке различает бросок и наблюдаемую долю;
- веса мира и опись не тронуты: правки world.py — только комментарии.
- Проверка:
- cd generator && make lint && make typecheck && make test (437 passed);
- git diff по data/world-inventory.json пуст; grep «черновое|калибровка»
по generator/src и docs/architecture/orders пуст.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8b7987c5c2
commit
9b1826f5ff
5 files changed
+79
-23
No files matched your search
@@ -170,8 +170,11 @@ BUYER_CHECKOUT_OF_CART_PERCENT = 60
|
||||
TRADE_DELAY_SECONDS = (2, 8)
|
||||
|
||||
# Событийная сторона сверки: потерянные маячки purchase и повторная
|
||||
# отправка пары «просмотр подтверждения + purchase». Числа черновые:
|
||||
# точная калибровка будет при пересборке эталонного мира, этап 7.
|
||||
# отправка пары «просмотр подтверждения + purchase». Замер (28 дней,
|
||||
# канонический мир, 2026-08-30): дубль 1,89% — в пределах ориентира ~2%;
|
||||
# потеря 1,78% при броске 3% — так и задумано: назначенные планом покупки
|
||||
# из броска исключены (мост склейки), часть съедает приоритет отмены;
|
||||
# наблюдаемая доля принята решением владельца (#194).
|
||||
LOST_PURCHASE_PERCENT = 3
|
||||
DUPLICATE_PURCHASE_PERCENT = 2
|
||||
DUPLICATE_DELAY_SECONDS = (30, 301)
|
||||
@@ -245,8 +248,8 @@ GOAL_PURCHASE_ID = 42150002
|
||||
# обычная курьерская, срочная. Это единственные деньги заказа, которых нет
|
||||
# ни в одном событии: выручка клиента — сумма позиций, скидку по промокоду
|
||||
# считает бэкенд по таблице `COUPONS`, а доставку решает свой бросок
|
||||
# заказной стороны. Числа черновые: калибровка — пересборка эталонного
|
||||
# мира, этап 7.
|
||||
# заказной стороны. Замер (28 дней, канонический мир, 2026-08-30): 35,5% /
|
||||
# 49,2% / 15,4% — совпадает с весами.
|
||||
DELIVERY_KOPECKS_WEIGHTS = (
|
||||
(0, 35),
|
||||
(29_900, 50),
|
||||
@@ -255,12 +258,13 @@ DELIVERY_KOPECKS_WEIGHTS = (
|
||||
|
||||
# Чем кончается окно изменяемости заказа: веса трёх исходов, в порядке
|
||||
# `orders.OrderOutcome`. «Создан» навсегда мир не допускает — из окна заказ
|
||||
# выходит либо оплаченным, либо отменённым. Доли черновые: калибровка —
|
||||
# пересборка эталонного мира, этап 7.
|
||||
# выходит либо оплаченным, либо отменённым. Замер (28 дней, 2026-08-30):
|
||||
# отменено 5,15% заказов — 3,03% оплачен-потом-отменен, 2,12% отменен
|
||||
# неоплаченным; ориентир мастер-спеки ~5%.
|
||||
ORDER_OUTCOME_WEIGHTS = (
|
||||
95, # оплачен
|
||||
3, # оплачен, потом отменён
|
||||
2, # отменён неоплаченным
|
||||
2, # отменен неоплаченным
|
||||
)
|
||||
|
||||
# Когда внутри окна случается момент заказа — оплата или отмена: веса часов
|
||||
@@ -268,8 +272,8 @@ ORDER_OUTCOME_WEIGHTS = (
|
||||
# с каким весом»; часов в сумме ровно 144 — самый узкий край окна, у заказа,
|
||||
# рождённого в конце суток (docs/architecture/orders/fate.md). Почти всё в
|
||||
# первые сутки, дальше затухание до края:
|
||||
# профиль гаснет, поэтому обрыв окна в данных не виден. Веса черновые, как и
|
||||
# доли исходов.
|
||||
# профиль гаснет, поэтому обрыв окна в данных не виден. Веса зафиксированы
|
||||
# вместе с долями исходов — тем же замером выше.
|
||||
ORDER_MOMENT_HOUR_WEIGHTS = tuple(
|
||||
weight
|
||||
for hours, weight in ((6, 100), (18, 60), (24, 25), (48, 8), (48, 2))
|
||||
@@ -280,11 +284,12 @@ ORDER_MOMENT_HOUR_WEIGHTS = tuple(
|
||||
# наличии, и заказ приезжает на строку короче клиентской корзины. Бросается
|
||||
# доля на все заказы дня, а достаётся дельта не всем — однопозиционному заказу
|
||||
# терять нечего, и таких больше половины, — поэтому в сверке наблюдаемая доля
|
||||
# выходит вдвое-втрое ниже броска, около ориентира мастер-спеки в 1–2%. Число
|
||||
# черновое: калибровка — пересборка эталонного мира, этап 7.
|
||||
# выходит вдвое-втрое ниже броска, около ориентира мастер-спеки в 1–2%. Замер
|
||||
# (28 дней, 2026-08-30): наблюдаемая доля 1,32% — в пределах ориентира.
|
||||
ORDER_DELTA_PERCENT = 4
|
||||
|
||||
# На сколько первых дневных слепков заказ опоздает: веса δ = 0, 1, 2.
|
||||
# Назначенные планом заказы после броска получают 0, чтобы мост склейки
|
||||
# появился в стартовом мире. Числа черновые: калибровка — этап 7.
|
||||
# появился в стартовом мире. Замер (28 дней, 2026-08-30): доля опоздавших
|
||||
# (δ>0) 8,39% — в пределах ориентира мастер-спеки ~10%.
|
||||
ORDER_SNAPSHOT_DELAY_WEIGHTS = (90, 5, 5)
|
||||
Reference in new issue
Block a user