From 4c90ef88c980abcd444a2fbe5f9014b44a3b2b07 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 7 May 2026 10:31:03 +0800 Subject: [PATCH] feat: alarm center page with recent alarm records --- internal/web/ui.go | 11 +++++ internal/web/ui/templates/alarms.html | 59 +++++++++++++++++++++++++++ internal/web/ui/templates/layout.html | 1 + 3 files changed, 71 insertions(+) create mode 100644 internal/web/ui/templates/alarms.html diff --git a/internal/web/ui.go b/internal/web/ui.go index c59d8f3..4e33944 100644 --- a/internal/web/ui.go +++ b/internal/web/ui.go @@ -79,6 +79,7 @@ type PageData struct { ModelStatusBoard *service.ModelStatusBoard StandardResources []storage.StandardResourceRecord ResourceStatusBoard *service.ResourceStatusBoard + AlarmRecords []service.AlarmRecord Templates []service.Template Template *service.Template AssetTab string @@ -659,6 +660,7 @@ func (u *UI) Routes() (chi.Router, error) { r.Post("/models/sync", u.actionModelSync) r.Post("/resources/sync", u.actionResourceSync) r.Get("/diagnostics", u.pageDiagnostics) + r.Get("/alarms", u.pageAlarms) r.Get("/recognition", u.pageRecognition) r.Get("/logs", u.pageLogs) @@ -1442,6 +1444,15 @@ func (u *UI) pageDiagnostics(w http.ResponseWriter, r *http.Request) { u.render(w, r, "diagnostics", data) } +func (u *UI) pageAlarms(w http.ResponseWriter, r *http.Request) { + u.ensureDevicesLoaded() + data := PageData{Title: "告警中心", Devices: u.registry.GetDevices()} + if u.alarmCollector != nil { + data.AlarmRecords = u.alarmCollector.GetRecent(100) + } + u.render(w, r, "alarms", data) +} + func (u *UI) pageResources(w http.ResponseWriter, r *http.Request) { u.ensureDevicesLoaded() data := PageData{Title: "资源管理", Devices: u.registry.GetDevices()} diff --git a/internal/web/ui/templates/alarms.html b/internal/web/ui/templates/alarms.html new file mode 100644 index 0000000..eaaa186 --- /dev/null +++ b/internal/web/ui/templates/alarms.html @@ -0,0 +1,59 @@ +{{define "alarms"}} +
| 时间 | +设备 | +通道 | +规则 | +目标 | +置信度 | +截图 | +
|---|---|---|---|---|---|---|
| {{.Timestamp}} | ++ {{.DeviceID}} + | +{{.Channel}} | ++ {{.RuleName}} + | +{{if .ObjectLabel}}{{.ObjectLabel}}{{else}}-{{end}} | +{{if .Confidence}}{{.Confidence}}{{else}}-{{end}} | ++ {{if .SnapshotURL}} + 查看截图 + {{else}}-{{end}} + {{if .ClipURL}} + 视频片段 + {{end}} + | +