Проекция заказа: второй выход commerce, user_id и деньги #90
Notifications
Due Date
No due date set.
Blocks
#91 Заказная судьба: исход, моменты и дельта
ddmitry/clickstream-data-platform
Reference: ddmitry/clickstream-data-platform#90
Reference in New Issue
Block a user
Part of #5.
Цель
Торговая половина дня-функции уже посчитала корзину, цены, купон и номер
заказа; этот тикет учит генератор смотреть на неё глазами бэкенда: заказ —
проекция покупки, а не второе порождение. Учебный результат: два источника
согласованы по построению, а не сверкой.
Что войдёт
commerce: заказы дня готовой структурой; в торговыйподпоток не добавляется ни одного нового броска.
рождения заказа равен дню создания строки;
order_idравен клиентскомуpurchaseID.DISCREPANCIES = 2вseeds.pyпереименовывается в имя заказной стороны (имена мертвы — изних никто не бросает, переименование ничего не сдвигает;
LATECOMERS = 3не трогать — позиция событийной стороны, её наполнит этап 6). Ветвление —
по дню рождения заказа.
items_total— из корзины;discount—из промокода события по готовой таблице «код → скидка» (число мира
этапа 2);
delivery— бросок заказной стороны по таблице целых весов, наполную длину дня;
total=items_total−discount+delivery.person_id— последний обычный бросок когорты; вторая кука парыповторяет ID своего человека; заказ показывает его как
user_id(
UInt64, значение ниже 2^53). В событие Метрики ниperson_id, ниuser_idне попадают.Границы
статуса.
хвост порядка бросков заказной стороны остаётся открытым для дописывания
(правило порядка бросков).
Сначала прочитать
docs/architecture/orders/snapshot.md— откуда берётся заказ,случайность;
docs/architecture/orders/identity.md— человек,person_id,user_id;docs/architecture/orders/fate.md— правило формы броска;docs/architecture/orders/code-rules.md;docs/specs/2026-08-01-generator.md— иерархия зёрен, правило порядкабросков, «Чем меряется генератор»;
docs/specs/2026-07-30-stand-v2-realism.md, разделы 2 и 4 —поля слепка, ориентиры долей;
generator/src/clickstream_generator/seeds.pyиgenerator/tests/test_seeds.py— занятые позиции подпотоков.Проверка
Всё — в
generator/:make lint,make typecheck,make test. Проверятьсвойства, а не текст вывода; инструменты — POSIX (ripgrep на машине стенда
нет).
purchase;order_idравенpurchaseID; корзина, суммы и купон совпадают с торговой половиной.События дня при включении заказной стороны не меняются байт в байт.
total=items_total−discount+delivery.user_id;user_idне попадает в событиеМетрики.