"""턴 로그 저장 — 연구 데이터 겸용, 삭제 금지 (CLAUDE.md). MVP: 로컬 jsonl 백엔드. 스키마는 2단계 그래프화를 염두에 둔 평면 레코드. """ from __future__ import annotations import json import time from pathlib import Path class PlaylogRepository: def __init__(self, path: str | Path = "logs/playlog.jsonl"): self.path = Path(path) self.path.parent.mkdir(parents=True, exist_ok=True) def append(self, record: dict) -> None: record = {"ts": round(time.time(), 3), **record} with self.path.open("a", encoding="utf-8") as f: f.write(json.dumps(record, ensure_ascii=False) + "\n")