Improve onboarding

This commit is contained in:
Urtzi Alfaro
2025-12-18 13:26:32 +01:00
parent f76b3f8e6b
commit f10a2b92ea
42 changed files with 2175 additions and 984 deletions

View File

@@ -175,7 +175,7 @@ def upgrade() -> None:
sa.UniqueConstraint('tenant_id')
)
# Create subscriptions table with all current columns
# Create subscriptions table with all quota columns
op.create_table('subscriptions',
sa.Column('id', sa.UUID(), nullable=False),
sa.Column('tenant_id', sa.UUID(), nullable=False),
@@ -189,9 +189,33 @@ def upgrade() -> None:
sa.Column('cancellation_effective_date', sa.DateTime(timezone=True), nullable=True),
sa.Column('stripe_subscription_id', sa.String(255), nullable=True),
sa.Column('stripe_customer_id', sa.String(255), nullable=True),
# Basic resource limits
sa.Column('max_users', sa.Integer(), nullable=True),
sa.Column('max_locations', sa.Integer(), nullable=True),
sa.Column('max_products', sa.Integer(), nullable=True),
sa.Column('max_recipes', sa.Integer(), nullable=True),
sa.Column('max_suppliers', sa.Integer(), nullable=True),
# Daily/hourly quota limits
sa.Column('training_jobs_per_day', sa.Integer(), nullable=True),
sa.Column('forecast_generation_per_day', sa.Integer(), nullable=True),
sa.Column('api_calls_per_hour', sa.Integer(), nullable=True),
# Storage limits
sa.Column('file_storage_gb', sa.Integer(), nullable=True),
# Data access limits
sa.Column('dataset_size_rows', sa.Integer(), nullable=True),
sa.Column('forecast_horizon_days', sa.Integer(), nullable=True),
sa.Column('historical_data_access_days', sa.Integer(), nullable=True),
# Bulk operation limits
sa.Column('bulk_import_rows', sa.Integer(), nullable=True),
sa.Column('bulk_export_rows', sa.Integer(), nullable=True),
# Integration limits
sa.Column('webhook_endpoints', sa.Integer(), nullable=True),
sa.Column('pos_sync_interval_minutes', sa.Integer(), nullable=True),
# Reporting limits
sa.Column('report_retention_days', sa.Integer(), nullable=True),
# Enterprise-specific limits
sa.Column('max_child_tenants', sa.Integer(), nullable=True),
# Features and metadata
sa.Column('features', sa.JSON(), nullable=True),
sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('CURRENT_TIMESTAMP')),
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.text('CURRENT_TIMESTAMP'), onupdate=sa.text('CURRENT_TIMESTAMP')),