feat(generator): корзина отвязана от страницы, у товара — уровень спроса
- Зачем: - приёмка #40 нашла в торговых данных два точных равенства, каких в живом магазине не бывает: событие корзины случалось ровно у визитов со страницей /cart, а внутри такого визита в корзину уходили все открытые карточки. Привлекательность товара было нечем измерить, а аналитик читал бы эти равенства как склейку в разметке. - Что: - класть в корзину может любой визит, открывший карточку; страница /cart осталась шагом воронки, а у визита, дошедшего до неё, корзина непуста. - у товара появился уровень спроса — колонка каталога с тремя значениями и два ряда вероятностей в числах мира: намерение визита берётся из шага воронки, а не из метки покупателя, которая уже действует через неё. - уровни рассыпаны по каталогу одной колодой: одинакового расклада по категориям нет, связи с ценой нет, и то и другое сторожится тестами. - числа мира перемерены: конверсия карточки в корзину 8,62% (по уровням 13,1 / 9,2 / 5,8), кладут без открытия корзины 41,4% таких визитов, средний день 49 834 события, конверсия визита в покупку 2,43%. - спека генератора и мастер-спека приведены к новой форме каталога. - Проверка: - make lint && make typecheck && make test — 394 passed (было 383). - трафиковая половина побайтово та же: sha256 по (URL, времени, WatchID) всех просмотров за 14 канонических дней совпадает со снимком до правки.
This commit is contained in:
@@ -160,11 +160,40 @@ BUYER_CHECKOUT_OF_CART_PERCENT = 60
|
||||
# страницу, на которой посетитель его нажал.
|
||||
TRADE_DELAY_SECONDS = (2, 8)
|
||||
|
||||
# Кто и что кладёт в корзину: доля открытых карточек, которая до неё дошла.
|
||||
# Оба ряда читаются по уровням спроса товара (`catalog.DEMAND_LEVELS`):
|
||||
# магнит, обычный, залёживается.
|
||||
#
|
||||
# Первый ряд — визит, дошедший до страницы корзины. Он пришёл покупать и
|
||||
# кладёт почти всё, что сравнивал; уровень решает, что именно из сравненного
|
||||
# он выберет, и залежавшийся товар проигрывает соседям по вкладке. Верх ряда
|
||||
# высок намеренно: опусти его — и корзина такого визита схлопнется до одной
|
||||
# позиции, а заказ до одного товара.
|
||||
#
|
||||
# Второй ряд — визит, который до страницы корзины не дошёл. Кладёт он редко,
|
||||
# и магнит уходит у него из карточки втрое чаще обычного товара и вшестеро
|
||||
# чаще залежавшегося: случайного посетителя решает соблазнить сам товар,
|
||||
# больше решать нечему. Событий при этом выходит почти поровну — магнитов
|
||||
# 47% таких добавлений, обычных 42%: обычных в каталоге вдвое с лишним
|
||||
# больше, и разница уровней живёт в доле открытых карточек, а не в счёте
|
||||
# событий. Нулю в этом ряду места нет: обнулить уровень значило бы вернуть
|
||||
# по его товарам ровно то равенство «положил — открыл корзину», ради
|
||||
# которого правка и делалась.
|
||||
#
|
||||
# Спрос растянут во втором ряду сильнее, чем в первом, и это не подгонка:
|
||||
# намерение заслоняет товар, поэтому привлекательность видна там, где
|
||||
# намерения нет.
|
||||
SHOPPING_ADD_PERCENT = (98, 94, 55)
|
||||
BROWSING_ADD_PERCENT = (6, 2, 1)
|
||||
|
||||
# Доля позиций корзины, которые остались брошенными: заказ уже корзины.
|
||||
# Иначе событие корзины не рассказывало бы ничего сверх покупки — заказ был
|
||||
# бы её точной копией, и сравнивать было бы нечего. Пустым заказ не бывает:
|
||||
# если брошены все позиции, одна остаётся (спека генератора, раздел 9).
|
||||
ABANDONED_POSITION_PERCENT = 15
|
||||
# Число опущено с 15% вместе с отвязкой корзины от страницы корзины: корзина
|
||||
# стала уже (1,7 позиции вместо 2,4), и прежние 15% чаще выносили её целиком,
|
||||
# а спасённая позиция возвращала заказ к одному товару.
|
||||
ABANDONED_POSITION_PERCENT = 10
|
||||
|
||||
# Сколько штук одного товара берут: веса для 1, 2, 3 штук. Обычно одна,
|
||||
# изредка две-три — непродовольственная розница.
|
||||
|
||||
Reference in New Issue
Block a user