feat(billing): migrate frontend templates to feature provider system

Replace hardcoded subscription fields (orders_limit, products_limit,
team_members_limit) across 5 frontend pages with dynamic feature
provider APIs. Add admin convenience endpoint for store subscription
lookup. Remove legacy stubs (StoreSubscription, FeatureCode, Feature,
TIER_LIMITS, FeatureInfo, FeatureUpgradeInfo) and schema aliases.

Pages updated:
- Admin subscriptions: dynamic feature overrides editor
- Admin tiers: correct feature catalog/limits API URLs
- Store billing: usage metrics from /store/billing/usage
- Merchant subscription detail: tier.feature_limits rendering
- Admin store detail: new GET /admin/subscriptions/store/{id} endpoint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 15:18:16 +01:00
parent 922616c9e3
commit 1db7e8a087
19 changed files with 2508 additions and 1205 deletions

View File

@@ -6,48 +6,47 @@ This is the canonical location for billing schemas.
Usage:
from app.modules.billing.schemas import (
SubscriptionCreate,
SubscriptionResponse,
MerchantSubscriptionCreate,
MerchantSubscriptionResponse,
TierInfo,
)
"""
from app.modules.billing.schemas.subscription import (
# Tier schemas
TierFeatures,
TierLimits,
TierFeatureLimitResponse,
TierInfo,
# Subscription CRUD schemas
SubscriptionCreate,
SubscriptionUpdate,
SubscriptionResponse,
# Usage schemas
SubscriptionUsage,
UsageSummary,
SubscriptionStatusResponse,
# Subscription schemas
MerchantSubscriptionCreate,
MerchantSubscriptionUpdate,
MerchantSubscriptionResponse,
MerchantSubscriptionStatusResponse,
# Feature summary schemas
FeatureSummaryResponse,
# Limit check schemas
LimitCheckResult,
CanCreateOrderResponse,
CanAddProductResponse,
CanAddTeamMemberResponse,
FeatureCheckResponse,
)
from app.modules.billing.schemas.billing import (
# Subscription Tier Admin schemas
TierFeatureLimitEntry,
SubscriptionTierBase,
SubscriptionTierCreate,
SubscriptionTierUpdate,
SubscriptionTierResponse,
SubscriptionTierListResponse,
# Vendor Subscription schemas
VendorSubscriptionResponse,
VendorSubscriptionWithVendor,
VendorSubscriptionListResponse,
VendorSubscriptionCreate,
VendorSubscriptionUpdate,
# Merchant Subscription Admin schemas
MerchantSubscriptionAdminResponse,
MerchantSubscriptionWithMerchant,
MerchantSubscriptionListResponse,
MerchantSubscriptionAdminCreate,
MerchantSubscriptionAdminUpdate,
# Merchant Feature Override schemas
MerchantFeatureOverrideEntry,
MerchantFeatureOverrideResponse,
# Billing History schemas
BillingHistoryResponse,
BillingHistoryWithVendor,
BillingHistoryWithMerchant,
BillingHistoryListResponse,
# Checkout & Portal schemas
CheckoutRequest,
@@ -55,42 +54,44 @@ from app.modules.billing.schemas.billing import (
PortalSessionResponse,
# Stats schemas
SubscriptionStatsResponse,
# Feature Catalog schemas
FeatureDeclarationResponse,
FeatureCatalogResponse,
)
__all__ = [
# Tier schemas (subscription.py)
"TierFeatures",
"TierLimits",
"TierFeatureLimitResponse",
"TierInfo",
# Subscription CRUD schemas (subscription.py)
"SubscriptionCreate",
"SubscriptionUpdate",
"SubscriptionResponse",
# Usage schemas (subscription.py)
"SubscriptionUsage",
"UsageSummary",
"SubscriptionStatusResponse",
# Subscription schemas (subscription.py)
"MerchantSubscriptionCreate",
"MerchantSubscriptionUpdate",
"MerchantSubscriptionResponse",
"MerchantSubscriptionStatusResponse",
# Feature summary schemas (subscription.py)
"FeatureSummaryResponse",
# Limit check schemas (subscription.py)
"LimitCheckResult",
"CanCreateOrderResponse",
"CanAddProductResponse",
"CanAddTeamMemberResponse",
"FeatureCheckResponse",
# Subscription Tier Admin schemas (billing.py)
"TierFeatureLimitEntry",
"SubscriptionTierBase",
"SubscriptionTierCreate",
"SubscriptionTierUpdate",
"SubscriptionTierResponse",
"SubscriptionTierListResponse",
# Vendor Subscription schemas (billing.py)
"VendorSubscriptionResponse",
"VendorSubscriptionWithVendor",
"VendorSubscriptionListResponse",
"VendorSubscriptionCreate",
"VendorSubscriptionUpdate",
# Merchant Subscription Admin schemas (billing.py)
"MerchantSubscriptionAdminResponse",
"MerchantSubscriptionWithMerchant",
"MerchantSubscriptionListResponse",
"MerchantSubscriptionAdminCreate",
"MerchantSubscriptionAdminUpdate",
# Merchant Feature Override schemas (billing.py)
"MerchantFeatureOverrideEntry",
"MerchantFeatureOverrideResponse",
# Billing History schemas (billing.py)
"BillingHistoryResponse",
"BillingHistoryWithVendor",
"BillingHistoryWithMerchant",
"BillingHistoryListResponse",
# Checkout & Portal schemas (billing.py)
"CheckoutRequest",
@@ -98,4 +99,7 @@ __all__ = [
"PortalSessionResponse",
# Stats schemas (billing.py)
"SubscriptionStatsResponse",
# Feature Catalog schemas (billing.py)
"FeatureDeclarationResponse",
"FeatureCatalogResponse",
]