docs(handbook): упрощен язык путеводителя по стенду

Зачем: помочь учащемуся понять путь данных и работу служб перед выполнением заданий.

Что: вычитаны оглавление и пять глав, пояснены термины, убраны внутренние метафоры и повторы. Уточнены пояснения к SQL и показателям мониторинга.

Проверка: 62 локальные ссылки и 6 входящих ссылок на разделы проверены; 8 блоков SQL и схем сохранены. git diff --cached --check прошел.
This commit is contained in:
ddadmin committed 2026-09-13 13:02:40 -04:00
1 parent ce15836093
commit 915e976fc2
6 files changed
+225 -193

No files matched your search

+34 -26
View File
@@ -1,42 +1,49 @@
# Генератор: откуда берутся данные
Генератор изображает две системы интернет-магазина. Первая — счетчик на сайте,
он шлет события в топик `hits`. Вторая — бэкенд магазина, он раз в модельные
сутки выгружает слепок заказов в топик `orders`.
Генератор имитирует работу двух систем интернет-магазина. Счетчик
на сайте отправляет записи о действиях посетителей в топик `hits`. Серверная часть
магазина раз в модельные сутки выгружает состояние заказов в топик `orders`.
Эта дневная выгрузка называется слепком.
## Что он производит
Событие — широкая строка по образцу выгрузки Яндекс Метрики. Генератор создает
три вида событий: просмотр страницы, корзину и покупку. Все колонки перечислены
Событие содержит сведения о действии посетителя: например, время,
адрес страницы и идентификатор посетителя. Формат соответствует образцу
выгрузки Яндекс Метрики. Генератор создает три вида событий: просмотр
страницы, добавление в корзину и покупку. Все колонки перечислены
в [описании выгрузки](../formats/clickstream-event.md).
Заказ — та же покупка, но записанная бэкендом магазина, с суммами в деньгах.
Семь модельных дней после оформления заказ еще может измениться, поэтому каждый
дневной слепок несет заказы за последние семь дней в их текущем состоянии.
Устройство и форма слепка разобраны в [отдельном
Заказ содержит сведения о покупке со стороны магазина: товары, суммы
и состояние заказа. После оформления он еще может измениться, например
при отмене. Каждый дневной слепок содержит текущее состояние заказов,
оформленных за последние семь модельных дней. Состав и формат слепка
разобраны в [отдельном
справочнике](../architecture/orders/snapshot.md).
## Почему данные всегда одни и те же
Генератор не берет случайность извне. Все его случайные решения выводятся из
[зерна](../architecture/generator/seeds.md) — одного числа в настройках — и из
номера дня. То же зерно и тот же номер дня дают ровно те же события, поэтому
стартовый мир одинаков при каждом `make up`.
Случайные решения генератора зависят от заданного числа —
[зерна генерации](../architecture/generator/seeds.md) — и номера дня.
При неизменных настройках и версии генератора одинаковые зерно и день
дают одинаковые события. Поэтому при создании стенда вы каждый раз
получаете те же начальные данные. Повторный `make up` на работающем стенде
сохраняет уже загруженные данные.
Рядом лежит паспорт мира, `data/world-inventory.json`: зерно, версия генератора
и по строке на каждый день с числом событий и контрольной суммой. По нему
проверяют, что генератор собрал тот же мир, что и раньше, и что в ODS все
доехало без потерь. Паспорт описывает только восемь дней стартового мира.
В файле `data/world-inventory.json` записаны зерно, версия генератора,
число событий и контрольная сумма за каждый из восьми начальных дней.
В документации этот файл называется паспортом мира. С ним можно сверить
результат генерации и проверить, все ли события загрузились в ODS.
## Кто его запускает
На стенде генератором управляют [даги модельного
времени](airflow-dags.md#даги-мира). Его можно запустить и напрямую. Команды
собраны в [справочнике мира](../architecture/world.md#как-запустить-генератор).
собраны в [справочнике генератора и модельного
времени](../architecture/world.md#как-запустить-генератор).
У генератора два режима. Пакетный отправляет весь день разом. Живой шлет
события по ходу модельных суток; сутки идут ускоренно и занимают около двадцати
четырех минут.
У генератора два режима. Пакетный отправляет все события дня без пауз.
В живом режиме события поступают постепенно, как в работающем магазине,
но время идет ускоренно: модельные сутки занимают около 24 минут.
## Посмотрите сами
@@ -50,13 +57,14 @@ GROUP BY EventDate
ORDER BY EventDate;
```
Сравните первые восемь дней с восемью строками в [паспорте
мира](../../data/world-inventory.json): числа совпадут. Дни, сыгранные после
стартового мира, в паспорте не записаны. Так и задумано.
Сравните число событий за каждый из первых восьми дней со значением
`events` за ту же дату в [паспорте мира](../../data/world-inventory.json).
Числа должны совпасть. Если вы уже генерировали следующие дни,
в результате запроса будут дополнительные даты; в паспорте их нет.
## Куда дальше
Подробнее генератор разобран в [README папки
`generator/`](../../generator/README.md) и в [справочнике его
устройства](../architecture/generator/README.md). На этом путеводитель
заканчивается: дальше справочники и [учебные задания](../labs/README.md).
устройства](../architecture/generator/README.md). Теперь можно переходить
к [учебным заданиям](../labs/README.md).