From 57fd2f22f04d457d370c19d6ba035e985d1426d9 Mon Sep 17 00:00:00 2001 From: Urtzi Alfaro Date: Sun, 21 Sep 2025 15:51:58 +0200 Subject: [PATCH] Add subcription level filtering 2 --- gateway/app/middleware/subscription.py | 16 ++++++++-------- services/tenant/app/api/subscriptions.py | 9 ++++++--- .../app/repositories/subscription_repository.py | 9 ++++++--- .../app/services/subscription_limit_service.py | 3 ++- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/gateway/app/middleware/subscription.py b/gateway/app/middleware/subscription.py index c29ba73e..3d35ce8d 100644 --- a/gateway/app/middleware/subscription.py +++ b/gateway/app/middleware/subscription.py @@ -29,34 +29,34 @@ class SubscriptionMiddleware(BaseHTTPMiddleware): # Analytics routes - require different levels based on actual app routes r'/api/v1/tenants/[^/]+/analytics/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' # General analytics require Professional+ + 'minimum_level': 'basic' # Changed to basic to allow all tiers access to analytics }, r'/api/v1/tenants/[^/]+/forecasts/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' # Forecasting requires Professional+ + 'minimum_level': 'basic' # Changed to basic to allow all tiers access to forecasting }, r'/api/v1/tenants/[^/]+/predictions/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' # Predictions require Professional+ + 'minimum_level': 'basic' # Changed to basic to allow all tiers access to predictions }, - # Training and AI models - Professional+ + # Training and AI models - Now available to all tiers r'/api/v1/tenants/[^/]+/training/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' + 'minimum_level': 'basic' # Changed to basic to allow all tiers access to training }, r'/api/v1/tenants/[^/]+/models/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' + 'minimum_level': 'basic' # Changed to basic to allow all tiers access to models }, # Advanced production features - Professional+ r'/api/v1/tenants/[^/]+/production/optimization/.*': { 'feature': 'analytics', - 'minimum_level': 'advanced' + 'minimum_level': 'basic' }, # Enterprise-only features r'/api/v1/tenants/[^/]+/statistics.*': { 'feature': 'analytics', - 'minimum_level': 'predictive' # Advanced stats for Enterprise only + 'minimum_level': 'basic' # Advanced stats for Enterprise only } } diff --git a/services/tenant/app/api/subscriptions.py b/services/tenant/app/api/subscriptions.py index 5fba3655..555cc26a 100644 --- a/services/tenant/app/api/subscriptions.py +++ b/services/tenant/app/api/subscriptions.py @@ -262,7 +262,8 @@ async def get_available_plans(): "analytics": "basic", "support": "email", "trial_days": 14, - "locations": "1_location" + "locations": "1_location", + "ai_model_configuration": "basic" # Added AI model configuration for all tiers }, "trial_available": True }, @@ -282,7 +283,8 @@ async def get_available_plans(): "analytics": "advanced", "support": "priority_24_7", "trial_days": 14, - "locations": "1_2_locations" + "locations": "1_2_locations", + "ai_model_configuration": "advanced" # Enhanced AI model configuration for Professional }, "trial_available": True, "popular": True @@ -304,7 +306,8 @@ async def get_available_plans(): "api_access": "personalized", "account_manager": True, "demo": "personalized", - "locations": "unlimited_obradores" + "locations": "unlimited_obradores", + "ai_model_configuration": "enterprise" # Full AI model configuration for Enterprise }, "trial_available": False, "contact_sales": True diff --git a/services/tenant/app/repositories/subscription_repository.py b/services/tenant/app/repositories/subscription_repository.py index d33e7628..17a3b7bb 100644 --- a/services/tenant/app/repositories/subscription_repository.py +++ b/services/tenant/app/repositories/subscription_repository.py @@ -410,7 +410,8 @@ class SubscriptionRepository(TenantBaseRepository): "analytics": "basic", "support": "email", "trial_days": 14, - "locations": "1_location" + "locations": "1_location", + "ai_model_configuration": "basic" # Added AI model configuration for all tiers } }, "professional": { @@ -427,7 +428,8 @@ class SubscriptionRepository(TenantBaseRepository): "analytics": "advanced", "support": "priority_24_7", "trial_days": 14, - "locations": "1_2_locations" + "locations": "1_2_locations", + "ai_model_configuration": "advanced" # Enhanced AI model configuration for Professional } }, "enterprise": { @@ -445,7 +447,8 @@ class SubscriptionRepository(TenantBaseRepository): "api_access": "personalized", "account_manager": True, "demo": "personalized", - "locations": "unlimited_obradores" + "locations": "unlimited_obradores", + "ai_model_configuration": "enterprise" # Full AI model configuration for Enterprise } } } diff --git a/services/tenant/app/services/subscription_limit_service.py b/services/tenant/app/services/subscription_limit_service.py index 1d43fc1d..2bd934ab 100644 --- a/services/tenant/app/services/subscription_limit_service.py +++ b/services/tenant/app/services/subscription_limit_service.py @@ -53,7 +53,8 @@ class SubscriptionLimitService: "demand_prediction": "basic", "production_reports": "basic", "analytics": "basic", - "support": "email" + "support": "email", + "ai_model_configuration": "basic" # Added AI model configuration for all tiers } }