From f96e877370febbbc7df7975b3467dd0a6465f16e Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Mon, 22 Jun 2026 17:26:55 +0200 Subject: [PATCH] fix(nodes): count only expired/exhausted as 'ended', not disabled clients The per-node depleted (ended) count folded disabled clients in with expired/exhausted (expired || exhausted || !Enable), so the Nodes page 'ended' chip was inflated and inconsistent with the inbound page, where disabled and depleted are separate buckets. Count only expired/exhausted in both GetAll and recountByGuid so 'ended' means the same thing on both pages. --- internal/web/service/node.go | 2 +- internal/web/service/node_tree.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/web/service/node.go b/internal/web/service/node.go index 58ba65687..dba6aec29 100644 --- a/internal/web/service/node.go +++ b/internal/web/service/node.go @@ -187,7 +187,7 @@ func (s *NodeService) GetAll() ([]*model.Node, error) { } expired := row.ExpiryTime > 0 && row.ExpiryTime <= now exhausted := row.Total > 0 && row.Up+row.Down >= row.Total - if expired || exhausted || !row.Enable { + if expired || exhausted { depletedByNode[nodeID]++ } } diff --git a/internal/web/service/node_tree.go b/internal/web/service/node_tree.go index 1ecad16e3..b92e70e24 100644 --- a/internal/web/service/node_tree.go +++ b/internal/web/service/node_tree.go @@ -221,7 +221,7 @@ func (s *NodeService) recountByGuid(nodes []*model.Node, selfGuid string) { } expired := row.ExpiryTime > 0 && row.ExpiryTime <= now exhausted := row.Total > 0 && row.Up+row.Down >= row.Total - if expired || exhausted || !row.Enable { + if expired || exhausted { depletedByGuid[guid]++ } }