feat(audiobook): implement log streaming for project status updates and enhance progress tracking

This commit is contained in:
2026-03-10 16:27:01 +08:00
parent 230274bbc3
commit 01b6f4633e
5 changed files with 261 additions and 11 deletions

View File

@@ -0,0 +1,38 @@
from typing import Dict
_store: Dict[int, dict] = {}
def _ensure(project_id: int) -> dict:
if project_id not in _store:
_store[project_id] = {"lines": [], "done": False}
return _store[project_id]
def reset(project_id: int) -> None:
_store[project_id] = {"lines": [], "done": False}
def append_line(project_id: int, text: str) -> None:
s = _ensure(project_id)
s["lines"].append(text)
def append_token(project_id: int, token: str) -> None:
s = _ensure(project_id)
if s["lines"]:
s["lines"][-1] += token
else:
s["lines"].append(token)
def mark_done(project_id: int) -> None:
s = _ensure(project_id)
s["done"] = True
def get_snapshot(project_id: int) -> dict:
s = _store.get(project_id)
if not s:
return {"lines": [], "done": True}
return {"lines": list(s["lines"]), "done": s["done"]}