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"}} +
+
+
+

{{icon "bell"}}告警中心

+
来自所有设备的实时告警记录,按时间倒序排列。
+
+
+
+ +
+
+ {{if .AlarmRecords}} + + + + + + + + + + + + + + {{range .AlarmRecords}} + + + + + + + + + + {{end}} + +
时间设备通道规则目标置信度截图
{{.Timestamp}} + {{.DeviceID}} + {{.Channel}} + {{.RuleName}} + {{if .ObjectLabel}}{{.ObjectLabel}}{{else}}-{{end}}{{if .Confidence}}{{.Confidence}}{{else}}-{{end}} + {{if .SnapshotURL}} + 查看截图 + {{else}}-{{end}} + {{if .ClipURL}} + 视频片段 + {{end}} +
+ {{else}} +
+
暂无告警记录
+
设备尚未上报告警,或告警收集服务尚未启动。
+
+ {{end}} +
+
+{{end}} diff --git a/internal/web/ui/templates/layout.html b/internal/web/ui/templates/layout.html index 74b851c..ddb22c3 100644 --- a/internal/web/ui/templates/layout.html +++ b/internal/web/ui/templates/layout.html @@ -35,6 +35,7 @@