From fb97091cb976aaf741e38b917448b3586e24d5b7 Mon Sep 17 00:00:00 2001 From: poduck Date: Mon, 22 Dec 2025 01:45:22 -0500 Subject: [PATCH] Add max_automation_runs quota to billing plans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a new integer feature to track monthly automation flow executions. Quotas are set to 4× the monthly appointment limit per plan: - Free: 0 (no automations) - Starter: 2,000 (500 appointments × 4 flows) - Growth: 8,000 (2,000 appointments × 4 flows) - Pro: 40,000 (10,000 appointments × 4 flows) - Enterprise: Unlimited 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../billing/management/commands/billing_seed_catalog.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/smoothschedule/smoothschedule/billing/management/commands/billing_seed_catalog.py b/smoothschedule/smoothschedule/billing/management/commands/billing_seed_catalog.py index bd2e6c57..f6943b93 100644 --- a/smoothschedule/smoothschedule/billing/management/commands/billing_seed_catalog.py +++ b/smoothschedule/smoothschedule/billing/management/commands/billing_seed_catalog.py @@ -50,6 +50,7 @@ FEATURES = [ {"code": "max_email_per_month", "name": "Monthly Emails", "description": "Maximum emails per month", "feature_type": "integer", "category": "limits", "tenant_field_name": "max_email_per_month", "display_order": 80}, {"code": "max_storage_mb", "name": "Storage (MB)", "description": "File storage limit in megabytes", "feature_type": "integer", "category": "limits", "tenant_field_name": "max_storage_mb", "display_order": 90}, {"code": "max_api_calls_per_day", "name": "Daily API Calls", "description": "Maximum API calls per day", "feature_type": "integer", "category": "limits", "tenant_field_name": "max_api_calls_per_day", "display_order": 100}, + {"code": "max_automation_runs", "name": "Monthly Automation Runs", "description": "Maximum automation flow executions per month", "feature_type": "integer", "category": "limits", "tenant_field_name": "max_automation_runs", "display_order": 110}, # --- Payments & Revenue --- {"code": "payment_processing", "name": "Online Payments", "description": "Accept online payments from customers", "feature_type": "boolean", "category": "payments", "tenant_field_name": "can_accept_payments", "display_order": 10}, @@ -134,6 +135,7 @@ PLANS = [ "max_api_calls_per_day": 0, "max_sms_per_month": 0, "max_public_pages": 0, + "max_automation_runs": 0, # No automations on free plan }, }, { @@ -172,6 +174,7 @@ PLANS = [ "max_api_calls_per_day": 0, "max_sms_per_month": 0, "max_public_pages": 1, + "max_automation_runs": 2000, # 500 appointments × 4 flows }, }, { @@ -218,6 +221,7 @@ PLANS = [ "max_storage_mb": 10000, "max_api_calls_per_day": 10000, "max_public_pages": 5, + "max_automation_runs": 8000, # 2,000 appointments × 4 flows }, }, { @@ -273,6 +277,7 @@ PLANS = [ "max_storage_mb": 50000, "max_api_calls_per_day": 50000, "max_public_pages": 10, + "max_automation_runs": 40000, # 10,000 appointments × 4 flows }, }, { @@ -334,6 +339,7 @@ PLANS = [ "max_storage_mb": None, "max_api_calls_per_day": None, "max_public_pages": None, + "max_automation_runs": None, # Unlimited }, }, ]