mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-01 21:10:13 +00:00
feat: add resource picker and multi-resource report generation
Replace manual resource ID entry with a searchable, filterable resource picker that uses live WebSocket state. Support selecting multiple resources (up to 50) for combined fleet reports. Multi-resource PDFs include a cover page, fleet summary table with aggregate health status, and condensed per-resource detail pages with overlaid CPU/memory charts. Multi-resource CSVs include a summary section followed by interleaved time-series data with resource columns. New POST /api/admin/reports/generate-multi endpoint handles multi-resource requests while the existing single-resource GET endpoint remains unchanged. Also fixes resource ID validation regex to allow colons used in VM/container IDs (e.g., "instance:node:vmid").
This commit is contained in:
parent
dcfa8cf0ba
commit
5c1487e406
11 changed files with 2015 additions and 47 deletions
|
|
@ -106,10 +106,31 @@ type DiskInfo struct {
|
|||
WearLevel int // 0-100, percentage of life REMAINING (100 = healthy, 0 = end of life, -1 = unknown)
|
||||
}
|
||||
|
||||
// MultiReportRequest defines the parameters for generating a multi-resource report.
|
||||
type MultiReportRequest struct {
|
||||
Resources []MetricReportRequest // One per resource, each with enrichment
|
||||
Format ReportFormat
|
||||
Start time.Time
|
||||
End time.Time
|
||||
Title string
|
||||
MetricType string
|
||||
}
|
||||
|
||||
// MultiReportData holds the data for multi-resource report generation.
|
||||
type MultiReportData struct {
|
||||
Title string
|
||||
Start time.Time
|
||||
End time.Time
|
||||
GeneratedAt time.Time
|
||||
Resources []*ReportData // Reuse existing ReportData per resource
|
||||
TotalPoints int
|
||||
}
|
||||
|
||||
// Engine defines the interface for report generation.
|
||||
// This allows the enterprise version to provide PDF/CSV generation.
|
||||
type Engine interface {
|
||||
Generate(req MetricReportRequest) (data []byte, contentType string, err error)
|
||||
GenerateMulti(req MultiReportRequest) (data []byte, contentType string, err error)
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue