from pathlib import Path from src.config_loader import UnifiedLogSettings from src.models import UnifiedEvent,PersonAnalysisRecord,SessionSummary,LogConsistencyIssue from src.unified_event_logger import UnifiedEventLogger def test_four_csvs_bom_json_dedup(tmp_path:Path)->None: c=UnifiedLogSettings(True,str(tmp_path),True,True,True,True,1,True,True,True,True,False,False,"",True) l=UnifiedEventLogger(c,"exp","sid","stamp");l.open() e=UnifiedEvent("exp","sid","id","system","x",None,1,"t",1.,metadata={"日本語":"値"}) l.write_events([e,e]);r=PersonAnalysisRecord("exp","sid",1);l.write_analysis([r,r]);s=SessionSummary("exp","sid","t");l.write_session(s);l.write_session(s);l.write_issues([LogConsistencyIssue("unknown","warning",1,None,"m",{"日":"本"})]);l.close();l.close() assert len(list(tmp_path.glob("*.csv")))==4 assert all(p.read_bytes().startswith(b"\xef\xbb\xbf") for p in tmp_path.glob("*.csv")) assert "日本語" in (tmp_path/"stamp_exp_unified_events.csv").read_text(encoding="utf-8-sig")