fix(nodes): per-category client email lists behind the node count chips

NodeView carried only the category counts, so the nodes page chips
could hover to nothing but the category title. GetAll/recountByGuid
now emit online/active/disabled/depleted email lists from the same
bucketing pass as the counts (statuses gain the client email;
the online list is the counted set), and the chips pop the list
over with the inbounds page's popover pattern.
This commit is contained in:
Muse
2026-10-22 15:33:46 +00:00
parent e310abcba0
commit c91fb454a8
9 changed files with 376 additions and 45 deletions
+9
View File
@@ -847,6 +847,15 @@ type Node struct {
DisabledCount int `json:"disabledCount" gorm:"-" example:"3"`
DepletedCount int `json:"depletedCount" gorm:"-" example:"1"`
// Per-category client email lists backing the counts above, filled by
// the node read paths (GetAll / recountByGuid) from the same bucketing
// so the nodes page can show WHO is in each category on hover, not just
// how many. Read-time only, never persisted.
OnlineEmails []string `json:"-" gorm:"-"`
ActiveEmails []string `json:"-" gorm:"-"`
DisabledEmails []string `json:"-" gorm:"-"`
DepletedEmails []string `json:"-" gorm:"-"`
// ParentGuid + Transitive are set only when a node is surfaced as part of a
// node tree (#4983): direct nodes carry the master panel's own GUID, a
// transitive sub-node carries its parent node's GUID. Transitive nodes are