From 74b8a12742edd80c94aae1f4a9d6550b9121132d Mon Sep 17 00:00:00 2001 From: Yves Gugger Date: Tue, 16 Dec 2025 21:24:52 +0100 Subject: [PATCH] Fix tier-based monitoring: Scout users no longer get Tycoon-level checks Previously, the realtime (10-min) check job would check ALL tiers including Scout users, giving them free premium service. Now: - daily: checks ALL tiers (baseline service) - hourly: checks Trader + Tycoon only - realtime: checks Tycoon only (premium feature) --- backend/app/scheduler.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/app/scheduler.py b/backend/app/scheduler.py index b49ddf3..68d7b38 100644 --- a/backend/app/scheduler.py +++ b/backend/app/scheduler.py @@ -65,14 +65,22 @@ async def check_domains_by_frequency(frequency: str): async with AsyncSessionLocal() as db: # Get users with matching check frequency + # IMPORTANT: Higher tiers get MORE frequent checks, not the other way around + # - daily: checks ALL tiers (minimum service level for everyone) + # - hourly: checks Trader + Tycoon only + # - realtime: checks Tycoon only tiers_for_frequency = [] for tier, config in TIER_CONFIG.items(): - if config['check_frequency'] == frequency: + tier_freq = config['check_frequency'] + + if frequency == 'daily': + # Daily job checks ALL tiers (this is the baseline) tiers_for_frequency.append(tier) - # Realtime includes hourly and daily too (more frequent = superset) - elif frequency == 'realtime': + elif frequency == 'hourly' and tier_freq in ['hourly', 'realtime']: + # Hourly job checks Trader + Tycoon tiers_for_frequency.append(tier) - elif frequency == 'hourly' and config['check_frequency'] in ['hourly', 'realtime']: + elif frequency == 'realtime' and tier_freq == 'realtime': + # Realtime job checks ONLY Tycoon (premium feature) tiers_for_frequency.append(tier) # Get domains from users with matching subscription tier