docs(specs): приток посетителей и фейкеры без гвоздя — вычитка владельца
- Зачем:
- вычитка спеки на приёмке нашла дыру: состав мира читался как
замкнутая труппа без новых посетителей — неправдоподобный магазин.
- Что:
- раздел 1: состав не замкнут — план задаёт календарь появления кук,
доля одноразовых высока; приток — часть плана, не мутация.
- раздел 6: «Faker» ослаблен до «посточные фейкеры (Faker, mimesis)»,
выбор библиотеки — этапу 2; там же оговорка про таблицы-литералы.
- раздел 9: к интерфейсу запуска добавлены вопросы «кто зовёт
генератор (даги world_init/next_day)» и «в каком контейнере живёт».
- CONTEXT.md: в «Состав мира» добавлен календарь появления.
- Проверка:
- вычитка; правки точечные, решения развилок не пересматриваются.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -12,9 +12,9 @@
|
||||
_Избегать_: склад, склад данных
|
||||
|
||||
**Состав мира**:
|
||||
Постоянная часть мира генератора — популяция посетителей, их привычки,
|
||||
календарь двухкуковых пар. Чистая функция зерна: вычисляется при старте
|
||||
любого процесса, между прогонами не хранится.
|
||||
Постоянная часть мира генератора — популяция посетителей с календарём их
|
||||
появления, привычки, календарь двухкуковых пар. Чистая функция зерна:
|
||||
вычисляется при старте любого процесса, между прогонами не хранится.
|
||||
_Избегать_: состояние мира
|
||||
|
||||
**Ось модельного времени**:
|
||||
|
||||
@@ -48,6 +48,13 @@
|
||||
плана состава, а не копятся в состоянии. Глобальные инварианты («каждый
|
||||
двухкуковый покупатель заказал с обеих кук») гарантируются планом —
|
||||
счётчики манифеста известны до генерации событий.
|
||||
- **Состав не замкнут: посетители появляются и уходят.** План состава задаёт
|
||||
календарь появления — у каждого посетителя есть дата первого визита и
|
||||
профиль возвратов, заметная доля кук одноразовая, как в живом трафике.
|
||||
Новые посетители появляются на всём протяжении оси: uniq(ClientID) растёт
|
||||
с горизонтом, DAU и MAU не сходятся в одно число. Приток — часть плана, а
|
||||
не мутация: счётчики манифеста по-прежнему известны до генерации
|
||||
(уточнение по вычитке владельца, 2026-08-01).
|
||||
- **Своя ось модельного времени.** Мир рождается в фиксированный день D0
|
||||
(понедельник — см. раздел 5); реальный календарь в модели не участвует.
|
||||
Между прогонами живут только зерно и позиция на оси: выключенный ноутбук —
|
||||
@@ -278,8 +285,11 @@ pytest-тест с маркером `perf` и таймаутом-обрубан
|
||||
звать; деньги — в целых копейках.
|
||||
- **Случайные значения — векторно из numpy (PCG64)**; посточный цикл — лишь
|
||||
там, где логика действительно посточная (цепочки сессий).
|
||||
- **Faker — только для справочников** (каталог, имена), не в горячем цикле:
|
||||
он медленнее numpy на 2–3 порядка.
|
||||
- **Посточные фейкеры (Faker, mimesis) — только для справочников** (каталог
|
||||
и прочие справочные строки), не в горячем цикле: они медленнее numpy на
|
||||
2–3 порядка. Выбор библиотеки — этапу 2: справочники генерируются один
|
||||
раз, скорость безразлична; возможно, хватит таблиц-литералов в коде и
|
||||
фейкер не понадобится вовсе.
|
||||
- **Сериализация — через единственный канонический сериализатор** (orjson);
|
||||
прямых `json.dumps` по коду нет.
|
||||
- **Распараллеливание — multiprocessing по модельным дням**; внутри дня —
|
||||
@@ -315,7 +325,8 @@ pytest-тест с маркером `perf` и таймаутом-обрубан
|
||||
Осталось из тумана карты — вопросы уровня тикетов, не развилок:
|
||||
|
||||
- интерфейс запуска генератора (CLI / цели make) и как он делит режимы
|
||||
проигрывателя;
|
||||
проигрывателя; кто его зовёт в стенде — даги `world_init`/`next_day` из
|
||||
оценки мастер-спеки (раздел 9) — и в каком контейнере он живёт;
|
||||
- формат описания мира и конфигурации (что константа кода, что параметр);
|
||||
- как фиксируется «зерновой» мир конца этапа 2 (раздел 9 мастер-спеки):
|
||||
с манифестным решением напрашивается мини-манифест зернового мира — форму
|
||||
|
||||
Reference in New Issue
Block a user