feat(generator): добавлен поток активных визитов по тикам
- Зачем: - генератор должен выпускать события визита по запланированным тикам, не приклеивая весь визит к одному запуску. - Что: - добавлен тиковый слой `TickStreamGenerator` с активными визитами и выпуском созревших событий. - добавлена валидация потолка активных визитов относительно потолка популяции. - сохранён событийный смысл `event_budget` и добавлен регрессионный тест против разгона интенсивности. - Проверка: - `uv run --with-requirements generator/requirements.txt pytest generator/tests -q` — 81 passed.
This commit is contained in:
@@ -30,6 +30,12 @@ class Config:
|
||||
max_session_events: int = field(
|
||||
default_factory=lambda: int(os.getenv("GEN_MAX_SESSION_EVENTS", "30"))
|
||||
)
|
||||
max_active_sessions: int = field(
|
||||
default_factory=lambda: int(os.getenv("GEN_MAX_ACTIVE_SESSIONS", "200"))
|
||||
)
|
||||
population_max: int = field(
|
||||
default_factory=lambda: int(os.getenv("GEN_POPULATION_MAX", "300"))
|
||||
)
|
||||
data_dir: Path = field(
|
||||
default_factory=lambda: Path(os.getenv("GEN_DATA_DIR", "/data"))
|
||||
)
|
||||
@@ -58,5 +64,11 @@ class Config:
|
||||
raise ValueError("GEN_LAMBDA_BASE_PER_MIN must be >= 1")
|
||||
if self.max_session_events < 1:
|
||||
raise ValueError("GEN_MAX_SESSION_EVENTS must be >= 1")
|
||||
if self.max_active_sessions < 1:
|
||||
raise ValueError("GEN_MAX_ACTIVE_SESSIONS must be >= 1")
|
||||
if self.population_max < 1:
|
||||
raise ValueError("GEN_POPULATION_MAX must be >= 1")
|
||||
if self.max_active_sessions >= self.population_max:
|
||||
raise ValueError("GEN_MAX_ACTIVE_SESSIONS must be < GEN_POPULATION_MAX")
|
||||
if not self.data_dir.exists():
|
||||
raise ValueError(f"Data directory does not exist: {self.data_dir}")
|
||||
|
||||
Reference in New Issue
Block a user