feat(groups): reset group traffic without touching client counters

The group page shows traffic counting per group, but the only reset
available zeroed every member client's up/down counters (and their
quotas) via bulkResetTraffic. Group traffic is a derived sum of client
traffic, so zeroing the group display previously required mutating the
clients themselves.

Add a display-only baseline: ClientGroup gains reset_up/reset_down
columns (additive, handled by AutoMigrate). ResetGroupTraffic snapshots
the group's current up/down sum into the baseline, and ListGroups now
reports max(0, sum - baseline). Client counters are left untouched and
no Xray restart is triggered. A new POST /panel/api/clients/groups/
resetTraffic endpoint drives it, creating the client_groups row when the
group exists only as a derived label.

The groups page action now calls the new endpoint; confirm/success
strings updated across all 13 locales to reflect group-only semantics.
This commit is contained in:
MHSanaei
2026-06-27 16:33:36 +02:00
parent d1c0d77023
commit 9b8a0c9b17
20 changed files with 281 additions and 41 deletions
+2 -2
View File
@@ -934,8 +934,8 @@
"deleteSuccess": "گروه از {count} کاربر پاک شد.",
"resetTraffic": "بازنشانی ترافیک",
"resetConfirmTitle": "بازنشانی ترافیک گروه {name}؟",
"resetConfirmContent": "این عمل آپلود/دانلود تمام {count} کاربر این گروه را صفر می‌کند.",
"resetSuccess": "ترافیک {count} کاربر بازنشانی شد.",
"resetConfirmContent": "این فقط شمارنده‌ی ترافیک گروه را صفر می‌کند؛ شمارنده‌ی تک‌تک کاربران دست‌نخورده می‌ماند.",
"resetSuccess": "ترافیک گروه {name} صفر شد.",
"adjustSuccess": "{count} کاربر در {name} تنظیم شد.",
"emptyForAction": "این گروه هنوز کاربری ندارد.",
"deleteGroupOnly": "حذف گروه (نگه داشتن کاربران)",