From 41cfbc00ddb9f36db18d9e02ddd517d65ae1177c Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 14 Jan 2026 17:10:32 +0100 Subject: dashboard/app: show crash report on AI job page --- dashboard/app/ai.go | 27 +++++++++++++++++++++------ dashboard/app/templates/ai_job.html | 5 +++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/dashboard/app/ai.go b/dashboard/app/ai.go index 511865da3..8d8767832 100644 --- a/dashboard/app/ai.go +++ b/dashboard/app/ai.go @@ -8,6 +8,7 @@ import ( "context" "encoding/json" "fmt" + "html/template" "net/http" "slices" "strings" @@ -33,8 +34,9 @@ type uiAIJobPage struct { Header *uiHeader Job *uiAIJob // The slice contains the same single Job, just for HTML templates convenience. - Jobs []*uiAIJob - Trajectory []*uiAITrajectorySpan + Jobs []*uiAIJob + CrashReport template.HTML + Trajectory []*uiAITrajectorySpan } type uiAIJob struct { @@ -131,12 +133,25 @@ func handleAIJobPage(ctx context.Context, w http.ResponseWriter, r *http.Request if err != nil { return err } + var args map[string]any + if job.Args.Valid { + args = job.Args.Value.(map[string]any) + } + var crashReport template.HTML + if reportID, _ := args["CrashReportID"].(json.Number).Int64(); reportID != 0 { + report, _, err := getText(ctx, textCrashReport, reportID) + if err != nil { + return err + } + crashReport = linkifyReport(report, args["KernelRepo"].(string), args["KernelCommit"].(string)) + } uiJob := makeUIAIJob(job) page := &uiAIJobPage{ - Header: hdr, - Job: uiJob, - Jobs: []*uiAIJob{uiJob}, - Trajectory: makeUIAITrajectory(trajectory), + Header: hdr, + Job: uiJob, + Jobs: []*uiAIJob{uiJob}, + CrashReport: crashReport, + Trajectory: makeUIAITrajectory(trajectory), } return serveTemplate(w, "ai_job.html", page) } diff --git a/dashboard/app/templates/ai_job.html b/dashboard/app/templates/ai_job.html index 34c7d39e8..8f2526c63 100644 --- a/dashboard/app/templates/ai_job.html +++ b/dashboard/app/templates/ai_job.html @@ -41,6 +41,11 @@ Detailed info on a single AI job execution. {{end}} {{end}} + {{if .CrashReport}} +
Crash report:
+
{{.CrashReport}}

+ {{end}} + -- cgit mrf-deployment
Trajectory: