From edc53cb6eb5c71fb445bafafc0ebe9d4589f329d Mon Sep 17 00:00:00 2001 From: Roberto Musso Date: Fri, 20 Mar 2026 12:12:43 +0100 Subject: [PATCH] Default to power tier (unlimited) in dev when no subscription exists Users without a subscription row in dev get power tier so rate limits and quota checks don't block local development. In prod the fallback remains free tier as before. Co-Authored-By: Claude Sonnet 4.6 --- app/billing/tier_manager.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/billing/tier_manager.py b/app/billing/tier_manager.py index 5e3f93f..ed5f3de 100644 --- a/app/billing/tier_manager.py +++ b/app/billing/tier_manager.py @@ -81,16 +81,18 @@ class TierManager: async def get_tier(self, user_id: str, db: AsyncSession) -> BillingTier: """Return the current billing tier for ``user_id`` from the DB. - Falls back to ``'free'`` when no subscription row exists. + Falls back to ``'power'`` in dev (unlimited) or ``'free'`` in prod + when no subscription row exists. """ from app.models import Subscription # noqa: PLC0415 + from app.config.settings import settings # noqa: PLC0415 result = await db.execute( select(Subscription.tier).where(Subscription.user_id == user_id) ) tier: str | None = result.scalar_one_or_none() if tier is None or tier not in FEATURES: - return "free" + return "power" if settings.ENV == "dev" else "free" return tier # type: ignore[return-value] # ── Feature access ───────────────────────────────────────────────────