Spaces:
Sleeping
Sleeping
| import json | |
| from datetime import datetime | |
| from pathlib import Path | |
| class SessionLogger: | |
| def __init__(self, session_dir="sessions"): | |
| self.session_dir = Path(session_dir) | |
| self.session_dir.mkdir(exist_ok=True) | |
| self.session_id = datetime.now().strftime("%Y%m%d_%H%M%S") | |
| self.turns = [] | |
| self.start_time = datetime.now().isoformat() | |
| def log_turn(self, turn_number, user_message, counselor_message, disclosure_score, dimension_score, reason, mcts_trace=None): | |
| turn_log = { | |
| "timestamp": datetime.now().isoformat(), | |
| "turn_number": turn_number, | |
| "user_message": user_message, | |
| "counselor_message": counselor_message, | |
| "disclosure_score": disclosure_score, | |
| "dimension_score": dimension_score, | |
| "reason": reason, | |
| } | |
| if mcts_trace is not None: | |
| turn_log["mcts_trace"] = mcts_trace | |
| self.turns.append(turn_log) | |
| self._save() | |
| def _save(self): | |
| session_log = { | |
| "session_id": self.session_id, | |
| "start_time": self.start_time, | |
| "turns": self.turns | |
| } | |
| with open(self.session_dir / f"session_{self.session_id}.json", "w", encoding="utf-8") as f: | |
| json.dump(session_log, f, ensure_ascii=False, indent=4) | |
| def get_filepath(self): | |
| return str(self.session_dir / f"session_{self.session_id}.json") |