- Зачем:
- спека разрослась до 1058 строк, а журнал решений в разделе 9 читался
только целиком; агентам и людям нужен дешевый адресный заход к
основаниям решений генератора.
- Что:
- заведены ADR 0015 (пояс счетчика), 0016 (паспорт куки) и 0017 (номер
заказа); четыре адресные ссылки на «раздел 9» перешиты на них.
- раздел 9 пересобран в 11 тематических подразделов с датами и тикетами
у каждого решения и закрыт пометкой о заморозке; устаревшие
промежуточные замеры свернуты до указателей на актуальные.
- строка статуса в шапке отмечает закрытие спеки как документа этапа 2.
- Проверка:
- wc -l docs/specs/2026-08-01-generator.md (951, было 1058);
rg -n 'раздел[а-яё]* 9|разделы 8 и 9' docs -g '*.md' — 18 попаданий,
все классифицированы; разделы 1-8 нетронуты (сверка хешем).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
60 lines
3.5 KiB
Markdown
60 lines
3.5 KiB
Markdown
# Генератор кликстрима
|
|
|
|
Путеводитель показывает, как пройти генератор от корневого зерна до двух
|
|
выходов дня, не пересказывая код и спеки.
|
|
|
|
## Целевая картина одним взглядом
|
|
|
|
- **Подпоток определяется местом в дереве, а мир внутри подпотока — порядком
|
|
бросков** — [дерево зерен и порядок бросков](seeds.md).
|
|
- **Мир поднимает только когорты окна, нужные запрошенному дню** —
|
|
[ленивость мира](lazy-world.md).
|
|
- **Устройство и город принадлежат куке на всю жизнь и потому решаются
|
|
планом состава** — [паспорт куки](cookie-passport.md).
|
|
- **Выбор по весам сведен к целым броскам и арифметике интервалов** —
|
|
[целочисленная случайность](randomness.md).
|
|
- **Торговля получает готовые строки страниц и возвращает поток событий
|
|
вместе с покупками для бэкенда** — [шов торговых событий](commerce-seam.md).
|
|
- **Сутки принадлежат поясу счетчика, а `UTCEventTime` остается абсолютной
|
|
меткой** — [время модельного дня](counter-time.md).
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
seed["Корневое зерно"] --> streams["Подпотоки"]
|
|
streams --> cohorts["Когорты"]
|
|
cohorts --> audience["Аудитория дня"]
|
|
audience --> visits["Визиты"]
|
|
visits --> output["Выход day.stream"]
|
|
output --> events["Поток событий"]
|
|
output --> backend["Заказы дня<br/>orders.of_day"]
|
|
```
|
|
|
|
За правой ветвью начинается отдельный набор документов —
|
|
[устройство заказов](../orders/README.md).
|
|
|
|
## Живой проход
|
|
|
|
Из каталога `generator/` одна команда собирает канонический D0 и показывает
|
|
все стадии на одном экране:
|
|
|
|
```sh
|
|
make demo
|
|
```
|
|
|
|
Когорту и аудиторию пример получает через открытый интерфейс плана, а визиты
|
|
считает группировкой выходных строк по `VisitID`. Код прохода —
|
|
[`demo.main`](../../../generator/src/clickstream_generator/demo.py).
|
|
|
|
## Родословная
|
|
|
|
Устройство генератора и основания решений записаны в [спеке этапа
|
|
2](../../specs/2026-08-01-generator.md), а границы двух источников и склейки —
|
|
в [мастер-спеке стенда](../../specs/2026-07-30-stand-v2-realism.md).
|
|
Основания трех решений записаны в
|
|
[ADR 0015](../../adr/0015-counter-timezone.md),
|
|
[ADR 0016](../../adr/0016-cookie-passport.md) и
|
|
[ADR 0017](../../adr/0017-order-numbering.md), а спека этапа 2 закрыта.
|
|
Путеводитель появился по тикету
|
|
[#48](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/48):
|
|
он отвечает на другой вопрос — как пройти принятое устройство по коду.
|