fix(diarization-ui): treat stored timestamps as UTC in jobs elapsed counter

This commit is contained in:
2026-03-21 15:27:43 +01:00
parent 69c5ff7989
commit 5efd08674b

30
app.py
View File

@@ -728,12 +728,26 @@ def prompt_delete(prompt_id: int):
return HTMLResponse("<meta http-equiv='refresh' content='0; url=/prompts'>")
def _parse_utcish(ts: Optional[str]) -> Optional[datetime]:
if not ts:
return None
try:
return datetime.fromisoformat(str(ts).replace("Z", "+00:00")).replace(tzinfo=None)
except Exception:
try:
return datetime.fromisoformat(str(ts))
except Exception:
return None
def _fmt_elapsed(start_iso: Optional[str], end_iso: Optional[str] = None) -> str:
if not start_iso:
s = _parse_utcish(start_iso)
if not s:
return "-"
try:
s = datetime.fromisoformat(start_iso)
e = datetime.fromisoformat(end_iso) if end_iso else datetime.now()
e = _parse_utcish(end_iso) if end_iso else datetime.utcnow()
if not e:
e = datetime.utcnow()
sec = max(0, int((e - s).total_seconds()))
if sec < 60:
return f"{sec}s"
@@ -834,10 +848,16 @@ def jobs_page(queued: Optional[int] = None):
<div id='jobs-status' class='hint'>Live-Update aktiv …</div>
<div id='jobs-root'>{pre}</div>
<script>
function parseUtcish(ts) {{
if(!ts) return NaN;
const hasZone = /Z$|[+-]\d\d:\d\d$/.test(ts);
return Date.parse(hasZone ? ts : (ts + 'Z')); // DB stores UTC without suffix
}}
function since(ts, endTs=null) {{
if(!ts) return '-';
const end = endTs ? Date.parse(endTs) : Date.now();
const s = Math.max(0, Math.floor((end-Date.parse(ts))/1000));
const startMs = parseUtcish(ts);
const end = endTs ? parseUtcish(endTs) : Date.now();
const s = Math.max(0, Math.floor((end-startMs)/1000));
if (s<60) return s+'s';
const m = Math.floor(s/60); if (m<60) return m+'m '+(s%60)+'s';
const h = Math.floor(m/60); return h+'h '+(m%60)+'m';