Technician tool v0.1

Imported from the Google Drive folder 004-technician_tool/v0.1.
This commit is contained in:
kkallas committed 2026-09-26 16:11:07 +02:00
commit e5a33a1c34
28 files changed
+2988

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
"""Per-connection session log on disk (already redacted lines only)."""
from __future__ import annotations
import datetime as dt
import re
from pathlib import Path
from .logline import LogLine
SESSIONS_DIR = Path.home() / "KotaTechnicianTool" / "sessions"
class SessionLog:
def __init__(self, root: Path = SESSIONS_DIR):
self.root = root
self.path: Path | None = None
self._fh = None
def start(self, device_hint: str) -> Path:
self.stop()
self.root.mkdir(parents=True, exist_ok=True)
stamp = dt.datetime.now().strftime("%Y%m%d_%H%M%S")
safe = re.sub(r"[^A-Za-z0-9]+", "", device_hint)[:20] or "board"
self.path = self.root / f"session_{stamp}_{safe}.log"
self._fh = self.path.open("a", encoding="utf-8", newline="\n")
return self.path
def write(self, line: LogLine) -> None:
if self._fh is None:
return
ts = dt.datetime.fromtimestamp(line.host_time).strftime("%H:%M:%S.%f")[:-3]
self._fh.write(f"[{ts}] {line.text}\n")
self._fh.flush()
def stop(self) -> None:
if self._fh is not None:
self._fh.close()
self._fh = None