Spaces:
Running
Running
| """Typed models for the processing log.""" | |
| from __future__ import annotations | |
| from dataclasses import dataclass | |
| class StageRun: | |
| """One row of processing_log: one (book, stage) attempt.""" | |
| id: int | |
| book_id: str | |
| stage: str | |
| started_at: str | |
| finished_at: str | None | |
| success: int | None # 1 / 0 / None=in-flight | |
| pages_done: int | None | |
| engine: str | None # model id, e.g. 'BAAI/bge-m3' | |
| provider: str | None # 'google' | 'deepinfra' | 'local' | ... | |
| backend: str | None # where it ran: 'FlagEmbedding-cuda', 'pymupdf', ... | |
| error: str | None | |
| duration_ms: int | None | |
| def outcome(self) -> str: | |
| if self.success == 1: | |
| return "success" | |
| if self.success == 0: | |
| return "failed" | |
| return "in-flight" | |
| def where(self) -> str: | |
| """One-line 'where did this run?' string for table display. | |
| Combines engine + provider + backend so the user can tell at a glance | |
| that 'bge-m3' was local FlagEmbedding on CUDA, not a DeepInfra call. | |
| """ | |
| parts: list[str] = [] | |
| if self.engine: | |
| parts.append(self.engine) | |
| suffix = " / ".join(p for p in (self.provider, self.backend) if p) | |
| if suffix: | |
| parts.append(f"({suffix})") | |
| return " ".join(parts) if parts else "—" | |