feat(generator): эталонный мир в git и import по умолчанию
- Зачем:
- менти собирал мир генерацией (минуты и десятки минут CPU); теперь
готовый трёхдневный мир загружается импортом за ~2 минуты, и числа
у всех менти совпадают число-в-число (issue #3).
- Что:
- артефакт data/startup_history/reference-world.json.xz в git:
3 модельных дня daily-wave, ~850 МБ JSON → 32 МБ xz;
- чтение и запись артефакта понимают .xz потоково (lzma); пустое поле
artifact_path в пульте и make startup-history-import читают эталон;
- длительность профиля daily-wave стала 3d — в тон эталонному миру;
- предпроверка чистого стенда ставит зависимости генератора через uv;
экспорт и импорт разведены отдельными переменными Makefile;
- доки и runbook обновлены; новые контрактные тесты: xz round-trip
и дефолтные пути артефакта.
- Проверка:
- make test (210 + 31) и make lint зелёные; импорт на чистом стенде
за 2м03с, manifest совпал (280437 событий), Superset-проверка
зелёная; независимое ревью — APPROVED.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,18 @@ from types import SimpleNamespace
|
||||
import pytest
|
||||
|
||||
|
||||
def test_default_artifact_paths_keep_import_and_backfill_separate():
|
||||
"""Import читает эталонный мир, а backfill пишет в прежний файл."""
|
||||
from clickstream_generator.airflow_control import default_artifact_path
|
||||
|
||||
assert default_artifact_path("import") == (
|
||||
"/opt/airflow/data/startup_history/reference-world.json.xz"
|
||||
)
|
||||
assert default_artifact_path("backfill") == (
|
||||
"/opt/airflow/data/startup-history.json"
|
||||
)
|
||||
|
||||
|
||||
def test_build_control_env_uses_profile_duration_and_airflow_data_dir():
|
||||
"""Пульт строит env для backfill из профиля и каталога Airflow."""
|
||||
from clickstream_generator.airflow_control import build_control_env
|
||||
@@ -47,7 +59,7 @@ def test_import_env_requires_artifact_path_and_uses_backfill_contract():
|
||||
|
||||
assert env["GEN_RUN_MODE"] == "backfill"
|
||||
assert env["GEN_STATE_RESET"] == "true"
|
||||
assert env["GEN_HISTORY_DURATION"] == "2d"
|
||||
assert env["GEN_HISTORY_DURATION"] == "3d"
|
||||
|
||||
|
||||
def test_next_day_env_uses_world_settings_and_current_manifest_boundary():
|
||||
|
||||
Reference in New Issue
Block a user