fix: add loading state, widen nullable types, add API response guard in TrainResultsView

This commit is contained in:
pyr0ball 2026-05-02 20:49:34 -07:00
parent b077371107
commit 13d1a394d5

View file

@ -10,6 +10,8 @@
<button class="btn-retry" @click="loadResults">Retry</button> <button class="btn-retry" @click="loadResults">Retry</button>
</div> </div>
<div v-if="loading" class="loading-state" aria-live="polite">Loading</div>
<div v-if="!error && results.length === 0 && !loading" class="empty-notice"> <div v-if="!error && results.length === 0 && !loading" class="empty-notice">
No training results yet. Completed jobs will appear here. No training results yet. Completed jobs will appear here.
</div> </div>
@ -68,10 +70,10 @@ interface TrainResult {
job_id: string job_id: string
model_type: string model_type: string
base_model: string base_model: string
val_macro_f1: number val_macro_f1: number | null
val_accuracy: number val_accuracy: number | null
sample_count: number sample_count: number
duration_seconds: number duration_seconds: number | null
created_at: string created_at: string
} }
@ -88,8 +90,8 @@ async function loadResults() {
error.value = `Failed to load results (HTTP ${res.status}).` error.value = `Failed to load results (HTTP ${res.status}).`
return return
} }
const data = await res.json() as { results: TrainResult[] } const raw = await res.json() as { results?: TrainResult[] }
results.value = data.results ?? [] results.value = Array.isArray(raw?.results) ? raw.results : []
} catch { } catch {
error.value = 'Network error loading results.' error.value = 'Network error loading results.'
} finally { } finally {
@ -193,6 +195,12 @@ onMounted(() => loadResults())
border-radius: var(--radius-md, 0.5rem); border-radius: var(--radius-md, 0.5rem);
} }
.loading-state {
color: var(--color-text-muted, #4a5c7a);
font-size: 0.9rem;
padding: 0.75rem;
}
.results-table-wrap { overflow-x: auto; } .results-table-wrap { overflow-x: auto; }
.results-table { .results-table {