fix(diarization-ui): treat stored timestamps as UTC in jobs elapsed counter
This commit is contained in:
30
app.py
30
app.py
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user