"""배포 확정 감사 로그 (스펙 §5-2). 누가 / 언제 / 어떤 repo 를 / 어떤 버전으로 배포했는지 append-only JSONL 로 남긴다. 이전 버전(from_version)도 기록해 사고 시 롤백 대상을 즉시 파악할 수 있게 한다. """ from __future__ import annotations import json from datetime import datetime, timezone from typing import Any from .config import get_settings def record_deploy( *, repo_uuid: str, repo_name: str, from_version: int | None, to_version: int | None, publication_href: str, operator: str = "operator", # TODO(auth): 로그인 도입 시 실제 사용자. 배포 시 비밀번호 재확인 예정. ) -> dict[str, Any]: entry = { "ts": datetime.now(timezone.utc).isoformat(), "action": "deploy", "operator": operator, "repo_uuid": repo_uuid, "repo_name": repo_name, "from_version": from_version, "to_version": to_version, "publication": publication_href, } with open(get_settings().audit_log_path, "a", encoding="utf-8") as fh: fh.write(json.dumps(entry, ensure_ascii=False) + "\n") return entry