feat(generator): добавлен артефакт стартовой истории
- Зачем: - чистый стенд должен восстанавливать стартовую историю без повторной генерации. - Что: - добавлены export/import артефакта через Kafka и compact-топики. - добавлена manifest-aware сверка ClickHouse и защита от смешения state. - добавлен runbook использования стартовой истории. - Проверка: - uv run --with-requirements generator/requirements.txt pytest generator/tests -q. - bash -n scripts/check_startup_history_manifest.sh scripts/export_startup_history_artifact.sh scripts/import_startup_history_artifact.sh. - git diff --check.
This commit is contained in:
@@ -62,6 +62,16 @@ def _kafka_importer():
|
||||
return _facade_attr("_import_kafka", _import_kafka)
|
||||
|
||||
|
||||
def kafka_event_value_json(event: dict) -> str:
|
||||
"""Возвращает JSON value ровно в формате Kafka producer генератора."""
|
||||
return json.dumps(event)
|
||||
|
||||
|
||||
def kafka_event_value_bytes(event: dict) -> bytes:
|
||||
"""Возвращает Kafka value bytes для события генератора."""
|
||||
return kafka_event_value_json(event).encode("utf-8")
|
||||
|
||||
|
||||
@dataclass
|
||||
class BatchRecord:
|
||||
"""Запись об отправленном батче."""
|
||||
@@ -380,7 +390,7 @@ class KafkaPublisher:
|
||||
logger.info(f"Connecting to Kafka at {self.bootstrap_servers}")
|
||||
self.producer = KafkaProducerCls(
|
||||
bootstrap_servers=self.bootstrap_servers,
|
||||
value_serializer=lambda v: json.dumps(v).encode("utf-8"),
|
||||
value_serializer=kafka_event_value_bytes,
|
||||
key_serializer=lambda k: k.encode("utf-8") if k else None,
|
||||
batch_size=16384,
|
||||
linger_ms=100,
|
||||
|
||||
Reference in New Issue
Block a user