fix: avoid redundant premium squad restore updates

This commit is contained in:
3252a8
2026-05-13 15:11:56 +03:00
parent 2169fd8b50
commit a96007d48a
2 changed files with 150 additions and 15 deletions
+11 -14
View File
@@ -357,25 +357,22 @@ class TariffTrafficWorker:
should_limit = False
else:
should_limit = premium_used >= premium_limit
changed = (
int(sub.premium_baseline_bytes or 0) != premium_baseline
or int(sub.premium_topup_balance_bytes or 0) != premium_topup_balance
or int(getattr(sub, "premium_topup_used_bytes", 0) or 0) != premium_topup_used
or int(sub.premium_used_bytes or 0) != premium_used
or bool(sub.premium_is_limited) != should_limit
or getattr(sub, "premium_period_start_at", None) != premium_period_start
)
panel_needs_update = bool(sub.premium_is_limited) != should_limit
desired_squads = self.subscription_service._panel_squads_for_tariff(
tariff,
include_premium=not should_limit,
)
desired_set = self._internal_squad_uuid_set(desired_squads)
if isinstance(panel_user_dict, dict):
current_raw = panel_user_dict.get("activeInternalSquads") or panel_user_dict.get(
"active_internal_squads"
)
if desired_set != self._internal_squad_uuid_set(current_raw):
changed = True
current_known = False
current_raw = None
for key in ("activeInternalSquads", "active_internal_squads"):
if key in panel_user_dict:
current_raw = panel_user_dict.get(key)
current_known = True
break
if current_known and desired_set != self._internal_squad_uuid_set(current_raw):
panel_needs_update = True
sub.premium_baseline_bytes = premium_baseline
sub.premium_topup_balance_bytes = premium_topup_balance
sub.premium_topup_used_bytes = premium_topup_used
@@ -391,7 +388,7 @@ class TariffTrafficWorker:
premium_limit,
premium_period_start,
)
if not changed:
if not panel_needs_update:
return
squads = desired_squads